//拍照
//Camera.PictureCallback() 是一种最安全的回调方法,
// 它确保会被调用,并且在压缩图像时被调用。
camera.takePicture(null, null, null, new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
//1. data 为实际的JEPG图像数据的字节数组
//2. camera 相机的引用
//保存图片
//1. 使用Uri保存图片
// ContentValues contentValues = new ContentValues();
// contentValues.put(MediaStore.Images.Media.DISPLAY_NAME,"Camera Demo Name");
// contentValues.put(MediaStore.Images.Media.DESCRIPTION,"Camera Demo Decraption");
// Uri imgFileUri = getContentResolver().insert(
// MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
// contentValues);
// try {
// OutputStream imageFileOs = getContentResolver().openOutputStream(imgFileUri);
// imageFileOs.write(data);
// imageFileOs.flush();
// imageFileOs.close();
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
//2. 直接使用路径
try {
FileOutputStream fos = new FileOutputStream(
Environment.getExternalStorageDirectory().getAbsolutePath()+"/temp.jpg");
fos.write(data);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
/*
* 当调用Camera对象的上的takePicture方法是,预览已经自动暂停,
* 并且这个方法会告诉我们,现在可以安全地重新启动
*/
camera.startPreview();
}
});