Flash切换按钮崩溃android

应用程序在四种不同的设备中运行良好。 但是客户在Xperia z2上面临闪光按钮ON / OFF的崩溃。

主要活动

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 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 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> 

应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和FlashOff方法都是

 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 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 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(); }