0

私は非常に単純な懐中電灯アプリケーションを開発していますが、私が探していたものをうまく達成しましたが、私が望むようにそれを実行したいと思います. 現在、アクティビティがアクティブな間、懐中電灯は点灯したままですが、ホームボタンを押してアクティビティの懐中電灯を最小化するとすぐに消灯します。懐中電灯をオンのままにして、アクティビティでオフ ボタンをクリックしたときだけオフにしたいです。

また、懐中電灯がアクティブで、ユーザーがホームボタンを押してアクティビティを最小限に抑えた場合、通知バーに[オフにする]ボタンが表示されるようにしたいです。

私を案内してください。

4

2 に答える 2

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() メソッドからすべてのコードを削除しました。

于 2013-07-18T05:56:38.873 に答える
0

以下のコードを使用してみてください。

public class 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;
}

}

于 2013-07-18T05:14:18.240 に答える