俺がライダーだ
DESCRIPTION
名古屋 つ部 勉強会 2013年9月 の発表資料ですTRANSCRIPT
俺がライダーだ
@kassy_kz
2013/9/14 名古屋 つ部 勉強会 LT
2013年9月14日土曜日
Effective Android
• 私も少し書かせてもらった
• β版発売中
(宣伝)
http://bit.ly/16WlWeZ
2013年9月14日土曜日
自己紹介• 名前: かっしー (@kassy_kz) (神奈川県)
• 特徴: 健全 とても健全
• 趣味: 自転車 ライダーのサーヴァント(社畜)
2013年9月14日土曜日
自転車たのしい✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
2013年9月14日土曜日
重度の迷子クラスタです
ところが. . .
2013年9月14日土曜日
スマートフォンをマウント
これで迷子の心配ナシ!2013年9月14日土曜日
ところが
グローブはめると操作できない2013年9月14日土曜日
新開発
NFCウィザードグローブ
NFCタグ
NFCタグNFCタグ
NFCタグ NFCタグNFCタグ
NFCタグ
NFCタグ
NFCタグ NFCタグ
全指先にNFCタグを貼り付け2013年9月14日土曜日
10本のNFCタグを駆使して
タッチパネルを使わずにスマホを操作する
これぞ お触り禁止 な端末操作け ん ぜ ん
2013年9月14日土曜日
NFC操作で できること 1
• 任意のアプリの起動• AndroidApplicationRecordという種類のタグを
書き込んでおけば、OSがアプリを起動してくれる
• どのアプリでも起動可能
アプリ起動
2013年9月14日土曜日
NFC操作で できること 2
• URIを飛ばす→アプリが受け取る
• 任意のURLにジャンプなどが可能
• AndroidManifestにURIを受け取る定義が必要
URI取得
2013年9月14日土曜日
ウィザードグローブ対応地図アプリ作った
• Google Maps API V2を使用
• NFCをかざすと - 現在地へ移動 - スクロール - 拡大縮小が可能
2013年9月14日土曜日
ところが . . .
Maps API V2ではルート案内ができない. . .
川崎駅どこ?
2013年9月14日土曜日
NFCだけでGoogle Maps アプリを操作したい
2013年9月14日土曜日
NFCでタッチパネルを操作する秘策
2013年9月14日土曜日
基本構成
アプリ
Android OS
一般アプリ(GoogleMaps)
デバイスドライバ
通常タッチイベント 偽タッチイベント NFC
特権アプリ(要Root)
今回開発
2013年9月14日土曜日
コード
<uses-permission android:name="android.permission.INJECT_EVENTS"/>
AndroidManifest.xml
とても危険なパーミッションです。このパーミッションを宣言しただけでAndroidSDKはビルドを拒んできます
2013年9月14日土曜日
コード/** * 単純なタップを再現するタスク **/public static class SimpleTapEventSender extends AsyncTask<Integer, Integer, Integer> {
@Override protected Integer doInBackground(Integer... params) { Log.i(TAG, "pushsync aaa"); if(params.length < 2 ) return null; Instrumentation ist = new Instrumentation(); MotionEvent event;
event = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, params[0], params[1], 0); ist.sendPointerSync(event); wait_msec(300); event = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, params[0], params[1], 0); ist.sendPointerSync(event); return null; }}
単純なタップイベントを発生させるコード2013年9月14日土曜日
コード/** * ムーブイベントを再現するタスク **/public static class SlideEventSender extends AsyncTask<Integer, Integer, Integer> { @Override protected Integer doInBackground(Integer... params) { if(params.length < 4 ) return null; int count = 20; // Down Instrumentation ist = new Instrumentation(); MotionEvent event = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, params[0], params[1], 0); ist.sendPointerSync(event); wait_msec(300); // Move for(int i=0; i<count; i++) { MotionEvent event21 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_MOVE, ((count - i) * params[0] + i * params[2]) / count, ((count - i) * params[1] + i * params[3]) / count, 0); ist.sendPointerSync(event21); wait_msec(100); } // Up MotionEvent event3 = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, params[2], params[3], 0); ist.sendPointerSync(event3); return null; }}
スライドイベントを発生させるコードhttp://bit.ly/18k7CUp
2013年9月14日土曜日
NFCウィザードグローブ動作デモ
2013年9月14日土曜日
このNFCウィザードグローブで
俺は最強の健全ライダーになる
2013年9月14日土曜日
ところが
こんな商品が・・・http://bit.ly/tXgOJX
2013年9月14日土曜日
あれ...
2013年9月14日土曜日
僕の苦労は.... 存在意義は...
2013年9月14日土曜日
絶望が俺のゴールだ
2013年9月14日土曜日
申し訳ありませんでした
発表は以上ですご静聴ありがとうございました
2013年9月14日土曜日