本文译自:http://developer.android.com/training/camera/videobasics.html
本文介绍如何使用既存的Camera应用程序来拍摄视频。
如果你的应用程序只是要集成很小一部分的视频功能,那么你可以使用大多数Android设备上已经提供的Camera应用程序来拍摄视频。
申请Camera权限
在清单文件中放一个<uses-feature>标签,给你的应用程序申请对摄像头的依赖:
<manifest ... >
<uses-feature android:name="android.hardware.camera" />
...
</manifest ... >
如果你的应用程序对摄像头的使用不是必须的,那么就给这个标签添加android:required=”false”属性。这样,Google Play就会允许没有摄像头的设备来下载你的应用程序。然后,由你的应用程序自己来负责检查其运行的设备上是否有可用的摄像头,通过调用hasSystemFeature(PackageManager.FEATURE_CAMERA)方法来完成功能检查。如果没有可用的摄像头,那么就禁用对应的摄像功能。
用Camera应用程序来拍摄视频
Android系统使用一个描述你的意图的Itent对象,把相关的操作委托给其他应用程序。这种调用分三段来完成:1.创建Intent对象;2.调用要启动的外部Activity;3.焦点返回你的Activity时处理视频的代码。
以下函数调用一个Intent来拍摄视频:
privatevoiddispatchTakeVideoIntent(){
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(takeVideoIntent,ACTION_TAKE_VIDEO);
}
最好的做法是在调用这个方法之前,确保会有一个应用程序能够处理你的Intent对象。以下是一个能够检查是否有处理你的Intent对象的应用程序的函数:
publicstaticbooleanisIntentAvailable(Context context,String action){
final PackageManagerpackageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list =
packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
浏览视频
Android的Camera应用程序会在返回给调用者onActivityResult()回调方法的Intent参数中携带一个指向视频存储位置的Uri。以下是接收视频并在VideoView中显示的视频的代码:
privatevoidhandleCameraVideo(Intent intent){
mVideoUri = intent.getData();
mVideoView.setVideoURI(mVideoUri);
}