2017-02-21 62 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