1、使用摄像机所需要的权限
<manifest ... > <uses-feature android:name="android.hardware.camera" android:required="true" /> ... </manifest>
如果程序只是需要使用相机,而不是必须使用相机,则把required设置成false,那么gooleplay允许没有相机的设备下载该程序。然后你需要通过调用hasSystemFeature(PackageManager.FEATURE_CAMERA)来检查相机是否可用,如果相机不可用,你应该禁掉你的功能。
2、使用相机拍摄视频
Android将操作委托给其他应用程序通过intent并且描述你想要干什么,这过程包括三部分:intent本身,调用外部activity,还有当返回你的activity的时候的处理代码。
static final int REQUEST_VIDEO_CAPTURE = 1; private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); } }
注意该方法中的resolveActivity,这是确保startActivityForResult的安全性。这个检查是十分重要的,因为如果没有程序可以响应该intent,那么程序将会崩溃。
3、在onActivityResult中获取video并设置给view
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) { Uri videoUri = intent.getData(); mVideoView.setVideoURI(videoUri); } }