自制Camera例子——捕獲和儲存圖片
阿新 • • 發佈:2019-02-07
//拍照
//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();
}
});
//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();
}
});