2011-11-17 4 views
1

다음은 Android에서 손전등을 사용하도록 설정하는 코드입니다. Toast 메시지에서 다음 매개 변수를 반환했습니다. auto, on, off, torch. 매개 변수를 FLASH_MODE_TORCH로 설정하면 토치가 나를 사용할 수 없습니다. 내 매니페스트 권한은 다음과 같습니다카메라를 플래시 토치로 사용하는 방법?

<uses-permission android:name="android.permission.CAMERA"></uses-permission> 
    <permission android:name="android.permission.FLASHLIGHT" 
     android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" 
     android:protectionLevel="normal"/> 
    <uses-feature android:name="android.hardware.camera"></uses-feature> 

내 코드 :

public class CameraFlashActivity extends Activity { 
     /** Called when the activity is first created. */ 
     public Camera mCamera; 
     Parameters cameraParameters; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      boolean cameraPresnt = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 
      if(cameraPresnt == true) 
      { 
       Toast.makeText(getApplicationContext(),"Flash is there",10).show(); 
       if(mCamera==null) 
       { 

       try { 
        mCamera = Camera.open(); 
        mCamera.startPreview(); 
       Toast.makeText(getApplicationContext(),"Camera is present",10).show(); 
        } catch (Exception e) { 
        Log.i("CameraFlashActivity", "Camera.open() failed: " + e.getMessage()); 
        } 
        if(mCamera==null) 
        { 
         Toast.makeText(getApplicationContext(),"Camera object is null",10).show(); 
        } 
        else 
        { 
       cameraParameters = mCamera.getParameters(); 
       if(cameraParameters==null) 
       { 
        Toast.makeText(getApplicationContext(),"No camera parameters",10).show(); 
       } 
       else 
       { 
        List<String> flashmodes = cameraParameters.getSupportedFlashModes(); 
        String supportedFlashModes = cameraParameters.getFlashMode(); 
        Toast.makeText(getApplicationContext(),flashmodes.toString(),10).show(); 
        Toast.makeText(getApplicationContext(),supportedFlashModes,10).show(); 
        cameraParameters.setFlashMode(Parameters.FLASH_MODE_ON); 
        mCamera.setParameters(cameraParameters); 
        String supportFlashModes = cameraParameters.getFlashMode(); 
        Toast.makeText(getApplicationContext(),supportFlashModes,10).show(); 
        Toast.makeText(getApplicationContext(),"Camera parameters are set on flash light",10).show(); 

       } 
        } 
       } 
       else 
       { 

       } 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(),"Flash is not there",10).show(); 
      } 
     } 
     public void onDestroy() { 
      super.onDestroy(); 
      if (mCamera != null) { 
       cameraParameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 
        mCamera.setParameters(cameraParameters); 
        mCamera.stopPreview(); 
       mCamera.release(); 
      } 
      Log.i("cameraFlashLight", "onDestroy"); 
      } 
    } 

답변

1

사용이 코드 순서 :

mCamera = Camera.open(); 
cameraParameters = mCamera.getParameters(); 
cameraParameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 
mCamera.setParameters(parameters); 
mCamera.startPreview(); 
관련 문제