少し前に、コンパスの記事を書いていたのですが、
その際に、「コンパスを App Widgets で作ったらどうなるんだろう?」
という疑問が発生したので、作ってみました。
サクサクっと作って、実行させてみると、以下の実行結果。。。

「ジェットを表示できま」
???
おそらく、「ウィジェットを表示できません」といいたいのだろうが、、表示領域が1セル区画しかないので、エラーメッセージが文字切れしたらしい。。。
やったことは、後々、コンパスの部品を再利用できるように、コンパスをソースコードベースで作成し、
xml ファイルから、同部品を参照させたのですが、受け付けてくれないみたい。
部品自体は、単体で正しく動作することを検証済みだったので、かなり悩んだのですが、ヘルプを読んでみると、以下のような記述が・・・。
Creating the App Widget layout is simple if you're familiar with Declaring Layout in XML.
However, you must be aware that App Widget layouts are based on RemoteViews,
which do not support every kind of layout or view widget.A RemoteViews object (and, consequently, an App Widget) can support the following layout classes:
* FrameLayout
* LinearLayout
* RelativeLayoutAnd the following widget classes:
* AnalogClock
* Button
* Chronometer
* ImageButton
* ImageView
* ProgressBar
* TextViewDescendants of these classes are not supported.
・・・。
残念ながら、今回真面目に作ったようなカスタムウィジットは配置できないらしいorz...
試しに AnalogClock を配置してみると、こんな感じ(↓)で簡単に入るし、

Chronometer でも、やっぱり、こんな感じ(↓)で簡単に入る。。。

※ちなみに、これらのオブジェクトにアクセスする場合には、RemoteViews クラスで簡単にアクセスできる
RemoteViews クラスのメソッド一覧をみてみると、setChronometer() や setProgressBar() というのがあって、ちょうど、AppWidgets がサポートしているクラスと一致するので、どうやら、それらの組み合わせで作るのが正解のようです。。。
なんとかならないのかーーーと、apply() ってのでサポート外のものを渡してみるも、結果は、「ジェットを表示できま」。。。
今回やりたいことは、「Compass の針を動的に Path で描画する」なのですが、RemoteViews の行く手に阻まれ、さっぱり上手くいかず・・・。
で、
徹夜で5時間粘った結果、以下のように成功しました!

ホームスクリーン上で、ぐりぐり動く様は、結構気持ちいいです。
ちなみに、16個登録すると、以下のような感じ。

今日のところは、時間切れなので、ここまでなのですが、色々とソースコード的なネタを収集できたので、次回報告します。
※これから出社(眠)。。。