2015-09-04 119 views
0

我正在爲Android創建閃光燈應用程序。我正在使用服務打開和關閉閃光燈。所有的東西都很好。但是當屏幕鎖定閃光燈自動關閉並且服務已經運行時。這隻會發生從充電器拔下的設備。當設備充電閃光燈在屏幕鎖定後保持打開。如何避免此問題。如何在鎖定屏幕後保持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; 
} 
    } 

回答

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

你能不能做這樣的事?我從來沒有玩過相機