【Android】Intent 调用系统录像功能
调用系统录像功能
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
这个很常用的。
操作方法
- 01
要用到的权限 <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> 存储权限——如果应用程序要把图像或视频保存到设备的外部存储上(SD卡), <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 录音权限——要用音频捕获来录音,应用程序必须请求音频捕获权限。 <uses-permission android:name="android.permission.RECORD_AUDIO" />
- 02
构建一个摄像头 Intent MediaStore.ACTION_VIDEO_CAPTURE 向内置摄像头程序请求视频的意图活动类型。 启动摄像头 Intent 用startActivityForResult()方法执行摄像头 intent。启动完毕后摄像头应用的用户界面就会显示在屏幕上,用户就可以拍照或摄像了。 接收Intent结果 在应用程序中设置onActivityResult()方法,用于接收从摄像头 intent返回的数据。当用户拍摄完毕后(或者取消操作),系统会调用此方法。
- 03
实现代码 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建拍照Intent并将控制权返回给调用的程序 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // 创建保存图片的文件 intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // 设置图片文件名 // 启动图像捕获Intent startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); }
- 04
startActivityForResult() 方法执行完毕后,用户将看到一个改动过的摄像程序界面。用户摄像完毕(或取消操作)后,用户界面返回应用程序,这时必须监听onActivityResult()方法来接收intent的返回结果并执行后续操作。 接收摄像头 intent的结果
- 05
检测摄像头硬件 /** 检查设备是否提供摄像头 */ private boolean checkCameraHardware(Context context) { if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ // 摄像头存在 return true; } else { // 摄像头不存在 return false; } }
- 06
访问摄像头 /** 安全获取Camera对象实例的方法*/ public static Camera getCameraInstance(){ Camera c = null; try { c = Camera.open(); // 试图获取Camera实例 } catch (Exception e){ // 摄像头不可用(正被占用或不存在) } return c; // 不可用则返回null }