LiveWallpaper(2)設定を作成する


前回、LiveWallpaper(1)基礎編では、LiveWallpaperの作成方法を紹介しました。

本エントリでは、LiveWallpaperを壁紙へ設定する際にユーザーに入力操作を行わせることができる設定画面の作成方法を紹介します。

前回LiveWallpaper(1)基礎編のエントリを踏まえ解説していきますので、一度目を通しておくことをお勧めします。

■設定項目を作成する

LiveWallpaperを作成する際に、AndroidManifestファイルへ入力する必要があるものは以下でした。
・uses-feature要素に android:name=”android.software.live_wallpaper”
・serviceとして WallpaperService を登録
・android:permission=”android.permission.BIND_WALLPAPER”
・meta-data タグに 設定用のリソースを指定する

上記の4つのうち、meta-dataタグに指定した設定用のリソースファイルは、前回は空のXMLファイルを指定していました。

今回は、以下XMLファイルのように指定することで、図のようにiconの設定と説明文の設定を行うことができます。

res_sample.xml

<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
  android:thumbnail="@drawable/tbicon"
  android:description="@string/explain_text"
  android:settingsActivity="org.jp.techbooster.sample.tcblivewallpaper2.SettingSample" />

res_sample.xmlファイルの5行目で指定しているActivityは以下の内容になります。
PreferenceActivityにて、preference設定用のXMLファイルをロードしているのみとなります。
設定画面を簡単に作るで紹介した内容をそのまま利用していますので、本エントリではPreferenceActivityの使用方法については割愛します。

SettingSample.java

public class SettingSample extends PreferenceActivity  {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.prefsetting);

    }

Activityの追加を行う為、Manifestファイルへの登録を忘れないようにしましょう。
下記ソースコード4行目の通り、android:exported要素(アクティビティを他のアプリケーションから起動可能にするか否か)をtureに指定しない場合下記エラーにあたります。

Permission Denial: starting Intent { cmp=org.jp.techbooster.sample.tcblivewallpaper2/ ¥
.SettingSample (has extras) } from ProcessRecord{4096ca705107:com.android.wallpaper.livepicker/10028}

AndroidManifest.xml

	<application android:icon="@drawable/icon" android:label="@string/app_name">
	<activity
            android:name=".SettingSample"
            android:exported="true">
	</activity>
	</application>