好的,我的应用程序是一个手电筒/火炬应用程序,在这里找到: https://github.com/Skelware/Fancy-Flashlight它使用了一个Cordova插件:https://github.com/Skelware/Cordova-Flashlight
目前我只关心Android。简要解释这样的应用程序在Android上运行的方式:应用程序必须请求访问摄像头,这是在后台完成的,在摄像头加载之前需要一段时间,因此加载(和卸载)应该发生的很少尽可能。虽然应用可以访问相机,但其他任何应用都无法请求访问权限。
当我的应用程序启动时,它会加载相机并完成它需要做的事情。但是当用户切换到其他应用程序或关闭我的应用程序时,相机仍然会注册到我的应用程序,导致所有其他应用程序无法使用相机。
虽然我更喜欢在JavaScript方面处理这个问题,但在插件中本地处理它也是可以的。
当退出(完全退出,即)应用程序时,Window的卸载事件似乎被触发,但它没有足够的时间来释放相机。
Cordova版本为4.0,Android版本为4.4,但我怀疑这很重要。
我该怎么办?
答案 0 :(得分:2)
您的案例的问题是应用程序在达到后台模式时进入睡眠状态(用户按下主页按钮等)。通过调用
Cordova background plugin可以防止这种情况cordova.plugins.backgroundMode.enable();
您可以在获得相机时调用此功能,当您松开相机时,可以调用相应的
cordova.plugins.backgroundMode.disable();
通过这种方式,您可以在不需要时防止睡眠,从而保护您的电池安全。
然后,您只需要绑定暂停事件
document.addEventListener("pause", function() {
// Here call your release function and in the release function, you can call the disable for background mode
}, false);