Java Flash切换按钮崩溃android

Java Flash切换按钮崩溃android,java,android,camera,Java,Android,Camera,该应用程序在四种不同的设备上运行良好。但客户端在Xperia z2上的flash Button开/关时面临崩溃 main活动 btnFlash.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(context, "Flash i

该应用程序在四种不同的设备上运行良好。但客户端在Xperia z2上的flash Button开/关时面临崩溃

main活动

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

应木库的要求。我自己回答的。用于切换闪光灯

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;  
            }
    }
});
以及闪络和闪络方法

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();
    }
public void FlashOn(摄像头mCamera)引发RemoteException
{   
//获取相机参数以进行定制
Camera.Parameters=mCamera.getParameters();
//检查设备是否支持AutoFlash,如果支持,则设置
//自动闪光
List flashModes=parameters.getSupportedFlashModes();
if(flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
{
参数设置闪光模式(参数闪光模式);
isFlashOn=true;
}
else if(flashModes.contains(Parameters.FLASH\u MODE\u ON))
{
parameters.setFlashMode(parameters.FLASH_MODE_ON);
isFlashOn=true;
}
mCamera.setParameters(参数);
mCamera.startPreview();
//mCamera.autoFocus(null);//可能是这个问题
}
public void FlashOff(摄影机mCamera)引发RemoteException
{
//获取相机参数以进行定制
Camera.Parameters=mCamera.getParameters();
//检查设备是否支持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(参数);
mCamera.startPreview();
}

你找到解决方案了吗?我面临同样的问题是的,我找到了解决方案。我已经为你解答了。无垢
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();
    }