サービスからAndroidデバイスの明るさを変更したい。私はこれに関するスタックオーバーフローに関する多くの質問を見てきましたが、それらのどれも私の問題を解決していません。
settingsMangerで明るさを設定したり、新しいアクティビティを開始したりするなど、すべてのことを行いましたが、どれもうまくいきません。
サービスからAndroidデバイスの明るさを変更したい。私はこれに関するスタックオーバーフローに関する多くの質問を見てきましたが、それらのどれも私の問題を解決していません。
settingsMangerで明るさを設定したり、新しいアクティビティを開始したりするなど、すべてのことを行いましたが、どれもうまくいきません。
としてみてください
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS,
BRIGHTNESS_Value);
Manifest.xml にアクセス許可を追加します。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
</manifest>
編集:次のように試してください:
public class ExampleService extends Service {
@Override
public void onCreate() {
// The service is being created
// set SCREEN_BRIGHTNESS
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS,
BRIGHTNESS_Value);
/// start new Activity
Intent intent = new Intent(getBaseContext(), ExampleActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
}
@Override
public IBinder onBind(Intent intent) {
// A client is binding to the service with bindService()
return mBinder;
}
}
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
}
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
this.finish();
}
}
トーストの後に終了を呼び出しても機能します。私はそれを試してみました。
実際、ダミーアクティビティを呼び出さなくても機能します。設定で明るさに値を正しく入れていても、ディスプレイの明るさが(目に見えるように)変化するのを見ることはありません。
アプリがバックグラウンドで実行されているときに [設定] > [ディスプレイ] > [明るさ] に移動すると、ディスプレイの明るさの変化が表示されます。
これがなぜなのかはわかりませんが。
見つかった答え : 非表示のアクティビティを作成し、finish() しないでください。アクティビティですべての変更を行う
ダミー アクティビティのコード:
public class DummyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dummy_layout);
int progress = getIntent().getIntExtra("brightness", 0);
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = progress/255.0f;
getWindow().setAttributes(layoutParams);
Toast.makeText(this, "Came in Dummy Activity", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}