本文共 1450 字,大约阅读时间需要 4 分钟。
本课讲解如何使用现有的相机应用程序来捕捉视频。
您的应用程序需要完成一项工作,并且整合视频只是其中的一小部分。您希望以最小的惊吓拍摄视频,而不是重新发明摄像机。令人高兴的是,大多数基于Android的设备都有一个可以记录视频的摄像头应用程序。在本课中,你会为你做这件事。
请参阅以下相关资源:
要宣传您的应用程序依赖于使用相机,请<uses-feature>在清单文件中添加一个 标签:
...
如果您的应用程序使用,但不需要相机才能正常工作,请设置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。
@Overrideprotected 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://blog.51cto.com/4789781/2125840