Android DreamServiceのsettingsActivity
たまたま見ていたらandroid.service.dreamで指定出来るDayDreamの定義XMLでsettingsActivityっていうのがあるのに気づいたのでやってみた
で先にどういうことになるのかだけいうと
というように作ったDreamServiceの右側に設定を行うPreferenceActivityを起動できるアイコンが付く。まぁクリックしたらどうなるのかっていう所までは省略
dream.xml
<dream
xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="sample.test/.SampleDreamSettingActivity" />
っていう感じでandroid:settingsActivityを設定する。
SampleDreamSettingActivity.java
package sample.test;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
public class SampleDreamSettingActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
FragmentTransaction tx = getFragmentManager().beginTransaction();
tx.replace(android.R.id.content, new SamplePreferenceFragment());
tx.commit();
}
public static class SamplePreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
addPreferencesFromResource(R.xml.prefs);
}
}
}
PreferenceActivity及びPreferenceFragmentを使った設定画面の構築を行うクラスを作る。R.xml.prefsは省略
一応これだけ。んでもってDreamServiceを継承したクラス上から
package sample.test;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.service.dreams.DreamService;
public class SampleDreamService extends DreamService {
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
setInteractive(false);
setFullscreen(true);
setContentView(new SampleView(this));
}
}
な感じでSharedPreferencesで参照可能な模様