0

カメラのフラッシュ ライトのオンとオフを切り替えるサービスを使用していますが、正常に動作していますが、モバイル カメラ アプリがクラッシュしており、サービス中のカメラをリリースできません。

Camera camera = Camera.open(); 
final Parameters p = camera.getParameters();       
          if (isFlashOn) 
          {
              Log.i("info", "torch is turned off!");

             Toast toast= Toast.makeText(getApplicationContext(),
                        "Torch is turned off!",Toast.LENGTH_SHORT);
             toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 100);
             toast.show();

            p.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(p);        

              //Set flag to false               
             isFlashOn = false;
            release=true;

          }
          //If Flag is set to false
          else 
          {
              Log.i("info", "torch is turned on!");

             Toast toast= Toast.makeText(getApplicationContext(),
                        "Torch is turned on!",Toast.LENGTH_SHORT);
              toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 100);
              toast.show();

              p.setFlashMode(Parameters.FLASH_MODE_TORCH);

             camera.setParameters(p);

            isFlashOn = true;
            release=false;

          }

        if (release == true) 
          {
            camera.stopPreview();
            camera.release();
                  }
4

1 に答える 1

1

カメラを直接開く前にカメラの状態を確認する必要があるため、カメラを安全に開く必要があります。

private boolean safeCameraOpen(int id) {
    boolean qOpened = false;

    try {
        releaseCameraAndPreview();
        mCamera = Camera.open(id);
        qOpened = (mCamera != null);
    } catch (Exception e) {
        Log.e(getString(R.string.app_name), "failed to open Camera");
        e.printStackTrace();
    }

    return qOpened;    
}

private void releaseCameraAndPreview() {
    mPreview.setCamera(null);
    if (mCamera != null) {
        mCamera.release();
        mCamera = null;
    }
}

カメラの詳細については、それをチェックして、必要に応じて調整してください。

楽しみ !!!

于 2013-05-18T06:11:09.567 に答える