人生的烦恼,多在于知道的太多,而做的太少。

Android 录制视频 Camera占用的解决方法

Android zhangman523@gmail.com 2868℃ 0评论

Android 录制视频 Camera占用的解决方法

最近需要修改项目中的视频录制功能,原来没怎么理会,可以正常录制。

但是不录制直接返回Camera就会出现占用情况,而且连系统相机都无法正常使用了。

只能重启手机,调试起来也比较麻烦。

最后发现 由于不当的调用

camera.lock()camera.unlock()导致的

看一看这两个方法的解释

lock()方法是一个native方法

注释的大概意思是

调用这个方法重新锁定相机以防止其他进程访问它。系统默认的状态就是locked状态,可以调用unlock()或者reconnect()来使用

还有注释说API 14 之后当你调用了MediaRecorder.start()方法lock()会自动调用。这就解释了为什么正常录制视频不会占用相机

看看另外一个方法

这个注释写的很清楚了

调用unlock()方法允许其他进程使用,同时正在使用Cameralocked状态

还有调视频录制的时候必须先调unlock()然后在调MediaRecorder.setCamera(Camera)

总结

视频录制的步骤如下:

  • 调用unlock()方法
  • 调用MediaRecorder.setCamera(Camera)方法
  • 开始录制
  • 停止录制
  • 释放MediaRecorder
  • 调用lock()方法
  • 释放Camera

这就是完整的步骤了。

这里有个Demo可以参考一下GITHUB

转载请注明:zhangman523 » Android 录制视频 Camera占用的解决方法

喜欢 (25)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址