【问题标题】:Use same activity twice at the same time同时使用相同的活动两次
【发布时间】:2016-08-31 13:38:52
【问题描述】:

我正在使用 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.

依赖于此的问题:

LED & Camera always ON

【问题讨论】:

  • 我什至无法理解问题是关于什么的。
  • 我正在使用 Appcelerator。我已经更新了问题
  • 我认为您不能在模块之间共享清单。不过,也许 Appcelerator 有所不同。
  • 每个模块都有自己的清单,但清单放在主配置文件(tiapp.xml)中。这里发生的是两个模块同时使用 android 相机硬件和表面视图

标签: android android-activity permissions appcelerator appcelerator-titanium


【解决方案1】:

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

听起来您正在尝试使用程序某个部分的功能之一(闪光灯/手电筒 LED),以及程序另一部分的不同功能(拍照或至少预览)。

相机不能那样工作。

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

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

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

无论您做什么,您都需要确保如果您的应用程序不在“顶部”,则您已释放相机以供其他应用程序使用。

【讨论】:

  • 谢谢,这就是我的想法,我已经编辑了一个 Titanium 模块并添加了我需要的功能,但是当我尝试创建一个模块包时,它会抛出这个错误:调试 UI 中的错误:java .lang.reflect.InvocationTargetException。我在这里提出了一个问题:stackoverflow.com/questions/37057251/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 2013-07-09
相关资源
最近更新 更多