Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 闪光灯无法打开/摄像机错误_Android_Flashlight - Fatal编程技术网

Android 闪光灯无法打开/摄像机错误

Android 闪光灯无法打开/摄像机错误,android,flashlight,Android,Flashlight,您好,我在查看手电筒应用程序的源代码,我做了一些修改,因为当我最小化应用程序时,手电筒会关闭,所以我只使用onDestroy()方法关闭应用程序状态,但当我关闭和打开应用程序时,有时应用程序甚至不工作,它会显示“打开”但不会打开手电筒 这就是我所做的 public class MainActivity extends AppCompatActivity { Button button; private Camera camera; private boolean isFlashOn; priv

您好,我在查看手电筒应用程序的源代码,我做了一些修改,因为当我最小化应用程序时,手电筒会关闭,所以我只使用onDestroy()方法关闭应用程序状态,但当我关闭和打开应用程序时,有时应用程序甚至不工作,它会显示“打开”但不会打开手电筒 这就是我所做的

public class MainActivity extends AppCompatActivity {

Button button;
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Parameters params;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   final ImageButton imgbutton = (ImageButton)findViewById(R.id.imageButton);





    hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);



    getCamera();

    //button.setOnClickListener(new View.OnClickListener() {
         imgbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (isFlashOn) {
                turnOffFlash();

                Toast.makeText(MainActivity.this, "Flash OFF!", Toast.LENGTH_SHORT).show();
                imgbutton.setImageResource(R.drawable.light_off);

            } else {
                turnOnFlash();

                Toast.makeText(MainActivity.this, "Flash ON!", Toast.LENGTH_SHORT).show();
                imgbutton.setImageResource(R.drawable.light_on);
            }

        }
    });
}

private void getCamera() {

    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        }catch (Exception e) {

        }
    }

}

private void turnOnFlash() {

    if(!isFlashOn) {
        if(camera == null || params == null) {
            return;
        }

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;
    }

}

private void turnOffFlash() {

    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(params);
        camera.stopPreview();
        isFlashOn = false;
    }
}

protected void onDestroy(){

    if(camera!=null){

        camera.stopPreview();
        camera.setPreviewCallback(null);

        camera.release();
        camera = null;
    }


} }
使用
onPause()
onResume()

@Override
    protected void onPause() {
        super.onPause();

       //Your code
    }

@Override
    protected void onResume() {
        super.onResume();

//Your code
    }

您忘记覆盖:

  • onStop()

  • onResume()

  • 要获取
    hasFlash
    我建议您将其放入
    onCreate()
    中,以了解设备是否有闪存可用

    hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    
  • onPause()


  • 顺便说一句,你有代码重复

    谢谢你的反馈..当我关闭应用程序时,我的应用程序会崩溃。有没有办法修复我使用的关闭Flash()销毁后无法解决此问题共享您的错误并将此ans标记为已批准(如果有帮助)。系统说不抱歉,应用程序已关闭,此处记录感谢我解决了我的问题,并向上投票支持您的帮助,因为我是新的stackoverflow,它现在公开显示向上投票当我最小化需要制作的应用程序时,应用程序将关闭灯即使是最小化,当我关闭应用程序(它调用destroy()方法)时,系统也会说“不幸的是,手电筒应用程序已停止”,然后在onPause中删除关机flash()方法。。。在你的问题中加入logcat错误,看看什么是crashingi从onPause()中删除了turnOffFlash(),但这不起作用,然后我删除了onStop()中的方法,然后它就起作用了..现在prblm is应用程序已停止msg出现在应用程序完全关闭时Tanks我解决了我的问题。。我没有在onDestory()方法中调用super.onDestory(),该方法现在导致了prbolem,但它没有显示任何error@JasbinKarki是的,你当然得打电话给super.onDestroy()
    @Override
      protected void onResume() {
          super.onResume();
          if(hasFlash)
              turnOnFlash();
      }
    
    hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    
    @Override
      protected void onPause() {
          super.onPause();
          turnOffFlash();
      }