同时使用相同的 activity 两次

Use same activity twice at the same time

我正在使用 Appcelerator Studio,我的项目有 2 个不同的模块,但它们共享相同的 android 权限(在 tiapp.xml 定义),一个用于将相机嵌入 UIView 中,另一个在手电筒模式下开启手电筒,都需要使用相机权限。

我认为在不更改模块本身的情况下没有解决方案,对吗?

这是我得到的日志:

[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.

依赖于此的问题:

相机是一个具有许多特征的复杂对象 -- 但每个相机都被 API 视为一个整体(即大多数设备恰好有两个相机对象。)

听起来您正在尝试使用程序一部分的一项功能(flash/torch LED),以及另一部分的另一项功能(拍照或至少预览)你的程序。

相机不是这样工作的。

当您成功调用 Camera camera = Camera.open(); 方法时,您将拥有整个相机,直到您调用 camera.release(); 任何其他对 Camera.open(); 的调用都将失败,直到您释放相机。

因此您需要找到一种方法来在您的模块之间共享单个打开的 Camera 对象。

一个简单的方法是使用单例模式。 [还有其他选项,但它们往往更复杂。]

无论你做什么,你都需要确保如果你的应用程序不是 "on top" 你已经释放相机供其他应用程序使用。