Flex、AIR、Java、Androidなど

Archive for 2月 20th, 2009

2/22追記:またしてもeggさまに教えて頂いたのですが、センサの値を毎回比較するのは遅い&精度が悪いです。振られたことを検知したら一定時間の値を配列に貯めて、処理に振り分ける際に一度だけ比較した方がいいと思います。
2/20追記:eggさまにコメントで教えて頂き、振動の強弱で押下するボタンを振り分けることができるようになりました。弱く振るとメニュー、強く振るとbackボタンを押下するイベントを送信します。変更したのはShakableActivity.javaの真ん中くらいです。ありがとうございました。動画も追加しときます。
変更前:一定の強さ以上の振動を引き金に「メニューボタンが押された」イベントを送信

変更後:弱い振動でメニューボタン、強い振動でbackボタンを押下のイベントを送信

G1/Dev Phoneはメニューボタンが小さい上押しにくい位置にあり、メニューを何度も押すようなアプリケーションでは私はイライラしてしまっていました。
ので、端末を振ることで加速度センサに振動を感知させ、それでもって「押しにくいボタン押したこと」を代用するようなことができないかなと思いつき、色々見てるうちにKeyDownイベントをプログラム的に発生させることも、加速度で振動を検知することも可能なようなのでActivityを継承したShakableActivityというのを作ってみました。
加速度センサはGrandNatureさまのAndroid – 加速度センサー再び、
KeyEventの方はMy life with Android :-)さまのGenerating keypresses programmatically、
本当にありがとうございます。
ちなみに私が自分で書いたところはほぼありません(笑)。上述のお二人が書かれたソースを組み合わせただけです。
ちなみに
■ android.os.ServiceManager
■ android.view.IWindowManager
の二つはパブリックでないということですのでGenerating keypresses programmaticallyさまのとこから落とす必要があります。
それをパッケージ内に保存したらあとはActivityを継承したShakableActivityを書き、アプリケーションはActivityを継承するのではなくShakableActivityを継承させるだけです。
まあ人にもよると思いますが、
src
- android.os
- ServiceManager.java
- android.view
- IWindowManager.java
- com.example.ShakableActivity
- KeyDownGenerator.java
- ShakableActivity.java
- com.example
- 実際に利用するクラス群
というような感じになるのではないでしょうか。ShakavleActivityはKeyDownGeneratorのサブクラス、実際に利用するクラス群はShakableActivityのサブクラスです。
ソースは以下。


Categories

 

2009年2月
« 1月   3月 »
 1
2345678
9101112131415
16171819202122
232425262728  

About

Author: tachibana

  • ちょっとしたことはTwitterに書いています。こっちはアプリの公開等の時に更新されます。
  • 最近はもっぱらJavaとObjective Cです。AS3は飽きました。
  • スクリプト言語ではPerlが好きでしたが最近はGAE/Jで何でもやってます。
  • Linuxは自宅サーバー建てるのがやっとのレベルです。前の会社で何日も徹夜してやったのはいい思い出です。
  • アプリへのご要望などご意見等ありましたらお気軽にご連絡下さい。

Alternative content here