发布Android相机而不重启?

rob*_*y12 17 camera android adb ddms android-camera

我正在尝试让相机在我的应用程序中运行,而我对整个camera.release()事情都有疑问; 我正在做非常复杂的事情并且没有明确的方式来简单地调用camera.release()所以我必须继续尝试新方法,但每次我弄错了我的应用程序崩溃(如预期的那样),让相机不被释放.因此,为了能够再次测试我的应用程序,我需要重新启动手机才能刷新相机.

有没有办法通过终端或DDMS释放相机,还是通过重新启动手机释放相机的唯一方法?它已经变得很老了,特别是当一个小错误导致浪费时间等待我的手机重新启动时.

谢谢!

Van*_*uan 16

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

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

运行adb shell; su以获取root命令提示符.

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
Run Code Online (Sandbox Code Playgroud)

应立即自动启动媒体服务器.

Android 7.0

最新版本的Android将mediaserver二进制文件拆分为多个专用二进制文件以帮助实现安全性.阅读官方文档中的更多内容.

所以,而不是mediaserver你应该寻找的cameraserver.虽然没有测试过.

  • 很棒的答案!我有一个三星Galaxy S3,自从切换到Cyanogenmod后,相机有时会给出"无法连接相机错误".您的解决方案允许我让相机再次工作而无需重新启动整个手机.我决定自动创建一个应用程序:https://play.google.com/store/apps/details?id = com.exlyo.camerarestarter我希望能帮助其他人:-) (3认同)
  • “相机重启”应用的完整源代码可在此处获取:https://github.com/androidseb/camerarestarter (2认同)

Eli*_*vis 2

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