android拍照显示缩略图
16lz
2021-01-26
请求使用相机权限
如果拍照是应用的必要功能,那么应该令它在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"
中取出的缩略图适用于作为图标,但其他作用会比较有限。而处理一张全尺寸图片需要做更多的工作。
更多相关文章
- Android(安卓)Service在bindService不能触发onServiceConnected
- Android原生调用mui里面的js如何实现
- 学习:Android生命周期
- Dalvik——基本Dalvik VM调用
- Android中Touch事件分发过程全解析
- android照相机竖屏显示的图像出现旋转的问题,但成像被拉伸了
- android 系统重启关机 方法 非常好的一篇文章
- Android(安卓)Framework下StageFright框架流程解读
- Android(安卓)沉浸式状态栏 SystemStatusManager源码