2016-11-12 3 views
1

Die App verfügt über eine Bildschaltfläche, die die Bildschirmhelligkeit ein- und ausschaltet, aber nach einmaligem Ein- und Ausschalten des Knopfes funktioniert die Taste nicht mehr. Hat jemand eine Idee, was ist mit dem Code falsch?Taste funktioniert nicht mehr nach dem Ein- und Ausschalten

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(); 
     } 
    } 

Antwort

1

Sie setzen nie brightnessOnOff auf false, wenn die Helligkeit ausgeschaltet wird, so wird es haben Wert true, nachdem Sie die Taste zum ersten Mal drücken. Ihr Code wird also immer in den Block if eingegeben. Sie müssen brightnessOnOff auf "false" setzen, wenn Sie die Helligkeit ausschalten, und "True" einstellen, wenn Sie die Helligkeit wieder einschalten. Grundsätzlich müssen Sie brightnessOnOff zwischen true und false wechseln, damit es richtig funktioniert

Verwandte Themen