您的位置:首页 > 其它

调取系统相机

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( )方法取代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: