Java 如何在屏幕锁定后保持android摄像头闪烁

Java 如何在屏幕锁定后保持android摄像头闪烁,java,android,android-service,Java,Android,Android Service,我正在为android创建一个闪光灯应用程序。我正在使用服务打开和关闭闪光灯。一切都很好。但当屏幕锁定时,闪光灯会自动关闭,并且服务已经在运行。只有从充电器上拔下的设备才会发生这种情况。当设备充电时,闪光灯在屏幕锁定后保持打开。如何避免此问题 这是我的FlashLightService.java文件 public class FlashLightService extends Service { Camera camera; Camera.Parameters parameter

我正在为android创建一个闪光灯应用程序。我正在使用服务打开和关闭闪光灯。一切都很好。但当屏幕锁定时,闪光灯会自动关闭,并且服务已经在运行。只有从充电器上拔下的设备才会发生这种情况。当设备充电时,闪光灯在屏幕锁定后保持打开。如何避免此问题

这是我的
FlashLightService.java
文件

public class FlashLightService extends Service {
    Camera camera;
    Camera.Parameters parameters;
    static boolean isTurnOn;
    static int usedTime = 0;
    static String TAG = "coretorch_service";
Thread t;
static String formattedTime;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "Torch turned on", Toast.LENGTH_SHORT).show();
    isTurnOn = true;

    t =new Thread(new Runnable() {
        @Override
        public void run() {
            while (isTurnOn){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                usedTime++;
            }
            usedTime = 0;
        }
    });

    t.start();

    camera = Camera.open();
    parameters = camera.getParameters();

    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    camera.setParameters(parameters);
    camera.startPreview();

    return START_NOT_STICKY;
}

@Override
public void onDestroy() {
    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
    camera.setParameters(parameters);
    camera.stopPreview();
    camera.release();
    isTurnOn = false;
    super.onDestroy();
    Toast.makeText(this, "Torch turned off", Toast.LENGTH_SHORT).show();
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

public static boolean getFlashStatus() {
    return isTurnOn;
}

public static String getUsedTime(){
    formattedTime = toTimeFormat(usedTime);
    return formattedTime;
}

static String toTimeFormat(int secs){
    String time;
    int mins;
    int seconds;

    if (secs < 60){
        time = String.valueOf(secs) + " sec";
    }
    else {
        mins = (secs / 60);
        seconds = (secs - (mins * 60));
        time = String.valueOf(mins) + " mins " + String.valueOf(seconds) + " sec";
    }

    return time;
 }
  }
公共类FlashLightService扩展服务{
摄像机;
摄像机参数;
静态布尔isTurnOn;
静态int usedTime=0;
静态字符串TAG=“coretorch\u服务”;
螺纹t;
静态字符串格式化时间;
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
Toast.makeText(此“火炬打开”,Toast.LENGTH_SHORT).show();
isTurnOn=true;
t=新线程(新可运行(){
@凌驾
公开募捐{
while(isTurnOn){
试一试{
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
usedTime++;
}
usedTime=0;
}
});
t、 start();
camera=camera.open();
parameters=camera.getParameters();
parameters.setFlashMode(摄像机、参数、闪光灯模式);
设置参数(参数);
camera.startPreview();
返回开始时间不粘;
}
@凌驾
公共空间{
parameters.setFlashMode(相机.参数.闪光灯模式关闭);
设置参数(参数);
camera.stopPreview();
相机。释放();
isTurnOn=假;
super.ondestory();
Toast.makeText(此“火炬已关闭”,Toast.LENGTH_SHORT).show();
}
@可空
@凌驾
公共IBinder onBind(意向){
返回null;
}
公共静态布尔getFlashStatus(){
返回是打开的;
}
公共静态字符串getUsedTime(){
formattedTime=toTimeFormat(usedTime);
返回格式化时间;
}
静态字符串到时间格式(整数秒){
串时间;
国际分钟;
整数秒;
如果(秒<60){
时间=字符串.valueOf(秒)+“秒”;
}
否则{
分钟=(秒/60);
秒=(秒-(分钟*60));
时间=字符串.valueOf(分钟)+“分钟”+字符串.valueOf(秒)+“秒”;
}
返回时间;
}
}
你能这样做吗?我从来没有玩过照相机

@Override
protected void onPause() {
    Camera.open().getParameters().setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
};