火炬:如何在另一个线程中注册火炬回调?

Torch: How to register a torch callback in another thread?

我正在尝试将 CameraManager.TorchCallback using CameraManager.registerTorchCallback 注册到特定线程(即:与 UI 线程不同)。

我的代码对于 Camera2 实现来说非常基础:

  1. 得到CameraManager
  2. 获取摄像头idfrom the manager
  3. 注册我的CameraManager.TorchCallback using CameraManager.registerTorchCallback
  4. 更新手电筒状态using the CameraManager

如果我 运行 在主线程中编写该代码,一切正常,当我 运行 将其放入另一个线程 class(覆盖 run)时,永远不会调用回调。我确保我的线程没有终止,在 Android 工作室分析器上可见。注册和线程有些东西我不明白。

你试过那种实现方式吗?

欢迎任何想法!

即使您从后台线程调用 registerTorchCallback(),回调仍将发布到 UI 线程。您必须 create a new HandlerThread 并为其获取处理程序。