調用android系統相機拍照並保存圖片


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 -->

 

參考:http://blog.csdn.net/bill_ming/article/details/7730305


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM