2016-11-12 85 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

你从来没有设置brightnessOnOff为假时,亮度是关闭的,所以你按下按钮后第一时间就会产生价值true。因此,您的代码每次都会输入if块。当您关闭亮度时,需要做的是将brightnessOnOff设置为false,并在再次打开亮度时将其设置为true。基本上,您需要在truefalse之间替换brightnessOnOff以使其正常工作