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