hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

LiveWallpaperでスクリーンタッチしたら呼ばれるアレ

スクリーン上でタップしたときに呼ばれるonCommandメソッドの特性を整理しました。

取得できるイベント

2種類あります。

  • スクリーン上の何も無い場所をタップ
  • スクリーン上でAppIcon移動

なお、AppWidget作成やショートカット作成ではコールされませんでした。移動時はAppIconと同じように呼ばれます。

引数について

onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)

第1引数

action とありますが、「取得できるイベント」で紹介したように二種類取れます。
スクリーン上の何も無い場所をタップandroid.wallpaper.tap
スクリーン上でAppIcon移動android.home.drop

第2, 3, 4引数

コールされたときの座標が渡されます。ちなみにタップ移動した場合は、移動後の値となります。
値は1スクリーン内の数値が返って来るので、maxは画面サイズとなります。ただし、notificationとscreen下のバーがあるためそれらを考慮した値となります。*1
また、onOffsetsChangedがコールされる*2場合はコールされません。

第5引数

extrasですが、特に何も渡ってきません。どんな時に渡ってくるのかな?

第6引数

resultRequestedが常にfalseなのは何故...よく分からないです。

その他の特性

一回のタップで一回だけコールされます。
縦のタップ移動はコールされます、斜めはコールされません。横はonOffsetsChangedがコールされるため呼ばれません。
タップ移動は離した時にコールされます、AppIcon移動は置いた時にコールされます。

*1:左上はnotificationのサイズを加算した値。右下は下バーのサイズを減算した値。

*2:Screenスクロールが行われる