やまものブログ

メモ書きブログです (^_^;A

フォトフレームアプリ (1/4)

昨年12月中旬から、年賀状の宛名印刷とそれに関連した LibreOffice Base の調べ物などをしていました。それも一段落したので、今日から「Androidアプリ開発」を再開します

今週は、

LESSON 28 フォトフレームアプリの画面を作ろう
を動かしました。

フォトフレームアプリは LESSON 28~31 の4回シリーズです。このブログのタイトル末尾の「(1/4)」は4つの LESSON のうちの1つ目の意味です。フォトフレームは実際に作ってみたいアプリなので、ゆっくり進めたいと思っています。


LESSON 28 で遭遇したエラーは既出の下記6点で、今までどおり対策しただけです。

(1) constructor CursorAdapter(Context, Cursor) の deprecated
(2) stopManagingCursor(Cursor) の deprecated
(3) managedQuery(Uri, String, String, String, String) の deprecated
 … 対策) 以上3つの対策は 2014/11/9(日) のブログに記載のとおり
(4) getLastNonConfigurationInstance() の deprecated
 … 対策) 2014/11/17(月) のブログに記載のとおり
(4) ターゲット API が 11 (Android 3.0) にいつの間にか切り替わる
 … 対策) project.properties ファイルの "target=android-11" 末尾を 16 に書き換え
(5) Call requires API level 3 (current min is 1): ...以下省略...
 … 対策) Project → Clean 実行
(6) ソースコードのエラー修正候補の提示中に SIGSEGV で異常終了
 … 対策) Eclipse 再起動


今回のお題であるフォトフレームは「ウィジェット (Widget)」です。

このフォトフレームウィジェット(アプリ?)をエミュレータで実行すると、前回の絵日記アプリが起動しました。「あれ? ウィジェットじゃないの?」と戸惑いました
イメージ 1

前回との違いは、左上に表示されるアプリの名称が "Chapter08" になっているだけ。
とりあえず、上記スクリーンショットの通り、2つの画像を絵日記に追加してみました。


ウィジェットの一覧を確認するため、Android エミュレータ上でホームに移動して、
イメージ 2
をクリックしました。
"WIDGETS" タブをクリックしてウィジェットの一覧に移動します。
さらに1枚ページをめくります。
すると、フォトフレームのウィジェット"Chapter08widget" が左上にありました
イメージ 3

これを長押ししてホームに設定すると、こんなふうに絵日記に登録したものと同じ画像がホームに常時表示されます
イメージ 4

ここでは2回設定の操作を繰り返して、2つのウィジェットを設定しました。

ウィジェットに表示される画像は30分経過すると入れ替わると本に書いてありますが、それも確認できました。正確に 30分かどうかまでは計っていませんが。


今回、自分なりに少し頭を使ったのは、ウィジェットの名称を変更したことです。

サンプルコードではアプリと同じ "Chapter08" でした。それを、ウィジェット一覧のスクリーンショットをよく見ると分かる通り、"Chapter08widget" に変更してみました。

この変更は、文字列のリソース
res/values/strings.xml:
<string name="wid_name">Chapter08widget</string>
を追加して、マニフェストに登録したウィジェット(AppWidget)の項目にある label へ
AndroidManifest.xml:
android:label="@string/wid_name">
のように設定するだけでできました