Факел: Как зарегистрировать обратный вызов факела в другой теме? - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь зарегистрировать CameraManager.TorchCallback , используя CameraManager.registerTorchCallback в определенный поток (т. Е. Отличающийся от потока пользовательского интерфейса).

Мой коддовольно прост для реализации Camera2 :

  1. Получить CameraManager
  2. Получить идентификатор камеры у менеджера
  3. Зарегистрируйте мой CameraManager.TorchCallback , используя CameraManager.registerTorchCallback
  4. Обновите состояние факела с помощью CameraManager

Если я запускаю этот код в главном потоке, все работает отлично, когда я запускаю его в другой класс потока (переопределяя run), обратный вызов никогда не вызывается. Я гарантирую, что моя тема не прервана, видимой на профилировщике студии Android. Что-то с регистрацией и темами я не понимаю.

Вы когда-нибудь пробовали такую ​​реализацию?

Любая идея приветствуется!

1 Ответ

1 голос
/ 23 октября 2019

Даже если вы вызовете registerTorchCallback () из фонового потока, обратный вызов все равно будет опубликован в потоке пользовательского интерфейса. Вы должны создать новый HandlerThread и получить для него обработчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...