我想使用 Java 创建一个 Android 应用程序,当用户从系统而不是从应用程序打开或关闭手电筒时,它会显示 toast 消息。 我发现没有内置广播器来接收此信息,我必须为此创建自定义广播接收器。 请有人帮助构建用于手电筒状态的自定义广播接收器的逻辑。
package com.example.lab7_torch;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.widget.Toast;
public class TorchChangeReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent){
if(intent != null && intent.getAction() != null){
if(intent.getAction().equals("android.hardware.action.Action_Torch_On")) {
boolean isTorchOn = intent.getBooleanExtra("torch_state", false);
if (isTorchOn){
Toast.makeText(context,"Torch is On", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context,"Torch is Off", Toast.LENGTH_SHORT).show();
}
}
}
}
我为自定义广播接收器尝试了此代码,但它不起作用。
我认为没有任何广播接收器可以注册来跟踪手电筒/手电筒状态。你从哪里得到这个
android.hardware.action.Action_Torch_On
?
您需要使用相机管理器来跟踪手电筒/手电筒的状态。
参考:https://developer.android.com/reference/android/hardware/camera2/CameraManager
您还必须添加相机和手电筒权限才能访问状态。