调取系统相机
2016-03-27 20:52
330 查看
跳转到系统相机代码块:
if (Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED)) {
String fileName = "temp.jpg" ;
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media. TITLE,fileName) ;
Uri mCameraImageUri = getActivity().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE) ;// use this, so that photo
intent.putExtra(MediaStore. EXTRA_OUTPUT,mCameraImageUri );
startActivityForResult(intent , TAKE_PHOTO) ;
}else {
Toast.makeText(getActivity() , "系统检测不到内存卡,拍照功能受限 ", Toast.LENGTH_LONG).show() ;
}
在相对应的activity或Fragment的生命周期方法onActivityResult( )里回调,代码块如下:
@Override
public void onActivityResult( int requestCode, int resultCode , Intent data) {
super .onActivityResult(requestCode , resultCode, data) ;
if (requestCode == TAKE_PHOTO ) {
String[] projection = { MediaStore.Images.Media. DATA} ;
if (getActivity()== null )
return;
if (TextUtils. isEmpty( mCameraImageUri .toString()))
return;
//Cursor cursor = getActivity().managedQuery( mCameraImageUri , projection , null, null, null) ;// 过时
Cursor cursor=getActivity().getContentResolver().query( mCameraImageUri , projection , null, null, null) ;
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media. DATA) ;
cursor.moveToFirst() ;
String capturedImageFilePath = cursor.getString(column_index_data);
cursor.close() ;
Log.i("ysc","图片路径:"+capturedImageFilePath );
}
}
解析:
1.ContentValues是类似于HashTable这样的存储结构,但ContentValues只能存储基本数据结构(String,int),而不能存储对象。
2.managedQuery( )在API 11时已经过时了,获取Cursor的方法用getActivity ().getContentResolver().query( )方法取代。
if (Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED)) {
String fileName = "temp.jpg" ;
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media. TITLE,fileName) ;
Uri mCameraImageUri = getActivity().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE) ;// use this, so that photo
intent.putExtra(MediaStore. EXTRA_OUTPUT,mCameraImageUri );
startActivityForResult(intent , TAKE_PHOTO) ;
}else {
Toast.makeText(getActivity() , "系统检测不到内存卡,拍照功能受限 ", Toast.LENGTH_LONG).show() ;
}
在相对应的activity或Fragment的生命周期方法onActivityResult( )里回调,代码块如下:
@Override
public void onActivityResult( int requestCode, int resultCode , Intent data) {
super .onActivityResult(requestCode , resultCode, data) ;
if (requestCode == TAKE_PHOTO ) {
String[] projection = { MediaStore.Images.Media. DATA} ;
if (getActivity()== null )
return;
if (TextUtils. isEmpty( mCameraImageUri .toString()))
return;
//Cursor cursor = getActivity().managedQuery( mCameraImageUri , projection , null, null, null) ;// 过时
Cursor cursor=getActivity().getContentResolver().query( mCameraImageUri , projection , null, null, null) ;
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media. DATA) ;
cursor.moveToFirst() ;
String capturedImageFilePath = cursor.getString(column_index_data);
cursor.close() ;
Log.i("ysc","图片路径:"+capturedImageFilePath );
}
}
解析:
1.ContentValues是类似于HashTable这样的存储结构,但ContentValues只能存储基本数据结构(String,int),而不能存储对象。
2.managedQuery( )在API 11时已经过时了,获取Cursor的方法用getActivity ().getContentResolver().query( )方法取代。
相关文章推荐
- android学习开始之旅
- 基础算法-直接选择排序
- 蓝桥杯 算法训练 K好数(数位dp)
- Object-C基础(7)——类与对象
- Scala Match
- 上的车辐射对称说的说的
- 隐藏NavigationBar 带来的坑
- 选择LoadRunner Protocol的两大定律
- java 语法
- XML使用总结(二)
- 过滤器
- 第四周学习进度
- LeetCode207. Course Schedule
- Switch Fall Through
- SQL SERVER 中 GO 的用法
- 最近读的书 与论文
- HDU1429 胜利大逃亡(续)(BFS)
- 树
- Android单元测试的配置
- ArrayList和LinkedList区别