我试图从小部件设置屏幕亮度.我们知道这很容易实现,因为大量的小部件已经这样做,但是如何......
在我从小部件调用的服务中,我这样做来设置亮度:
Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200);
Run Code Online (Sandbox Code Playgroud)
除非它不"刷新"屏幕以应用新设置,否则效果很好.关闭和打开屏幕会刷新显示设置,因此我们知道代码有效.
我还在几个网站上看到这样的东西会刷新屏幕,但我们不能使用它,因为我们在一个小部件中.窗口小部件活动和服务不能使用getWindow.
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
除了Beautiful Widgets,Power control,Extended controls等所有这些小工具还有什么用呢?
更新:另一张海报建议启动空活动并执行WindowManager刷新.这样可行,但它会在一秒钟内出现一个丑陋的黑屏.由于其他小部件不这样做,必须有一种方法来防止丑陋的空白黑屏显示.
对于黑屏,在活动上设置主题,包含:
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
谢谢塞巴斯蒂安的回答,我在这里复制了它.
归档时间: |
|
查看次数: |
3049 次 |
最近记录: |