Android DreamServiceのsettingsActivity

2013-02-27T00:00:00+00:00 Android Java

たまたま見ていたら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で参照可能な模様

PHPUnitでSingleton+staticメソッドをテストするケース Backbone.jsのRouter/Historyを使ってみる