1.打开 android设备系统摄像头(隐形启动另一个应用)
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
2.在此应用中寻找带有摄像头的应用(打开摄像头会询问选择使用的应用)
a.在Manifest.XML文件中添加
<intent-filter>
<action android:name="android.media.action.IMGAGE_CAPTURE"/>
<category android:name="android.intent.category.DEFAULT" />
/intent-filter>
3.将拍摄的图片(获得的是缩略图,省内存)保存至先前的界面上,需要使用到startActivityForResult。
在onActivityResult()方法中获得图片数据,并保存。
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==RESULT_OK){
if(requestCode==1){ // 1是自定义的请求参数
Bundle bundle=data.getExtras();
Bitmap bitmap=(Bitmap)bundle.get("data");
iv.setImageBitmap(bitmap);
}
}
4.刚刚上面得到的是缩略图,如果想得到原图,需要保存在sd卡中。
既然需要sd卡,就应设置sd卡的权限
a.获得sd卡路径,并保存图片位置
String mfilepath;//全局变量
mfilepath=Environment.getExternalStorageDirectory().getPath();
mfilepath=mfilepath+"/"+"temp/png";
b.将拍摄的图片保存至sd卡中
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri uri=Uri.fromFile(new File(mfilepath));
intent.putExtra(MediaStore.EXTRA_OUTPUT.uri);
startActivityForResult(intent,2); //2为自定义请求码,以便下文中onActivityResult()方法中能找到此intent
c.将文件流转换为Bitmap(注:在finally中关闭文件流)
在onActivityResult()方法中:
FileInputStream fis=null;
try{
fis=new FileInputStream(mfilepath);
Bitmap bitmap=BitmapFactory.decodeStream(fis);
iv.setImageBitmap(bitmap);
}