首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无需重启即可释放Android摄像头?

无需重启即可释放Android摄像头?
EN

Stack Overflow用户
提问于 2011-11-15 14:20:50
回答 5查看 15.9K关注 0票数 18

我目前正在尝试让摄像头在我的应用程序中工作,我遇到了整个camera.release()的问题;我正在做非常复杂的事情,没有明确的方法来简单地调用camera.release(),所以我必须不断尝试新的方法,但每次我出错时,我的应用程序都会崩溃(正如预期的那样),导致摄像头没有发布。因此,为了能够再次测试我的应用程序,我需要重启手机以刷新摄像头。

有没有办法通过终端或DDMS释放摄像头,或者只有重启手机才能释放摄像头?它变得相当陈旧,特别是当一个小错误导致浪费时间等待我的手机重启。

谢谢!

EN

回答 5

Stack Overflow用户

发布于 2013-11-11 22:18:00

摄像头资源管理由安卓摄像头服务(libcameraservice.so)完成。运行Camera Service的进程是mediaserver。如果您重新启动媒体服务器,您将有效地释放所有相机锁定。

您必须具有adb root访问权限才能执行此操作。

运行adb shell; su获取根目录命令提示符。

代码语言:javascript
复制
root@m0:/ # ps|grep media
media     1901  1     129268 6168  ffffffff 4026d470 S /system/bin/mediaserver
media_rw  1909  1     3064   1380  ffffffff 4015f1ac S /system/bin/sdcard
u0_a19    22821 1899  484316 21588 ffffffff 4016d574 S android.process.media
root@m0:/ # kill 1901
kill 1901

媒体服务器现在应该会自动启动。

Android 7.0

最新版本的安卓系统将mediaserver二进制文件拆分为多个专用的二进制文件,以提高安全性。在official documentation中阅读更多内容。

因此,您应该查找cameraserver,而不是mediaserver。虽然没有经过测试。

票数 18
EN

Stack Overflow用户

发布于 2013-06-24 23:40:24

我不确定是否有办法通过终端或DDMS重置摄像头,但我已经通过在Activity的onPause()方法中调用Camera.release()获得了很大成功,所以每当应用程序进入后台时,摄像头都会被释放。类似地,我的相机初始化都是在onResume()中进行的,所以相机会在第一次运行时打开,然后在你的应用程序来回移动到后台时再次释放并重新初始化。这项技术完全消除了您为我描述的问题。

如果问题仍然存在,还可以考虑在try/catch中包装可能崩溃的代码,在该代码中捕获任何Exception并调用该catch块中的camera释放。我通常使用这种技术来处理错误,这些错误可以在不关闭应用程序的情况下修复,但我相信它在所有情况下都会起作用。

票数 4
EN

Stack Overflow用户

发布于 2012-07-10 10:55:54

我找到了一个解决这个问题的方法。设置->应用程序->管理应用程序->摄像头->清除数据,问题就解决了

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8132273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档