UiModeManager - 夜间模式(Froyo)

4
我一直在尝试使用UiModeManager的夜间模式功能关闭应用程序中按钮的背光。默认的桌面时钟应用程序(Nexus One)在变暗时关闭背光,我也想这样做。我尝试使用以下代码:
UiModeManager mgr = (UiModeManager) getSystemService(UI_MODE_SERVICE); mgr.setNightMode(UiModeManager.MODE_NIGHT_YES);
UiModeManager.setNightMode(int mode)文档说明如下:
设置夜间模式。只有在设备启用汽车或桌面模式时,对夜间模式的更改才有效。
那是否意味着设备必须实际处于桌面坞中?我可以使用UiModeManager.enableCarMode(int flags)方法将设备设置为汽车模式。这很好用,但它并没有关闭灯光,它只是调暗了屏幕的背光。有没有办法在不使用物理桌面坞的情况下将设备设置为桌面模式?由于FroYo源代码尚未发布,因此我无法查看内置的桌面时钟应用程序。

不确定这是否有帮助,但视频播放器现在关闭背光,而2.1版本没有。 - alexanderblom
1个回答

4

随着Froyo源代码的发布,我来回答自己的问题:

我不认为你必须使用UIModeManager类。这是DeskClock应用程序的做法:

Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();

//Look at this!
winParams.buttonBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF;

win.setAttributes(winParams);

对我来说也起作用。


有没有办法从活动外部(例如在服务中)访问 getWindow() - faizal
@faizal 你好,你知道如何在Android服务中获取窗口吗? - Kaloer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接