【问题标题】:Turn on/off camera LED using NDK code Android使用 NDK 代码 Android 打开/关闭相机 LED
【发布时间】:2015-05-17 18:01:33
【问题描述】:

我想问是否有办法使用 NDK 代码打开/关闭相机的 LED。我已经使用 Java 代码完成了它,但我需要更快地完成它,所以我认为 NDK 代码是我正在寻找的。还有其他方法吗?

我正在尝试在 Galaxy Nexus 上执行此操作,但我找不到 LED 控制文件以设置其亮度。有什么帮助吗?

谢谢!

【问题讨论】:

  • 你能选择一个答案吗?

标签: android android-ndk led galaxy-nexus


【解决方案1】:

坚持您的 Java 实现。(Google 未提供 NDK API。)

问同样问题的其他 Google Group Discussions:

https://groups.google.com/forum/#!topic/android-ndk/EK3gPnu30Nw

https://groups.google.com/forum/#!msg/android-ndk/AyEMaRshntM/qlmnXptzfDMJ

请阅读关于 Android 的“性能提示”。 Google 明确表示不要将 NDK 用于“移植”而不是“加速”:

原生代码主要在您拥有想要移植到 Android 的现有原生代码库时有用,而不是用于“加速”使用 Java 语言编写的 Android 应用程序的部分。

在此处阅读有关 NDK 性能提示的完整部分:

谨慎使用本机方法

使用 Android NDK 使用本机代码开发应用不一定比使用 Java 语言编程更高效。一方面,Java-native 转换会带来成本,而 JIT 无法跨越这些边界进行优化。如果您正在分配本机资源(本机堆上的内存、文件描述符或其他任何东西),那么安排这些资源的及时收集可能会更加困难。您还需要为您希望在其上运行的每个架构编译代码(而不是依赖于它具有 JIT)。您甚至可能需要为您认为相同的架构编译多个版本:为 G1 中的 ARM 处理器编译的本机代码无法充分利用 Nexus One 中的 ARM,以及为 Nexus One 中的 ARM 编译的代码不会在 G1 的 ARM 上运行。

原生代码主要在您拥有想要移植到 Android 的现有原生代码库时有用,而不是用于“加速”使用 Java 语言编写的 Android 应用程序的部分。

如果您确实需要使用本机代码,您应该阅读我们的 JNI 提示。

提示:另请参阅 Josh Bloch 的 Effective Java,第 54 条。

来源:http://developer.android.com/training/articles/perf-tips.html#NativeMethods

【讨论】:

  • 我明白你的意思,但我想以 500Hz 的频率打开/关闭 LED,这在 Java 实现中是不可能的,因为操作系统不是实时的。跨度>
  • @MikeVasi 我明白了,不要误会,我会通过 NDK 访问更多 API。老实说,像 Nexus 6 这样的新设备不再真正使用 LED。这是对在应用程序外部访问 LED 的人最接近的答案:groups.google.com/forum/#!msg/android-ndk/AyEMaRshntM/… 但您需要 Root。
  • 根据您发布的最后一个链接,必须有一个我找不到的 /sys/class/leds 文件夹。我正在使用 Cyanogenmod 11。
  • 是的,看看那些日期。他们正试图找到一种“hackish”的方式来做到这一点。没有 NDK 方法可以做到这一点。没有用于此的 API。
  • 好的。那么有没有办法呢?像访问内核或相机驱动程序之类的?我不知道我坚持的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多