2

サービスからAndroidデバイスの明るさを変更したい。私はこれに関するスタックオーバーフローに関する多くの質問を見てきましたが、それらのどれも私の問題を解決していません。

settingsMangerで明るさを設定したり、新しいアクティビティを開始したりするなど、すべてのことを行いましたが、どれもうまくいきません。

4

4 に答える 4

1

としてみてください

   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();
    }
  }
于 2012-07-03T07:10:44.423 に答える
0

トーストの後に終了を呼び出しても機能します。私はそれを試してみました。

実際、ダミーアクティビティを呼び出さなくても機能します。設定で明るさに値を正しく入れていても、ディスプレイの明るさが(目に見えるように)変化するのを見ることはありません。

アプリがバックグラウンドで実行されているときに [設定] > [ディスプレイ] > [明るさ] に移動すると、ディスプレイの明るさの変化が表示されます。

これがなぜなのかはわかりませんが。

于 2013-01-21T13:17:40.597 に答える
0

見つかった答え : 非表示のアクティビティを作成し、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();
}

}

于 2012-07-03T07:56:10.707 に答える
0

私もあなたと同じように欲しかった...

私も見つけられませんでした、最終的に実装する必要がありました...

Androidで周囲の光に応じて明るさを変える

于 2013-01-25T07:19:20.147 に答える