2013-07-18 57 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()方法中删除所有代码。

相关问题