请求使用相机权限

如果拍照是应用的必要功能,那么应该令它在Google Play中仅对有相机的设备可见。为了让用户知道我们的应用需要依赖相机,在Manifest清单文件中添加标签:

 <manifest ... >    <uses-feature android:name="android.hardware.camera"                  android:required="true" />    ...manifest>
static final int REQUEST_IMAGE_CAPTURE = 1;private void dispatchTakePictureIntent() {    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);    }}
注意在调用startActivityForResult()方法之前,先调用resolveActivity(),这个方法会返回能处理该Intent的第一个Activity(译注:即检查有没有能处理这个Intent的Activity)。执行这个检查非常重要,因为如果在调用startActivityForResult()时,没有应用能处理你的Intent,应用将会崩溃。所以只要返回结果不为null,使用该Intent就是安全的。

获取缩略图

拍摄照片并不是应用的最终目的,我们还想要从相机应用那里取回拍摄的照片,并对它执行某些操作。

Android的相机应用会把拍好的照片编码为缩小的Bitmap,使用extra value的方式添加到返回的Intent当中,并传送给onActivityResult(),对应的Key为"data"。下面的代码展示的是如何获取这一图片并显示在ImageView上。

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {        Bundle extras = data.getExtras();        Bitmap imageBitmap = (Bitmap) extras.get("data");        mImageView.setImageBitmap(imageBitmap);    }}

Note: 这张从"data"中取出的缩略图适用于作为图标,但其他作用会比较有限。而处理一张全尺寸图片需要做更多的工作。

更多相关文章

  1. Android(安卓)Service在bindService不能触发onServiceConnected
  2. Android原生调用mui里面的js如何实现
  3. 学习:Android生命周期
  4. Dalvik——基本Dalvik VM调用
  5. Android中Touch事件分发过程全解析
  6. android照相机竖屏显示的图像出现旋转的问题,但成像被拉伸了
  7. android 系统重启关机 方法 非常好的一篇文章
  8. Android(安卓)Framework下StageFright框架流程解读
  9. Android(安卓)沉浸式状态栏 SystemStatusManager源码

随机推荐

  1. [Android軟體] SanDisk Memory Zone 智慧
  2. Android自义定捕获异常
  3. android 记事本demo!!!(listview与SQLite综合
  4. android高仿微信视频编辑页
  5. android 震动效果类
  6. Android(安卓)MediaCodec API实现的音视
  7. Android字符串及字符串资源的格式化
  8. android和javaEE更完美的通信-传递对象
  9. 开发者大杀器 —— Battery Historian,刨
  10. 2019年Android开发者常见面试题(一)