4

私のAndroidアプリケーションでは、次のコードを使用して画面の明るさを変更しています

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = someValue;
getWindow().setAttributes(lp);

Android デバイスでは正常に動作しますが、BlackBerry-10 に移植すると動作しません。使用すべき別の方法または回避策はありますか?


Torcellite のソリューション (Anton Cherkashyn による):

私はこれを試しました.さらにテストした後、Androidデバイスでは明るさが変わりますが、BlackBerryでは変わりません. BlakcBerry で淡色表示になっている唯一の理由は、新しいアクティビティを開くためです (アクティビティ変更の淡色表示)。

私の活動では:

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>

スタイル.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>
4

1 に答える 1

0

使用しているコードは現在の画面の明るさのみを変更しますが、投稿するコードはシステムの明るさを変更します。

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

は 0 ~ 255brightの整数値です。

ただし、この方法では画面の明るさは更新されません。そのため、非表示のアクティビティを呼び出して閉じ、画面の明るさを更新する必要があります。

詳細はこちら。

[編集]

これをマニフェストに追加してみてください:

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

[編集]

これも追加してみてください:

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
于 2013-01-20T13:25:18.470 に答える