Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

中二病でも開発がしたい

8,730 views

Published on

2013/5/6 横浜AndroidPF部での発表資料

  • Be the first to comment

中二病でも開発がしたい

  1. 1. 中二病でも開発がしたい2013年5月6日月曜日
  2. 2. 自己紹介■名前かしもと@kassy_kz■特徴 健全 とても健全■好きなもの 仮面ライダー2013年5月6日月曜日
  3. 3. 今時の仮面ライダーベルト 指輪NFCタッチ仮面ライダーウィザード2013年5月6日月曜日
  4. 4. ライダー沼...ベルト6800円初期武装4500円中間形態4000円最終武器5000円ほか多数の指輪 400円∼1000円2013年5月6日月曜日
  5. 5. 買えるかっっ!!2013年5月6日月曜日
  6. 6. 自分で作るしかない!俺が、変身する2013年5月6日月曜日
  7. 7. が変身シーケンスに残念な点が....2013年5月6日月曜日
  8. 8. 重大な問題が...スリープ状態 画面ロック 待受画面無反応 無反応 反応する!2013年5月6日月曜日
  9. 9. ウィザードリングは最高のNFCチェックアイテム反応したら発光するのだぜ(余談)2013年5月6日月曜日
  10. 10. スリープ解除&ロック解除しないとNFCは有効にならない2013年5月6日月曜日
  11. 11. 某有名水族館NFCサービスの場合2013年5月6日月曜日
  12. 12. 某ス⃝ート家電の場合アプリ起動タッチ可能(こんなに画面遷移が... )2013年5月6日月曜日
  13. 13. 不便じゃね?2013年5月6日月曜日
  14. 14. AndroidのNFCが常時反応するように改造してみた...本題2013年5月6日月曜日
  15. 15. 探すACTION_TAG_DISCOVEREDソースコード検索サービスhttp://tools.oesf.biz/android-4.2.0_r1.0/テキトーな文言2013年5月6日月曜日
  16. 16. ソースコード読むvoid applyRouting(boolean force) { // configure NFC-EE routingif (mScreenState >= SCREEN_STATE_ON_LOCKED &&mEeRoutingState == ROUTE_ON_WHEN_SCREEN_ON) {Log.d(TAG, "NFC-EE ON");mNfceeRouteEnabled = true;mDeviceHost.doSelectSecureElement();} else {Log.d(TAG, "NFC-EE OFF");mNfceeRouteEnabled = false;mDeviceHost.doDeselectSecureElement();} // configure NFC-C pollingif (mScreenState >= POLLING_MODE) {Log.d(TAG, "NFC-C ON");mNfcPollingEnabled = true;mDeviceHost.enableDiscovery();} else {Log.d(TAG, "NFC-C OFF");mNfcPollingEnabled = false;mDeviceHost.disableDiscovery();}}package/app/Nfc/src/com/android/nfc/NfcService.javaスクリーン状態でNFCポーリングを振り分けしてる!2013年5月6日月曜日
  17. 17. 読む// Screen state, used by mScreenStatestatic final int SCREEN_STATE_UNKNOWN = 0;static final int SCREEN_STATE_OFF = 1;static final int SCREEN_STATE_ON_LOCKED = 2;static final int SCREEN_STATE_ON_UNLOCKED = 3; static final int POLLING_MODE = SCREEN_STATE_ON_UNLOCKED;・・・(省略)void applyRouting(boolean force) { ・・・(省略)// configure NFC-C pollingif (mScreenState >= POLLING_MODE) {Log.d(TAG, "NFC-C ON");mNfcPollingEnabled = true;mDeviceHost.enableDiscovery();} else {Log.d(TAG, "NFC-C OFF");mNfcPollingEnabled = false;mDeviceHost.disableDiscovery();}}package/app/Nfc/src/com/android/nfc/NfcService.javaポーリングモードを設定している定数2013年5月6日月曜日
  18. 18. 改造する// Screen state, used by mScreenStatestatic final int SCREEN_STATE_UNKNOWN = 0;static final int SCREEN_STATE_OFF = 1;static final int SCREEN_STATE_ON_LOCKED = 2;static final int SCREEN_STATE_ON_UNLOCKED = 3; static final int POLLING_MODE = SCREEN_STATE_ON_UNKNOWN;・・・void applyRouting(boolean force) { ・・・// configure NFC-C pollingif (mScreenState >= POLLING_MODE) {Log.d(TAG, "NFC-C ON");mNfcPollingEnabled = true;mDeviceHost.enableDiscovery();} else {Log.d(TAG, "NFC-C OFF");mNfcPollingEnabled = false;mDeviceHost.disableDiscovery();}}package/app/Nfc/src/com/android/nfc/NfcService.java定数を変更するNFC探索の条件が変わる2013年5月6日月曜日
  19. 19. 実験成功スリープ状態でも、NFCが反応するスリープ状態 画面ロック 待受画面反応する!反応する!反応する!2013年5月6日月曜日
  20. 20. さらに仕込む//スリープ状態から復帰するPowerManager.WakeLock wakelock;wakelock = ((PowerManager) mContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK| PowerManager.ACQUIRE_CAUSES_WAKEUP| PowerManager.ON_AFTER_RELEASE, "disableLock");wakelock.acquire(); //スクリーンロックを解除するKeyguardManager.KeyguardLock keylock;KeyguardManager keyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);keylock = keyguard.newKeyguardLock("disableLock");keylock.disableKeyguard();スリープ復帰・ロック解除するコードパーミッション追加<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>2013年5月6日月曜日
  21. 21. 実験成功スリープ状態からNFCタッチだけでアプリ起動スリープ状態 画面ロック 待受画面反応する!反応する!反応する!アプリ起動2013年5月6日月曜日
  22. 22. (それはセキュリティ的にどうなんだ...)スライドロックだけ無効にしてセキュリティロックは無効にしないような実装にもできそう(やってない)2013年5月6日月曜日
  23. 23. NFC処理のシーケンスpackage/app/Nfc(システムアプリ)external/libnfc-nciみんなのNFCアプリアプリフレームワークデバイス制御ライブラリ①NFA_Enable(コールバック登録)②コールバック③intent発行(broadcast)今回編集2013年5月6日月曜日
  24. 24. この改造でNFCの真の力を引き出す名付けて、フルタイムNFC2013年5月6日月曜日
  25. 25. フルタイムNFC改造まとめ• 変更する箇所はpackage/app/Nfc/src/com/android/nfc/NfcService.java• ROM焼きをせずとも、改造したアプリをインストールすればフルタイムNFCが実現可能- systemアプリなのでroot権限いるのですが...• ポーリングモードを決める定数の値を変えるだけで良かった- NFCが反応する状態を変更できるような設計- 将来のバージョンアップによってはもしかしたら...• パーミッションを追加すればキーロック通過も可能...2013年5月6日月曜日
  26. 26. で?それ何がうれしいの?上司(ゴースト)2013年5月6日月曜日
  27. 27. 私の、最高のNFC体験2013年5月6日月曜日
  28. 28. スリープ解除 ロック解除 ポージング タッチスリープまでにポーズ完了が必要・ポージングは制限・失敗のリスク!ダサい残念残念じゃないフルタイムNFCが変身シーケンスに与える影響通常ポージングタッチポーズ待機時間が無限・ポージング自由・失敗しない!フルタイムNFCなら2013年5月6日月曜日
  29. 29. これぞ最高のNFC体験2013年5月6日月曜日
  30. 30. そんなことして消費電力は大丈夫なんか?あ?上司(ゴースト)エコはどうした?エコこそ正義!エコを蔑2013年5月6日月曜日
  31. 31. どいつもこいつもエコ、エコ、エコ!!2013年5月6日月曜日
  32. 32. • 測定条件 - バッテリー95%∼0まで時間計測 - ディスプレイ常時オン(細工有り)- 無線LANオン - その他の操作を一切しない- JCROMのテーマは健全に• あくまで個人レベルの超簡易計測です。測定条件・結果の信憑性など、責任は一切負えませんバッテリー持ちを計測してみた2013年5月6日月曜日
  33. 33. バッテリー持ちを計測してみた•結果通常(NFCオフ) フルタイムNFCバッテリー尽きるまで461分バッテリー尽きるまで424分バッテリー残量(%)バッテリー残量(%)時間(分)時間(分)2013年5月6日月曜日
  34. 34. バッテリー持ちを計測してみた•結果通常(NFCオフ) フルタイムNFCバッテリー尽きるまで461分バッテリー尽きるまで424分バッテリー残量(%)バッテリー残量(%)時間(分)時間(分)あれ?2013年5月6日月曜日
  35. 35. ごめんなさいたぶん測定方法がまずいです2013年5月6日月曜日
  36. 36. まだだ、まだ終わらんよ2013年5月6日月曜日
  37. 37. 電流を計測してみた•結果通常(NFCオフ)290mA通常(NFCオン)290mA機内モード290mA2013年5月6日月曜日
  38. 38. 電流を計測してみた•結果通常(NFCオフ)290mA通常(NFCオン)290mA機内モード290mAあれ?2013年5月6日月曜日
  39. 39. 絶望が俺のゴールだ2013年5月6日月曜日
  40. 40. 本当に申し訳ありませんでしたご静聴ありがとうございました2013年5月6日月曜日

×