我使用Appcelerator Studio,我的项目有2个不同的模块,但是那些共享相同的android权限(在tiapp.xml中定义),一个用于将相机嵌入到UIView中,另一个用于启用Torch中的手电筒模式,都需要使用相机权限。
我不认为有一个解决方案可以不改变模块本身,对吗?
这是我得到的日志:
[DEBUG] : CameraViewProxy: Camera not available
[ERROR] : CameraViewProxy: Camera is null. Make sure
[ERROR] : CameraViewProxy: <uses-permission android:name="android.permission.CAMERA" />
[ERROR] : CameraViewProxy: is in you tiapp.xml file.
依赖于此的问题:
答案 0 :(得分:2)
相机是一个具有许多功能的复杂对象 - 但每个相机都被API视为一个整体(即大多数设备只有两个相机对象。)
听起来您正试图从程序的某个部分使用其中一个功能(闪光灯/手电筒LED),以及从程序的其他部分使用其他功能(拍照或至少预览)。
相机无法正常工作。
当您成功拨打Camera camera = Camera.open();
方法时,您拥有整个摄像头,直到您拨打camera.release();
对Camera.open();
的任何其他呼叫都将失败,直至您释放摄像头。
因此,您需要找到一种方法来共享模块之间单个打开的Camera对象。
一种简单的方法是使用Singleton模式。 [还有其他选择,但它们往往更复杂。]
无论您做什么,您都需要确保如果您的应用程序不在“顶部”,则您已将相机释放给其他应用程序使用。