从Android应用程序更改BlackBerry-10屏幕亮度

4
在我的Android应用程序中,我正在使用以下代码来更改屏幕亮度
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = someValue;
getWindow().setAttributes(lp);

在安卓设备上它能正常工作,但是当我转移到黑莓10上时它就无法运行。是否有其他方法或解决方法?
Torcellite的解决方案(由Anton Cherkashyn提供):
我尝试过这种方法,在进一步测试后,它确实可以在安卓设备上改变亮度,但在黑莓设备上无法运行。唯一的原因是因为打开了新的活动(活动更改导致昏暗)。
在我的活动中:
Intent intent = new Intent(getBaseContext(), DummyBrightnessActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("brightness value", value[screenBrightness]); 
getApplication().startActivity(intent);

虚拟:

public class DummyBrightnessActivity extends Activity{

    private static final int DELAYED_MESSAGE = 1;

    private Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);            
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if(msg.what == DELAYED_MESSAGE) {
                    DummyBrightnessActivity.this.finish();
                }
                super.handleMessage(msg);
            }
        };
        Intent brightnessIntent = this.getIntent();
        float brightness = brightnessIntent.getFloatExtra("brightness value", 0);
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = brightness;
        getWindow().setAttributes(lp);

        Message message = handler.obtainMessage(DELAYED_MESSAGE);
        //this next line is very important, you need to finish your activity with slight delay
        handler.sendMessageDelayed(message,1000); 
    }
}

清单文件:

 <activity android:name=".DummyBrightnessActivity"
            android:taskAffinity=".Dummy"
            android:excludeFromRecents="true"
            android:theme="@style/EmptyActivity"></activity>

styles.xml

 <style name="EmptyActivity" parent="android:Theme.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Toast</item>
        <item name="android:background">#00000000</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:colorForeground">#000</item>
    </style>

5
如果有人感到困惑:http://developer.blackberry.com/android/ - Bojan Kogoj
1个回答

0

虽然您使用的代码只能更改当前屏幕的亮度,但我要发布的代码可以更改系统亮度。

android.provider.Settings.System.putInt(getBaseContext()
                    .getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS, bright);

bright 是一个从0到255的整数值。

但是,这个方法不会更新你屏幕的亮度。所以,你需要调用一个不可见的活动并关闭它来更新屏幕亮度。

这里有更多信息

[编辑]

尝试将此添加到您的清单中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

[编辑]

尝试添加这个:

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

谢谢您的回复。我尝试使用您代码的这一部分,但在黑莓上无法正常工作(亮度根本不会改变!)。然而,链接中的代码确实可以改变亮度(总是降低,即使应该让它更亮),但不到一秒钟后就会重置回原来的状态。 - Bojan Kogoj
像我之前说的那样,你正在使用的代码只会更改屏幕的亮度。试着在 getWindow().setAttributes(lp); 后面添加我的代码。 - Karthik Balakrishnan
它不起作用,仍然是一样的。我猜测Android应用程序不允许更改手机亮度设置。 - Bojan Kogoj
我猜吧,但没什么意义。如果他们要转换Android应用程序,他们会允许亮度的。你试过将我的代码部分粘贴到你的主活动中吗? - Karthik Balakrishnan
支持设置,但权限不受支持(http://ow.ly/h4b1C)。但它仍然无法正常工作,我尝试将其放置在各个位置。 - Bojan Kogoj

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