2015-05-05 106 views
1

應用程序在四個不同的設備中工作正常。但客戶端正面臨閃存對衝開/關Xperia z2閃光切換按鈕崩潰android

MainActivity

btnFlash.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View arg0) 
      { 
       Toast.makeText(context, "Flash is toggled", Toast.LENGTH_LONG).show(); 

       if(CameraPreview.isFlashOn) 
       { 
        CameraPreview.FlashOff(camera); 

        CameraPreview.isFlashOn = false; 
       } 
       else 
       { 
        CameraPreview.isFlashOn = true; 

        CameraPreview.FlashOn(camera); 
       } 
      } 
     }); 

CameraPreview

public static boolean isFlashOn =false; // 

    public static void FlashOn(Camera mCamera) 
    { 
     // Get Camera Params for customisation 
     Camera.Parameters parameters = mCamera.getParameters(); 

     // Check Whether device supports AutoFlash, If you YES then set 
     // AutoFlash 
     List<String> flashModes = parameters.getSupportedFlashModes(); 

     if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     } 
     else if (flashModes.contains(Parameters.FLASH_MODE_ON)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_ON); 
     } 
     mCamera.setParameters(parameters); 
     mCamera.startPreview(); 
    } 

    public static void FlashOff(Camera mCamera) 
    { 
     // Get Camera Params for customisation 
     Camera.Parameters parameters = mCamera.getParameters(); 

     // Check Whether device supports AutoFlash, If you YES then set 
     // AutoFlash 
     List<String> flashModes = parameters.getSupportedFlashModes(); 
     if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_OFF)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_OFF); 
     } 
     mCamera.setParameters(parameters); 
     mCamera.startPreview(); 
    } 

崩潰報告。

me_idx 0, stream type 9 
W/ActivityManager( 973): Activity pause timeout for ActivityRecord{45328828 u0 
aus.xray.cam/.MainActivity2 t153 f} 
D/mm-camera-intf(9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 6, fra 
me_idx 840, stream type 1 
I/mm-camera( 473): mct_pipeline_process_set:command=8000013 
I/mm-camera( 473): pproc_module_handle_reprocess_offline:1318 input buf fd 126 
type 4 size 462848 
D/mm-camera-intf(9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 0, fra 
me_idx 0, stream type 9 
D/CustomizationProcess(3778): dismissCustomizationDialog:true 
I/WindowManager( 973): Screen frozen for +307ms due to Window{44e24b48 u0 Statu 
sBar} 
D/mm-camera-intf(9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 0, fra 
me_idx 841, stream type 1 
I/mm-camera( 473): mct_pipeline_process_set:command=8000013 
I/mm-camera( 473): pproc_module_handle_reprocess_offline:1318 input buf fd 120 
type 4 size 462848 
D/mm-camera-intf(9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 1, fra 
me_idx 0, stream type 9 
^C 
C:\adb> 
+0

具有u得到了解決,我面臨同樣的問題 – Mukesh

+0

是的,我找到了解決辦法。 – Nepster

+0

我已經爲你解答了。木庫 – Nepster

回答

0

應muku的要求。我回答了我的自我。用於切換閃光燈

flashBtn.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public onClick(View view) 
    { 
     if(cameraView!=null)//cameraView is the CameraPreview.class 
     { 
      if(cameraView.isFlashOn() && isFlashRunning) 
      {  
       cameraView.FlashOff(camera); 

       isFlashRunning = false;        
      } 
      else 
      { 
       cameraView.FlashOn(camera); 

       isFlashRunning = true; 
      } 
    } 
}); 

而FlashOn和晾乾方法

public void FlashOn(Camera mCamera) throws RemoteException 
    { 
     // Get Camera Params for customisation 
     Camera.Parameters parameters = mCamera.getParameters(); 

     // Check Whether device supports AutoFlash, If you YES then set 
     // AutoFlash 
     List<String> flashModes = parameters.getSupportedFlashModes(); 

     if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 

      isFlashOn = true; 
     } 
     else if (flashModes.contains(Parameters.FLASH_MODE_ON)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_ON); 

      isFlashOn = true; 
     } 

     mCamera.setParameters(parameters); 

     mCamera.startPreview(); 

     //mCamera.autoFocus(null); // may be this is problem 
    } 



    public void FlashOff(Camera mCamera) throws RemoteException 
    { 
     // Get Camera Params for customisation 
     Camera.Parameters parameters = mCamera.getParameters(); 

     // Check Whether device supports AutoFlash, If you YES then set 
     // AutoFlash 
     List<String> flashModes = parameters.getSupportedFlashModes(); 

     if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_OFF)) 
     { 
      parameters.setFlashMode(Parameters.FLASH_MODE_OFF); 

      isFlashOn = false; 
     } 

     mCamera.setParameters(parameters); 

     mCamera.startPreview(); 
    }