2016-11-12 14 views
1

アプリケーションには画面の明るさをオン/オフする画像ボタンがありますが、一度オン/オフするとボタンがもう機能しません。誰もがアイデアを持っていますか?コードに何が間違っていますか?一度オン/オフした後にボタン停止機能があります

import android.provider.Settings; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.WindowManager; 
import android.widget.ImageButton; 

public class ScreenFlashlight extends AppCompatActivity { 
    private static String tag; 
    private static final String TAG = tag ; 
    private boolean brightnessOnOff; 
    private ImageButton screenFlashOnOffButton; 

    public ScreenFlashlight() throws Settings.SettingNotFoundException { 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_screen_flashlight); 
     screenFlashOnOffButton = (ImageButton) findViewById(R.id.flashOnOffButton); 
     brightnessOnOff = false; 


    } 
    public void screenFlashButtonClicked(View view) { 

      try { 
       if (brightnessOnOff) { 

        turnBrightnessOff(); 
        Log.d(TAG, "screenFlashButtonClicked: "); 
       } else { 
        brightnessOnOff = true; 
        turnBrightnessOn(); 
        Log.d(TAG, "screenFlashButtonClicked: "); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

    } 



    private void turnBrightnessOn() { 
     try { 
      screenFlashOnOffButton.setImageResource(R.drawable.screenonbutton); 
      int currentBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); 
      //Screen refresh to add brightness 

      WindowManager.LayoutParams lp = getWindow().getAttributes(); 
      lp.screenBrightness = currentBrightness/ 100.0f; 
      getWindow().setAttributes(lp); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void turnBrightnessOff() { 
     try { 
      screenFlashOnOffButton.setImageResource(R.drawable.screenoffbutton); 
      int currentBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); 
      //Refresh screen 

      WindowManager.LayoutParams lpp = getWindow().getAttributes(); 
      lpp.screenBrightness = currentBrightness; 
      getWindow().setAttributes(lpp); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

答えて

1

ボタンを最初に押した後、それは価値trueを持つことになりますので、明るさは、オフになっているときは、falseにbrightnessOnOffを設定することはありません。したがって、コードは毎回ifブロックに入ります。あなたがする必要があるのは、明るさをオフにしたときにbrightnessOnOffをfalseに設定し、再度明るさをオンにしたときにtrueに設定します。基本的には、brightnessOnOfftruefalseの間で置き換えて正しく動作させる必要があります。

関連する問題