2013-07-18 100 views
0

我正在開發一個非常簡單的手電筒應用程序,雖然我已經成功地實現了我在尋找的內容,但我希望按照我希望的方式執行它。目前,我的手電筒一直處於活動狀態,只要我點擊主屏幕按鈕即可將手電筒關閉的活動降至最低。我希望手電筒保持點亮狀態,並且只在單擊我的活動中的關閉按鈕時關閉。如何在活動進行到後臺時保持閃光燈

我也想要類似的東西,如果手電筒處於活動狀態並且用戶點擊主頁按鈕以最小化活動,請關閉按鈕以顯示在通知欄中。

請指導我。

+0

你有沒有試過通過後臺服務來完成這項工作? – Ranco

+0

@Ranco你是在談論保持手電筒,同時最小化應用程序? –

+0

邑,我認爲它會解決這兩個需求 – Ranco

回答

0

請嘗試使用以下代碼。

公共類CustomFlashLight {

private static CustomFlashLight instance; 

private static Camera mCamera; 


public static CustomFlashLight getInstance() { 
    if (null == instance) { 
     instance = new CustomFlashLight(); 
    } 
    return instance; 
} 

public static boolean checkFlashAvailaibility(Context context) { 
    boolean flag = false; 
    try { 
     flag = context.getPackageManager().hasSystemFeature(
       PackageManager.FEATURE_CAMERA_FLASH); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return flag; 
} 

public static boolean turnOnLight() { 
    boolean flag = false; 
    try { 
     mCamera = Camera.open(); 
     if (mCamera != null) { 
      Parameters params = mCamera.getParameters(); 
      if (Build.MODEL.equals("GT-P1000")) { 
       params.setFlashMode(Parameters.FLASH_MODE_ON); 
      } else { 

       params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
      } 
      mCamera.setParameters(params); 
      mCamera.startPreview(); 
      mCamera.autoFocus(new AutoFocusCallback() { 

       public void onAutoFocus(boolean success, Camera camera) { 
       } 
      }); 

      flag = true; 
     } else { 
      flag = false; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
    return flag; 
} 

public static boolean turnOffLight() { 
    boolean flag = false; 
    try { 
     if (mCamera != null) { 
      mCamera.stopPreview(); 
      mCamera.release(); 
      mCamera = null; 
      flag = true; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
    return flag; 
} 

}

+1

我已經成功實現了打開和關閉閃光燈的功能。我正在尋找的解決方案是在使用主頁按鈕最小化應用程序時保持閃光燈亮。 –

+0

請在添加一個靜態標誌並設置爲true時打開並在onStart方法切換標誌爲true時比調用turnOn方法。 –

+0

謝謝你節省時間。我得到了解決方案。 –

0

得到了解決。

@Override 
public void onBackPressed() { 
super.onBackPressed(); 

params = camera.getParameters(); 
params.setFlashMode(Parameters.FLASH_MODE_OFF); 
camera.setParameters(params); 
camera.stopPreview(); 
isFlashOn = false; 

if (camera!= null) { 
    camera.release(); 
    camera= null; 
} 
Log.d("Camera","Back Pressed"); 
} 

並從onStop()和onPause()方法中刪除所有代碼。

相關問題