源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android 简单的照相机程序的实例代码

  • 时间:2021-10-20 19:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android 简单的照相机程序的实例代码
[u]复制代码[/u] 代码如下:
class surface extends SurfaceView implements SurfaceHolder.Callback {          SurfaceHolder sfholder;          Camera camera;          Bitmap bitmap;          public surface(Context context) {              super(context);              // TODO Auto-generated constructor stub              sfholder = getHolder();              sfholder.addCallback(this);              sfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);          }          public void surfaceChanged(SurfaceHolder holder, int format, int width,                  int height) {              // TODO Auto-generated method stub               Camera.Parameters parameters = camera.getParameters();              parameters.setPictureFormat(PixelFormat.JPEG);              parameters.setPreviewSize(320, 480);              parameters.setPictureSize(320, 480);              camera.setParameters(parameters);               camera.startPreview();          }          public void surfaceCreated(SurfaceHolder holder) {              // TODO Auto-generated method stub              try {                  camera = Camera.open();                  camera.setPreviewDisplay(sfholder);              } catch (Exception e) {                  camera.release();                  camera = null;              }          }          public void surfaceDestroyed(SurfaceHolder holder) {              // TODO Auto-generated method stub               camera.stopPreview();              camera = null;          }          //拍照          public void takePicture()          {              if (camera != null)              {                  camera.takePicture(null, null, jpegCallback);              }          }          //拍照并且保存的回调函数          private PictureCallback jpegCallback = new PictureCallback() {              public void onPictureTaken(byte[] data, Camera camera) {                  // TODO Auto-generated method stub                  try                  {                  bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);                  File file = new File("/sdcard/camera1.jpg");                  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));                  bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);                  bos.flush();                  bos.close();                  Canvas  canvas= sfholder.lockCanvas();                  canvas.drawBitmap(bitmap, 0,0, null);                  sfholder.unlockCanvasAndPost(canvas);                  }                  catch(Exception e)                  {                      e.printStackTrace();                  }              }          }      }
这个是一个拍照的类,使用的是SurfaceView来实现的,如果想要在一部分上显示,并且使用按钮操作的话,可以修改一下这个类,而且这个是拍照之后停留在拍照页面的,如果需要在拍照后不停留在拍照页面的,可以自行修改和添加参数。 此程序也演示了,如何在拍完照之后,将照片保存到SD卡上。 实际使用时的操作如何,使用的是按键进行拍照的,其实也可以改为使用按钮进行拍照的,只要对这个类进行简单的修改即可。调用如下:
[u]复制代码[/u] 代码如下:
@Override     public boolean onKeyDown(int keyCode, KeyEvent event) {         // TODO Auto-generated method stub         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)             sf.takePicture();         return super.onKeyDown(keyCode, event);     }
要使用相机和操作SD卡,则需要添加以下权限:
[u]复制代码[/u] 代码如下:
android:name="Android.permission.WRITE_EXTERNAL_STORAGE">
第一条是可以使用扩展存储设备的权限 第二条是可以使用照相机设备 如果没有这两条权限的话,会报错,具体错误可以在DDMS中查看 。欢迎交流! 希望对大家有所帮助 ! 此平台使用提Android2.2 V8的系统,如果使用1.5或者是其它的,权限可能会不一样! 当然更好的方法是首先检查SD卡是否存在,此程序中没有进行检测,因为我只是在练习相机的使用。 检测代码如下:
[u]复制代码[/u] 代码如下:
if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {          File    sdcardPath = Environment.getExternalStorageDirectory();             setTitle(sdcardPath.getName()); //将SD卡路径名字设置为标题,只是为了让大家看的更明白些         } else {             Toast.makeText(RecordTest.this, "没有SD卡", 1000).show();         }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部