您的位置:首页 > 移动开发 > Android开发

【Android】调用系统相机拍摄并预览图像

2016-07-13 11:30 453 查看
首先是坑爹的权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name = "android.hardware.camera" />
<uses-feature android:name = "android.hardware.camera.autofocus" />


其中

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


这两个对SD卡的读取权限要写在application外面

我们设置一个Button作为调用相机按钮,一个ImageView作为显示图像

<ImageView
android:id="@+id/image_camera"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
<Button
android:id="@+id/add_picture_from_camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍照"/>


对应的活动里

add_pic_from_camera=(Button)findViewById(R.id.add_picture_from_camera);
image_camera=(ImageView)findViewById(R.id.image_camera);
add_pic_from_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //创建camera的Intent

image_camera_file=new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg"); //设置sdcard的路径及图片文件名
intent_camera.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(image_camera_file));
startActivityForResult(intent_camera,RESULT_ADD_PIC_FROM_CAMERA); //启动带返回值的activity
}
});

//图片点击预览
image_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(image_camera_file),"image/*"); //告诉系统这是个image类型 调用相应的预览
startActivity(intent);

}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==RESULT_ADD_PIC_FROM_CAMERA) {
try{
//建议使用设置bitmap而不用setImageUri
Bitmap bitmap=MediaStore.Images.Media.getBitmap(ContentActivity.this.getContentResolver(),Uri.fromFile(image_camera_file));
image_camera.setImageBitmap(bitmap);
image_camera.setVisibility(View.VISIBLE);
}
//记得要用异常捕获
catch (Exception e)
{
Log.v("ContentActivity","Expection"+Log.getStackTraceString(e));
return;
}

}

}


建议去看android的开发文档 写的比较清楚

之后是调用系统相册获取图像点这里看下一篇———-调用系统相册
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android camera