最近在開發(fā)相機相關(guān)功能,順便把學(xué)習(xí)到的知識總結(jié)一下,主要包括:
1、利用intent方式調(diào)用系統(tǒng)相機拍照;
2、利用Camera API在Android5.0版本以下開發(fā)相機;
3、利用Camera2 API在Android5.0以上版本開發(fā)相機;
4、Google CameraView開源庫使用;
先總結(jié)一下利用intent方式調(diào)用系統(tǒng)相機拍照,可參考源碼:https://github.com/kexiaoderenren/CameraApplication/blob/master/app/src/main/java/com/wine9/cameraapplication/IntentCaptureActivity.java
調(diào)用系統(tǒng)相機拍照方式比較簡單,代碼如下兩行即可,然后在onActivityResult()中接收返回數(shù)據(jù):
Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, requestCode);
其中使用MediaStore.ACTION_IMAGE_CAPTURE為?拍照;使用MediaStore.ACTION_VIDEO_CAPTURE為錄像。intent也可以附帶部分參數(shù):
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1):為指定相機拍照圖像的質(zhì)量,數(shù)值為0~1,數(shù)值越低則圖像質(zhì)量越差;
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT):指定最大圖片尺寸;
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT):指定最大允許的記錄持續(xù)時間
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri pathUri);為指定相機拍照后圖片保存目錄,如果沒有指定目錄,照片存在系統(tǒng)默認(rèn)的圖片存儲路徑下。
注意:如果指定MediaStore.EXTRA_OUTPUT,則在拍照后onActivityResult(int requestCode,int ?resultcode,Intent data)中的返回的data為null,無法獲取到圖片,只能通過該圖像路徑下獲取。
調(diào)用相機方式比較簡單,希望能與各位多多交流。運行代碼至github下載運行:https://github.com/kexiaoderenren/CameraApplication