一、Vedio
1、首先要聲明權限
<manifest ... >
<uses-featureandroid:name="android.hardware.camera"
android:required="true"/>
...
</manifest>
2、調用Vedio
staticfinalint REQUEST_VIDEO_CAPTURE =1;
privatevoid dispatchTakeVideoIntent(){
Intent takeVideoIntent =newIntent(MediaStore.ACTION_VIDEO_CAPTURE);
if(takeVideoIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
}
}
3、在onActivityResult中獲取到錄像地址
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK){
Uri videoUri = intent.getData();
mVideoView.setVideoURI(videoUri);
}
}
二、Photo
1、首先聲明權限
<manifest ... >
<uses-featureandroid:name="android.hardware.camera"
android:required="true"/>
...
</manifest>
2、拍攝照片
staticfinalint REQUEST_IMAGE_CAPTURE =1;
privatevoid dispatchTakePictureIntent(){
Intent takePictureIntent =newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
3、獲取縮略圖(通過返回的Data字段)
@Override
protectedvoid 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);
}
}
三、如何制定文件位置
1、如要包文件存儲在公共目錄可以通過:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
如要把文件存儲在私有目錄可以通過
getExternalFilesDir()
2、在startActivity是添加參數
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
四、添加文件到系統數據庫Gallery
Intent mediaScanIntent =newIntent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f =newFile(mCurrentPhotoPath);
Uri contentUri =Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);