没有正确使用手电筒Android应用程序的方向

时间:2017-02-21 17:38:24

标签: android android-layout flashlight

我正在创建Flashlight Android App ..并面临以下问题..请指导我... 当我在potrait模式下按下按钮时闪光灯亮起,当我旋转到横向模式时闪光灯熄灭..

 ImageButton imagebuttonon, imagebuttonoff;
    public static Camera cmr;
    Camera.Parameters parameters;

    boolean isFlash = false;
    boolean isOn = false;

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

        imagebuttonoff = (ImageButton) findViewById(R.id.imagebuttonoff);
        if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))

        {

            cmr = Camera.open();
            parameters = cmr.getParameters();
            isFlash = true;

        }




        imagebuttonoff.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isFlash)

                {


                    //if flash light is not on
                    if (!isOn) {

                        imagebuttonoff.setImageResource(R.drawable.onswitch); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                        cmr.setParameters(parameters);
                        cmr.startPreview();
                        isOn = true;


                    } else {
                        imagebuttonoff.setImageResource(R.drawable.offswitch);
                        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                        cmr.setParameters(parameters);
                        cmr.stopPreview();
                        isOn = false;
                    }
                } else { 

                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Error");  
                    builder.setMessage("Flash light not available"); 
                    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 onDestroy() {
        super.onDestroy();
    }

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

             cmr.stopPreview();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

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

               if (isOn)
            cmr.startPreview();
    }

    @Override
    protected void onStart() {
        super.onStart();
               cmr.startPreview();
    }


    @Override
    protected void onStop() { 
        super.onStop();
        if (cmr != null)

            cmr.release();
        cmr = null;

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.getBoolean("mode", false);
        super.onSaveInstanceState(outState);
           }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
               super.onRestoreInstanceState(savedInstanceState);


    }

}

1 个答案:

答案 0 :(得分:1)

我有一个解决方案,对于有兴趣创建Flashlight Android应用程序的其他人,described on my blog也会有所帮助。

我刚刚在Manifest.xml文件中输入了这些行。

<activity android:name=".MainActivity" android:configChanges="orientation|screenSize">