最近、自分が普段使っている端末(HTC J One)のアップデートがありました。
Android4.2になったんで4.2ならではの何かをしてみようかと。
で、1コ。
Android4.2からロック画面でもウィジェットを置けるようになりました。
GooglePlayから落としてきたウィジェットもこれに対応してたりしてなかったり。。
ロック画面でウィジェット出すのって大変なのかなぁと思い調べてみました。
意外に簡単です。
普通のウィジェットの作り方は知っているものとして
“AndroidManifest.xml”の”receiver”の要素の”meta-data”の属性値である
“android:resource”で指定してあるXMLファイルをいじるだけでいけるらしい。
こんなウィジェットがあるとしたら
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/layout_widget" android:minHeight="@dimen/widget_height" android:minWidth="@dimen/widget_width" android:previewImage="@drawable/ic_launcher" android:resizeMode="horizontal|vertical" android:updatePeriodMillis="1800000" />
こうするだけでいいらしい。
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialKeyguardLayout="@layout/layout_widget" android:initialLayout="@layout/layout_widget" android:minHeight="@dimen/widget_height" android:minWidth="@dimen/widget_width" android:previewImage="@drawable/ic_launcher" android:resizeMode="horizontal|vertical" android:updatePeriodMillis="1800000" android:widgetCategory="keyguard|home_screen" />
ポイントは以下の2行。
android:initialKeyguardLayout=”@layout/layout_widget” ← ロック画面で使うlayoutを指定。
android:widgetCategory=”keyguard|home_screen” ← ロックで使います|ホームでも使います って意味。
“Keyguard”ってのはロック画面のこと。
“home_screen”を消したらロック画面専用になるっぽい。
“initialLayout”と”initialKeyguardLayout”の値を異なるものにすれば
それぞれのデザインのウィジェットが置けますね。
試しにバッテリー情報を表示するウィジェットを作ってみましたが
HTC J One(Android4.2にアップデート後)でうまくいきました。
よかったよかった。
でもこの端末、ロック画面のウィジェットは1コしか置けないのでしょうか?
GalaxyNexusはもっと置けた気がするんですが。
HTCに去勢されてしまってますのね。。