我正在尝试以编程方式调整手机的亮度。我的应用程序中有一个半透明的活动,但用户无法点击它到它下面的活动/窗口。一旦设置了亮度,我就会终止此活动,但是我想在此活动中做更多的工作(例如逐渐调整亮度),这需要一些时间,而且我不希望用户点击他们的手机,想知道为什么他们的行动没有注册。
所以基本上,我需要创建一个模拟窗口,它将成功地允许我调整屏幕亮度而不显示,或者找出如何进行活动点击。我不知道该怎么做。
BTW,这是在Activity中进行亮度调整的代码:
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, Math.round(SOME_BRIGHTNESS * 255f));
Window window = getWindow();
window.getAttributes().screenBrightness = SOME_BRIGHTNESS;
window.setAttributes(window.getAttributes());
float sysBrightPer = getSystemBrightness(getApplicationContext());
new Thread() {
public void run() {
try {
sleep(BRIGHT_TIMEOUT);
} catch (InterruptedException e) {
e.printStackTrace();
}
finish();
}
}.start();
有什么建议吗?
P.S。我在市场上发现了这款应用。我想知道这种方式是否会对我有所帮助? https://market.android.com/details?id=com.haxor
答案 0 :(得分:6)
哈!该应用程序确实对我有所帮助,只是因为它让我找到了这个解决方案! Brightness Screen Filter
对于懒惰点击,请使用:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
答案 1 :(得分:0)
我担心这不再适用于4.0+,如果应用于窗口本身(可能是为了防止使用像透明叠加层中的onkey这样的活动类方法)。但是,仍然可以使用windowmanager.addview或layoutinflater.inflate来添加扩展视图组的自定义视图类,如果在添加或膨胀此视图时使用layoutparams.FLAG_NOT_TOUCHABLE,它将是单击,并且即使在调用它的活动进入暂停状态。
答案 2 :(得分:0)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
如果要拦截特定视图的触摸,可以使用窗口管理器添加带有不同标志的视图: 例如
WindowManager.LayoutParams params = new WindowManager.LayoutParams(...);
getWindowManager().addView(myButton,params);