首先是坑爹的权限
<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的开发文档 写的比较清楚
之后是调用系统相册获取图像点这里看下一篇———-调用系统相册