2014-01-14 115 views
4

我想根据接近传感器打开和关闭屏幕。我可以关闭屏幕。但在屏幕后面的代码不起作用。任何人都可以帮助我吗? 这是代码:`在android中以编程方式打开和关闭屏幕

public void onSensorChanged(SensorEvent event) { 
if (event.values[0] == 0) { 

Toast.makeText(getApplicationContext(), "sensor in 0",Toast.LENGTH_LONG).show(); 
WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
params.screenBrightness = 0; 
getWindow().setAttributes(params); 


     } else { 

Toast.makeText(getApplicationContext(), "sensor in 1",Toast.LENGTH_LONG).show(); 
WindowManager.LayoutParams params = getWindow().getAttributes(); 

params.screenBrightness = -1; 
getWindow().setAttributes(params); 
     } 
}` 
+0

[Android:如何以编程方式打开和关闭屏幕?](http://stackoverflow.com/questions/9561320/android-how-to-turn-screen-on-and-off-programmatically) –

+0

检查此问题http://stackoverflow.com/questions/9561320/android-how-to-turn-screen-on-and-off-programmatically –

+0

也检查此http://android.okhelp.cz/turn-screen- on-off-android-sample-code/ –

回答

0

要打开屏幕亮度on的值是1并且把它off值为0

1

首先我变暗屏幕亮度尽可能低,然后制成所有GUI元素都无法触摸以解决触摸问题。以下是我的代码:

@Override 
public void onSensorChanged(SensorEvent event) { 
    // TODO Auto-generated method stub 
    WindowManager.LayoutParams params = this.getWindow().getAttributes(); 

    if (event.values[0] == 0) { 
     //TODO Store original brightness value 
     params.screenBrightness = 0.005f; 
     this.getWindow().setAttributes(params); 
     enableDisableViewGroup((ViewGroup)findViewById(R.id.YOUR_MAIN_LAYOUT).getParent(),false); 
     Log.e("onSensorChanged","NEAR"); 

    } else { 
     //TODO Store original brightness value   
     params.screenBrightness = -1.0f; 
     this.getWindow().setAttributes(params);      
     enableDisableViewGroup((ViewGroup)findViewById(R.id.YOUR_MAIN_LAYOUT).getParent(),true); 
     Log.e("onSensorChanged","FAR"); 
    }  
} 

From here,我把参考禁用整个屏幕的视图触摸。

+0

为什么这么低?它是最干净的解决方案之一! – Usman

相关问题