Код для включения фонарика, когда активность приостановлена ​​и нажата блокировка экрана

я реализую фонарик, и я вызвал все функции i, e onDestroy() onBackpressed(), чтобы мой фонарик оставался включенным. но у меня есть ошибка, что если я нажму назад и после этого экран заблокируется, фонарик выключится через несколько секунд. пожалуйста, помогите мне с кодом.

public class MainActivity extends AppCompatActivity {
    ImageButton btnSwitch;
    Camera camera;
    Camera.Parameters parameters;
    boolean isflash = false;
    boolean ison = false;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
        if(getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH));
        {
            try {
                camera = Camera.open();
                parameters = camera.getParameters();
                isflash = true;
            }catch (Exception e ){
                Log.e(getString(R.string.app_name), "failed to open Camera");
                e.printStackTrace();
            }
        }

        btnSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isflash)
                {
                    if (!ison)
                    {
                        btnSwitch.setImageResource(R.drawable.off);
                        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                        camera.setParameters(parameters);
                        camera.startPreview();
                        ison = true;
                    }
                    else {
                        btnSwitch.setImageResource(R.drawable.btn_switch_on);
                        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                        camera.setParameters(parameters);
                        camera.stopPreview();
                        ison = false;
                    }
            }
            else
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Error.....");
                    builder.setMessage("FlashLight is not available on this device....");
                    builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            finish();
                        }
                    });
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();

                    }

                }
        });

    }
    @Override
    protected void onStop() {
        super.onStop();
        if(!ison){
            if (camera!=null)
            {
                camera.release();
                camera = null;
            }
        }
    }

    @Override
    public void onBackPressed() {
       super.onBackPressed();
        if(!ison){
            if (camera!=null)
            {
                camera.release();
                camera = null;
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if(!ison){
            if (camera!=null)
            {
                camera.release();
                camera = null;
            }
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(!ison) {
            if (camera != null) {
                camera.release();
                camera = null;
            }
        }
    }
}

person Waqas    schedule 24.05.2017    source источник
comment
вы пробовали это?   -  person shinilms    schedule 24.05.2017
comment
Ответил здесь   -  person Fahadsk    schedule 24.05.2017