android拍照顯示縮略圖

請求使用相機權限

如果拍照是應用的必要功能,那麼應該令它在Google Play中僅對有相機的設備可見。爲了讓用戶知道我們的應用需要依賴相機,在Manifest清單文件中添加<uses-feature>標籤:

 <manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>
static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}
注意在調用startActivityForResult()方法之前,先調用resolveActivity(),這個方法會返回能處理該Intent的第一個Activity(譯註:即檢查有沒有能處理這個Intent的Activity)。執行這個檢查非常重要,因爲如果在調用startActivityForResult()時,沒有應用能處理你的Intent,應用將會崩潰。所以只要返回結果不爲null,使用該Intent就是安全的。






獲取縮略圖

拍攝照片並不是應用的最終目的,我們還想要從相機應用那裏取回拍攝的照片,並對它執行某些操作。

Android的相機應用會把拍好的照片編碼爲縮小的Bitmap,使用extra value的方式添加到返回的Intent當中,並傳送給onActivityResult(),對應的Key爲"data"。下面的代碼展示的是如何獲取這一圖片並顯示在ImageView上。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

Note: 這張從"data"中取出的縮略圖適用於作爲圖標,但其他作用會比較有限。而處理一張全尺寸圖片需要做更多的工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章