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

调用android系统相机拍照并保存图片

2014-07-28 12:44 627 查看
android调用系统相机拍照并保存图片

调用系统相机:

//在某个事件中添加如下代码即可,不是说单击事件都不会写啊
startActivityForResult(new  Intent(MediaStore.ACTION_IMAGE_CAPTURE),1);


解释:其中参数MediaStore.ACTION_IMAGE_CAPTURE是调用系统相机用的,而后面的1则是请求的Activity的标志,用来处理返回结果的

可以理解为:给系统相机的Activity添加一个请求标志,在用onActivityResult处理返回结果时,有一个与这个标志相对应的处理方案

保存图片:

// 使用startActivityForResult返回结果时调用的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 如果返回值是正常的话
if (resultCode == Activity.RESULT_OK) {
// 验证请求码是否一至,也就是startActivityForResult的第二个参数
switch (requestCode) {
case 1:
saveCameraImage(data);
break;

default:
break;
}
}
}

/** 保存相机的图片 **/
private void saveCameraImage(Intent data) {
// 检查sd card是否存在
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
Log.i(TAG, "sd card is not avaiable/writeable right now.");
return;
}
// 为图片命名啊
String name = new DateFormat().format("yyyymmdd",
Calendar.getInstance(Locale.CHINA))
+ ".jpg";
Bitmap bmp = (Bitmap) data.getExtras().get("data");// 解析返回的图片成bitmap

// 保存文件
FileOutputStream fos = null;
File file = new File("/mnt/sdcard/test/");
file.mkdirs();// 创建文件夹
String fileName = "/mnt/sdcard/test/" + name;// 保存路径

try {// 写入SD card
fos = new FileOutputStream(fileName);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}// 显示图片
((ImageView) findViewById(R.id.show_image)).setImageBitmap(bmp);
}


最重要的是:不要忘记添加权限哦

<uses-permission android:name="android.permission.CAMERA" /><!-- 相机 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 写入sdcard -->

参考:/article/2601461.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: