首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

调用系统的照相功能

2012-07-25 
调用系统的拍照功能?????图14.12? 拍照程序可设置的?照片分辨率(HTC Hero)?照片分辨率(HTC Hero)根据官方

调用系统的拍照功能

?????图14.12? 拍照程序可设置的

?

照片分辨率(HTC Hero)?照片分辨率(HTC Hero)

根据官方文档的解释,在调用拍照Activity时通过MediaStore.EXTRA_OUTPUT指定照片保存的路径,可以允许拍摄分辨率更大的照片。原文如下:

The caller may pass an extra EXTRA_OUTPUT to control where this image will be written. If the EXTRA_OUTPUT is not present, then a small sized image is returned as a Bitmap object in the extra field. This is useful for applications that only need a small image. If the EXTRA_OUTPUT is present, then the full-sized image will be written to the Uri value of EXTRA_OUTPUT.

按着官方的解释,可以使用如下代码调用拍照Activity:

  1. Intent?intent?=?new?Intent(MediaStore.ACTION_IMAGE_CAPTURE); ?intent.putExtra(MediaStore.EXTRA_OUTPUT,?Uri.fromFile(new?File("/sdcard/test.jpg"))); ?
  2. startActivityForResult(intent,?1);?

但经作者测试,在调用拍照Activity时设置EXTRA_OUTPUT并不起任何作用(仅对Android SDK 1.5)。这也许是Android SDK 1.5的一个bug,或官方文档描述有误。如果读者非要拍摄更大分辨率的照片,可以实现自己的拍照Activity来完成这个功能,这部分内容将在14.3.2节介绍。

虽然使用系统的拍照Activity无法拍摄更大分辨率的照片,但可以同时生成分辨率更小的照片。通过insertImage方法可以同时在/sdcard/DCIM/.thumbnails和/sdcard/DCIM/Camera目录中分别生成分辨率为50×50和208×312的图像(其他型号的手机也有可能是其他的分辨率)。调用insertImage方法的代码如下:

  1. MediaStore.Images.Media.insertImage(getContentResolver(),?cameraBitmap,?null,?null);?

其中cameraBitmap是拍照Activity返回的Bitmap对象。

不仅可以调用系统的拍照Activity,而且可以调用系统的摄像Activity。摄像Activity对应的Action是MediaStore.ACTION_VIDEO_CAPTURE,调用方法与调用系统的拍照Activity相同。

热点排行