1. 程式人生 > >自制Camera例子——捕獲和儲存圖片

自制Camera例子——捕獲和儲存圖片

        //拍照
        //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();
            }
        });