android.service.dreams.DreamServiceを使ってみる

2012-11-14T00:00:00+00:00 Android Java

Android4.2から追加された模様なDreamService API(公式的にはDayDreamかと)をさっそく使ってみた。単純に言うとスクリーンセーバー機能。

AndroidManifest.xml

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="sample.test"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:allowBackup="false">

        <service android:name="SampleDreamService">
            <intent-filter>
                <action android:name="android.service.dreams.DreamService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data android:name="android.service.dream" android:resource="@xml/dream" />
        </service>
    </application>
</manifest>

DreamServiceはService APIsなのでで追加する。でアクションインテントにandroid.service.dreams.DreamServiceを設定。あとDreamの設定としてを指定する

res/xml/dream.xml

<dream xmlns:android="https://schemas.android.com/apk/res/android" />

とりあえず設定項目は http://developer.android.com/reference/android/R.styleable.html#Dream を参照

SampleDreamService.java

package sample.test;

import android.service.dreams.DreamService;

public class SampleDreamService extends DreamService {
    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();

        setInteractive(false);
        setFullscreen(true);
        setContentView(new SampleView(this));
    }
}

大体はドキュメント通りでそのままですが、恐らくはDreamが開始された際にはonDreamingStartedが呼び出される。で、停止した場合にはonDreamingStopped等が呼び出されるんだと思われる。そこは未検証

SampleViewは以前書いたのでそちらを参照

エミュレータで動かす

インストールすると、「設定」 -> 「ディスプレイ」 -> 「スクリーンセーバー」に

というように出るようになる。で作ったやつを選択し右下のタイミングを変更しておく(変更しておかないと場合によって動作しない)。でエミュレーターなんでデフォルトで

スリープしない所にチェック入ってるのでこれを外しておく。っていうかこれ外さないとスリープモードにならないのでDreamが実行されない模様。あとはほっとけばスリープモードになった際に、設定したDreamServiceなスクリーンセーバーが起動する

jetty-maven-plugin+selenium-maven-pluginでintegration-test FuelPHPをやってみる (11) - Smartyを使う -