其實想在android裡面實現照相的功能,大致上分成兩種,
第一種是自己去implement一個camera介面出來(不難但複雜,較具有彈性)
第二種是直接利用android內部的預設介面(簡單,就只有單單的拍照功能)
第一種通常會用到的時機,可能是你要作一個類似信義房屋先前作的app,
你可以需要開啟相機,並拿著手機看看周圍,並在你的view上顯示出來這個方向有沒有房子
這種方式要實作,並不困難,只是比較複雜。改天在po code上來教學。
今天是要教學第二種!!
第二種就非常簡單了!
但相對的就沒有什麼彈性,就只有單單的開起android的照相界面,
然後取得照片罷了!
步驟
1.先利用intent去開啟照相的介面
2.在本身的activity去等待回傳的 result
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);//利用intent去開啟android本身的照相介面
//設定圖片的儲存位置,以及檔名
File tmpFile = new File(
Environment.getExternalStorageDirectory(),
"image.jpg");
Uri outputFileUri = Uri.fromFile(tmpFile);
/*
* 把上述的設定put進去!然後startActivityForResult,
* 記住,因為是有ForResult,所以在本身自己的acitivy裡面等等要複寫onActivityResult
* 稍後再說明onActivityResult
*/
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, 0);
接著就來說明onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bitmap bmp = BitmapFactory.decodeFile(outputFileUri.getPath()); //利用BitmapFactory去取得剛剛拍照的圖像
ImageView ivTest = (ImageView)findViewById(R.id.ivTest);
ivTest.setImageBitmap(bmp);
}
}
最後還得在AndroidManifest.xml上加上下面幾個permission,
<!-- 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" />
這樣就完成一個簡單的照相功能!!