Я пишу класс, который прослушивает изменения состояния факела (фонарик), используя camera2 API. Я новичок в android разработке, поэтому я просто пытаюсь и экспериментирую! Класс (MyClass) создается во фрагменте, и передается ссылка на это представление (, хотя я сейчас не использую его в этом коде ).
class MyClass (view : View){
private val cm: CameraManager =
view.context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
private val tc: CameraManager.TorchCallback = object : CameraManager.TorchCallback() {
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
Log.i("MyClass", "id ${cameraId} - Torch status = ${enabled}")
if (enabled)
// Stuff
}
}
И в блоке инициализации у меня есть:
init{
cm.registerTorchCallback(tc, null)
}
Теперь, когда я развертываю приложение на своем смартфоне (xiaomi miui 11), и я во фрагменте, где создается экземпляр класса, если я пытаюсь включить фонарик из уведомления windows (где размещены все быстрые переключатели) функция обратного вызова не вызывается : фактически журнал печатается только один раз (первый раз, как в документации) и никогда больше. Теперь я не знаю, сделал ли я что-то неправильно в коде или сам переключатель не связан с обратным вызовом факела. Спасибо!