【Camera】录制视频(3)

本课讲解如何使用现有的相机应用程序来捕捉视频。

您的应用程序需要完成一项工作,并且整合视频只是其中的一小部分。您希望以最小的惊吓拍摄视频,而不是重新发明摄像机。令人高兴的是,大多数基于Android的设备都有一个可以记录视频的摄像头应用程序。在本课中,你会为你做这件事。

请参阅以下相关资源:

请求相机功能


要宣传您的应用程序依赖于使用相机,请<uses-feature>在清单文件中添加一个 标签:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

如果您的应用程序使用,但不需要相机才能正常工作,请设置android:required为false。这样做,Google Play将允许没有摄像头的设备下载您的应用程序。这是你的责任,通过调用在运行时检查相机的可用性hasSystemFeature(PackageManager.FEATURE_CAMERA)。如果相机不可用,则应该禁用相机功能。

用相机应用程序录制视频


将操作委托给其他应用程序的Android方法是调用Intent描述你想要完成的操作。该过程涉及三部分: Intent自身,启动外部的调用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);
    }
}

请注意,该startActivityForResult()方法受调用条件保护,该条件 resolveActivity()返回可处理意图的第一个活动组件。执行此检查非常重要,因为如果您startActivityForResult()使用无应用程序可以处理的意图进行调用,则您的应用程序将崩溃。所以只要结果不为空,就可以安全使用意图。

观看视频


Android Camera应用程序会将视频以Intent交付方式返回onActivityResult(),以Uri指向存储中的视频位置。以下代码检索此视频并将其显示在一个VideoView。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        mVideoView.setVideoURI(videoUri);
    }
}
Lastest Update:2018.04.17

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Camera】录制视频(3)

猜你喜欢

转载自blog.51cto.com/4789781/2125840