ちょっと、てこずる? Live Wallpaperの設定
それでは、必要な設定ファイル(XML)を1つずつ説明していきます。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.livewallpaper"> <application android:label="@string/wallpaper_name" android:icon="@drawable/thumbnail"> <service android:name=".FireWallpaperService" android:label="@string/wallpaper_name" android:permission="android.permission.BIND_WALLPAPER"> <!--【1】--> <intent-filter> <action android:name="android.service.wallpaper.WallpaperService" /> <!--【2】--> </intent-filter> <meta-data <!--【3】--> android:name="android.service.wallpaper" android:resource="@xml/wallpaper" /> </service> <activity <!--【4】--> android:label="@string/wallpaper_settings" android:name=".FireWallpaperSettings" android:theme="@android:style/Theme.Light.WallpaperSettings" android:exported="true"> </activity> </application> </manifest>
AndroidManifest.xml
- 【1】WallpaperServiceはサービスとして登録し、その際、パーミッションに「android:permission="android.permission.BIND_WALLPAPER"」が必要
- 【2】登録したServiceのintent-filterには、「<action android:name="android.service.wallpaper.WallpaperService" />」を設定する必要がある
- 【3】meta-dataでLive Wallpaperのリソースを定義。これはres/xml/に作成
- 【4】もし、Live Wallpaperに設定項目が必要なら、activityを登録。activityを登録すると、以下のようにサンプル画面で設定ボタンが表示される
<?xml version="1.0" encoding="utf-8"?> <wallpaper <!--【5】--> xmlns:android="http://schemas.android.com/apk/res/android" android:thumbnail="@drawable/thumbnail" <!--【6】--> android:description="@string/description" <!--【7】--> android:settingsActivity="com.example.android.livewallpaper.FireWallpaperSettings" /> <!--【8】-->
res/xml/<任意>.xml
- 【5】Live WallpaperのXMLリソースを定義。このリソース定義で【6】サムネイル、【7】説明を定義すると、以下のようにLive Wallpaper起動画面に反映される
- 【8】設定画面はここで、FQCNで指定する必要がある
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen <!--【9】--> xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/settings"> <ListPreference android:key="@string/preference_key" <!--【10】--> android:title="@string/settings_title" <!--【11】--> android:summary="@string/settings_summary" <!--【12】--> android:entries="@array/entries" <!--【13】--> android:entryValues="@array/values" /> <!--【14】--> </PreferenceScreen>
res/xml/<任意>.xml
- 【9】PreferenceActivityのリソース定義ファイルもXMLで定義
- 【10】設定項目のキー、【11】タイトル、【12】説明、【13】項目、【14】項目に対する値を設定。今回は複数の候補から1つを選択させたいので、ListPreferenceを使用したが、目的に応じて設定を変更してほしい
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <!--【15】--> <string-array name="entries"> <!--【16】--> <item>Strong</item> <item>Middle</item> <item>Low</item> </string-array> <string-array name="values"> <!--【17】--> <item>60</item> <item>120</item> <item>150</item> </string-array> </resources>
res/values/<任意>.xml
- 【15】ListPreferenceのリスト内容をXML定義ファイルとして切り離している
- 【16】string-arrayでリスト項目を定義し、【17】同じくstring-arrayで項目に対する値を定義。項目の値は数値だが、integer-arrayは使用できない。プログラム側で文字列として取得し、Integer.parseInt(String)で数値に変換する必要がある
設定画面は下記のようなイメージです。
また、設定項目は、壁紙選択のトップ画面からも呼び出しできるようになります。
Copyright © ITmedia, Inc. All Rights Reserved.