<Excerpt in index | 首页摘要>
Android调用系统相机照相
<The rest of contents | 余下全文>
项目APP创建一个“阶段”的时候有添加图片的需求,自然是让用户可以自由选择照相还是选取已经存在于相册的图片了
调用系统相册问题不大。就不细说了
主要说一下调用照相机。
首先你需要配置权限
1
| <uses-permission android:name="android.permission.CAMERA"/>
|
然后通过隐式意图启动相机
1 2 3 4
| Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*");
startActivityForResult(intent, 321);
|
重点来了,Android原生的设定是返回一个内容提供者Uri,然后由我们自己解析获取到图片。
但是国内Android都是深度定制过的。
个别机型修改了这个设置,目前发现的:小米、魅族
他们是在返回的数据中直接携带了图片的真实全路径那么我们就需要做一个简单的适配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| if (data.getData() != null) { String file = data.getData().toString(); imageBgPath = file; } else { Bitmap bm = null; ContentResolver resolver = getContentResolver();
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(data.getData(), proj, null, null, null);
int column_index; try { column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
} catch (Exception e) { column_index = 0; }
cursor.moveToFirst();
imageBgPath = cursor.getString(column_index); } L.i(TAG, "path: " + imageBgPath);
|