2017-02-21 64 views
0

我正在创建手电筒Android应用程序..并面临下面的问题..请指导我... 当我按下potrait模式中的按钮闪光灯继续,当我旋转到风景模式闪光灯熄灭..无法正确定位手电筒Android应用程序

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

我有一个解决方案,这也将是其他人谁有兴趣创建一个手电筒Android应用程序,为described on my blog很有帮助。

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

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

请注意不要太频繁地链接到您的博客,这是一种令人不悦的做法。欢迎登机:D –

+2

请记住,直接说,你连接的东西是由你拥有的,如果是的话。如果你不这样做,那就是垃圾邮件。 –

+3

请注意,如果您想宣传自己的产品/博客,您必须透露您的联属**,否则您的答案可能会被标记为垃圾邮件。请阅读[如何不成为垃圾邮件发送者](https://stackoverflow.com/help/promotion) – DavidPostill