我正在创建一个简单的电子书,但我需要从我的主要活动中更改某些活动的屏幕亮度,从蓝牙接收数据并在书籍运行时仍然在后台运行。 我的问题是:如何将一个函数从MainActivity调用到Page1Activity,或反过来,无论如何。
如果我将此代码放在其中一个活动中,我可以更改活动亮度,但我真的需要将它从一个调用到另一个
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = adjusted;
getWindow().setAttributes(lp);
如果我使用那个页面,页面只会在创建时显示更改,但我不想在收到数据时重新创建页面。
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE,
android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, (int)(255*adjusted));
然后我需要知道是否有办法获取或存储活动以使用getWindow()
,或者是否存在在两个活动之间调用函数的方法,或者是否有其他方法可以执行此操作。
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
volAdjusted, AudioManager.FLAG_SHOW_UI);
答案 0 :(得分:1)
首先添加清单文件的权限。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
然后您可以通过运行以下代码行来更改亮度:
android.provider.Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, brightness);
注意亮度必须是0到255之间的 int 值。
答案 1 :(得分:1)
根据Squonk的建议,我使用了SharedPreferences
,我可以解决我的问题:
MainActivity
SharedPreferences settings =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = settings.edit();
editor.putFloat("Brightness", adjusted);
editor.commit();
所有其他活动
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
preferences.registerOnSharedPreferenceChangeListener(prefListener);
}
SharedPreferences.OnSharedPreferenceChangeListener prefListener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs,String key) {
if (key.equals("Brightness")) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = prefs.getFloat(key, 0.8f);
getWindow().setAttributes(lp);
}
}
};
谢谢你帮我Squonk。