不管其他的车要,先添加權(quán)限:
<uses-feature android:name="android.hardware.Camera"
android:required="true"
- 調(diào)用手機(jī)自帶的攝像機(jī)應(yīng)用來獲取相片
int REQUEST_IMAGE_CAPTURE = 1;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
- 獲取縮略圖
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(bitmap);
}
}
Android的相機(jī)應(yīng)用會把拍好的照片編碼為縮小的Bitmap,使用extra value的方式添加到返回的Intent當(dāng)中厂庇,并傳送給onActivityResult()癣猾,對應(yīng)的Key為"data"昭伸。
- 獲取全尺寸圖片
如果我們提供了一個(gè)File對象給Android的相機(jī)程序,它會保存這張全尺寸照片到給定的路徑下趟济。另外,我們必須提供存儲圖片所需要的含有后綴名形式的文件名咽笼。
首先的開啟讀寫權(quán)限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
一般而言顷编,用戶使用設(shè)備相機(jī)所拍攝的任何照片都應(yīng)該被存放在設(shè)備的公共外部存儲中,這樣它們就能被所有的應(yīng)用訪問剑刑。將DIRECTORY_PICTURES作為參數(shù)媳纬,傳遞給getExternalStoragePublicDirectory()方法,可以返回適用于存儲公共圖片的目錄施掏。
/storage/emulated/0/Pictures
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
如果希望照片對我們的應(yīng)用而言是私有的钮惠,那么可以使用getExternalFilesDir()提供的目錄。
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
/storage/emulated/0/Android/data/com.example.frc.trainingapp/files/Pictures
所有存儲在getExternalFilesDir()提供的目錄中的文件會在用戶卸載你的app后被刪除其监。
需要注意的是如果將圖片保存到文件中萌腿,那么onActivityResult返回的data就為Null了
- 將照片添加到相冊中
1、保存Bitmap到本地指定路徑下
2抖苦、通過廣播毁菱,通知系統(tǒng)相冊圖庫刷新數(shù)據(jù)
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);