2012年6月4日 星期一

Android開啟相機,讀取圖片

在Android開啟相機有幾種寫法,有使用預設相機拍攝,另外一種是自己去撰寫相機的APP

對於單純透過相機取得照片,使用預設相機拍攝就好

因為大部份預設都自動對焦、調整相機細節等等,很方便

除非你是要自己寫專屬的相機,就要自己去刻那些Code


在這裡提供使用預設相機拍攝



首先在Manifest加入使用相機的權限
<!-- Camera -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />


接在著程式寫入
//設定檔名
File tmpFile = new File( Environment.getExternalStorageDirectory(), "image.jpg");
Uri outputFileUri = Uri.fromFile(tmpFile);
 
Intent intent =  new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);    //利用intent去開啟android本身的照相介面 
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
startActivityForResult(intent, 0);

其中裡面的

new File( 路徑, 檔名)

Environment.getExternalStorageDirectory():指SD Card 路徑

這個也是之後拍完照後會儲存至指定的路徑


當拍完後會去丟一個回應,接著再用ImageView物件去顯示,顯示方如下
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);
    if(D) Log.e(TAG, "--- onActivityResult  ---");
    if (resultCode == RESULT_OK) {
        String img_address = Environment.getExternalStorageDirectory()+"image.jpg";
        Bitmap bmp = BitmapFactory.decodeFile(img_address); //利用BitmapFactory去取得剛剛拍照的圖像
        ImageView ivTest = (ImageView)findViewById(R.id.imageView1);
        ivTest.setImageBitmap(bmp);
        
    }
}











沒有留言:

張貼留言