SlideShare a Scribd company logo
1 of 40
Download to read offline
中二病でも開発がしたい
2013年5月6日月曜日
自己紹介
■名前
かしもと
@kassy_kz
■特徴
 健全
 とても健全
■好きなもの
 仮面ライダー
2013年5月6日月曜日
今時の仮面ライダー
ベルト 指輪
NFCタッチ
仮面ライダーウィザード
2013年5月6日月曜日
ライダー沼...
ベルト
6800円
初期武装
4500円
中間形態
4000円
最終武器
5000円
ほか多数の指輪 400円∼1000円
2013年5月6日月曜日
買えるかっっ!!
2013年5月6日月曜日
自分で作るしかない!
俺が、変身する
2013年5月6日月曜日
が
変身シーケンスに残念な点が....
2013年5月6日月曜日
重大な問題が...
スリープ状態 画面ロック 待受画面
無反応 無反応 反応する!
2013年5月6日月曜日
ウィザードリングは
最高のNFCチェックアイテム
反応したら
発光するのだぜ
(余談)
2013年5月6日月曜日
スリープ解除&ロック解除
しないとNFCは有効にならない
2013年5月6日月曜日
某有名水族館NFCサービスの場合
2013年5月6日月曜日
某ス⃝ート家電の場合
アプリ起動
タッチ可能
(こんなに画面遷移が... )
2013年5月6日月曜日
不便じゃね?
2013年5月6日月曜日
AndroidのNFCが
常時反応するように
改造してみた...
本題
2013年5月6日月曜日
探す
ACTION_TAG_DISCOVERED
ソースコード検索サービス
http://tools.oesf.biz/android-4.2.0_r1.0/
テキトーな文言
2013年5月6日月曜日
ソースコード読む
void applyRouting(boolean force) {
 
// configure NFC-EE routing
if (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 polling
if (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日月曜日
読む
// Screen state, used by mScreenState
static 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 polling
if (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日月曜日
改造する
// Screen state, used by mScreenState
static 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 polling
if (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日月曜日
実験成功
スリープ状態でも、NFCが反応する
スリープ状態 画面ロック 待受画面
反応する!反応する!反応する!
2013年5月6日月曜日
さらに仕込む
//スリープ状態から復帰する
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日月曜日
実験成功
スリープ状態からNFCタッチだけでアプリ起動
スリープ状態 画面ロック 待受画面
反応する!反応する!反応する!
アプリ起動
2013年5月6日月曜日
(それはセキュリティ的にどうなんだ...)
スライドロックだけ無効にして
セキュリティロックは無効にしないような
実装にもできそう(やってない)
2013年5月6日月曜日
NFC処理のシーケンス
package/app/Nfc
(システムアプリ)
external/libnfc-nci
みんなのNFCアプリアプリ
フレームワーク
デバイス制御
ライブラリ
①NFA_Enable
(コールバック登録)
②コールバック
③intent発行(broadcast)
今回編集
2013年5月6日月曜日
この改造で
NFCの真の力を引き出す
名付けて、フルタイムNFC
2013年5月6日月曜日
フルタイムNFC改造まとめ
• 変更する箇所は
package/app/Nfc/src/com/android/nfc/NfcService.java
• ROM焼きをせずとも、改造したアプリをインストール
すればフルタイムNFCが実現可能
- systemアプリなのでroot権限いるのですが...
• ポーリングモードを決める定数の
値を変えるだけで良かった
- NFCが反応する状態を変更できるような設計
- 将来のバージョンアップによってはもしかしたら...
• パーミッションを追加すればキーロック通過も可能...
2013年5月6日月曜日
で?
それ何がうれしいの?
上司(ゴースト)
2013年5月6日月曜日
私の、最高のNFC体験
2013年5月6日月曜日
スリープ解除 ロック解除 ポージング タッチ
スリープまでにポーズ完了が必要
・ポージングは制限
・失敗のリスク!
ダサい
残念
残念じゃない
フルタイムNFCが変身シーケンスに与える影響
通常
ポージング
タッチ
ポーズ待機時間が無限
・ポージング自由
・失敗しない!
フルタイムNFCなら
2013年5月6日月曜日
これぞ最高のNFC体験
2013年5月6日月曜日
そんなことして
消費電力は大丈夫なんか?
あ?
上司(ゴースト)
エコはどうした?
エコこそ正義!
エコを蔑
2013年5月6日月曜日
どいつもこいつも
エコ、エコ、エコ!!
2013年5月6日月曜日
• 測定条件
 - バッテリー95%∼0まで時間計測
 - ディスプレイ常時オン(細工有り)
- 無線LANオン
 - その他の操作を一切しない
- JCROMのテーマは健全に
• あくまで個人レベルの超簡易計測です。
測定条件・結果の信憑性など、責任は一切負えません
バッテリー持ちを計測してみた
2013年5月6日月曜日
バッテリー持ちを計測してみた
•結果
通常(NFCオフ) フルタイムNFC
バッテリー尽きるまで
461分
バッテリー尽きるまで
424分
バッテリー残量(%)
バッテリー残量(%)
時間
(分)
時間
(分)
2013年5月6日月曜日
バッテリー持ちを計測してみた
•結果
通常(NFCオフ) フルタイムNFC
バッテリー尽きるまで
461分
バッテリー尽きるまで
424分
バッテリー残量(%)
バッテリー残量(%)
時間
(分)
時間
(分)
あれ?
2013年5月6日月曜日
ごめんなさい
たぶん測定方法がまずいです
2013年5月6日月曜日
まだだ、まだ終わらんよ
2013年5月6日月曜日
電流を計測してみた
•結果
通常(NFCオフ)
290mA
通常(NFCオン)
290mA
機内モード
290mA
2013年5月6日月曜日
電流を計測してみた
•結果
通常(NFCオフ)
290mA
通常(NFCオン)
290mA
機内モード
290mA
あれ?
2013年5月6日月曜日
絶望が俺のゴールだ
2013年5月6日月曜日
本当に申し訳ありませんでした
ご静聴ありがとうございました
2013年5月6日月曜日

More Related Content

More from Kazutoshi Kashimoto

2015 11 08_つ部ハッカソン
2015 11 08_つ部ハッカソン2015 11 08_つ部ハッカソン
2015 11 08_つ部ハッカソンKazutoshi Kashimoto
 
最速フォトグラファーによるカメラ講座
最速フォトグラファーによるカメラ講座最速フォトグラファーによるカメラ講座
最速フォトグラファーによるカメラ講座Kazutoshi Kashimoto
 
Firefoxosハンズオン 環境構築
Firefoxosハンズオン 環境構築Firefoxosハンズオン 環境構築
Firefoxosハンズオン 環境構築Kazutoshi Kashimoto
 
Android最速のフォトグラファーに、俺はなる!
Android最速のフォトグラファーに、俺はなる!Android最速のフォトグラファーに、俺はなる!
Android最速のフォトグラファーに、俺はなる!Kazutoshi Kashimoto
 
FirefoxOSアプリ開発 JSとの健全な付き合い方
FirefoxOSアプリ開発 JSとの健全な付き合い方FirefoxOSアプリ開発 JSとの健全な付き合い方
FirefoxOSアプリ開発 JSとの健全な付き合い方Kazutoshi Kashimoto
 

More from Kazutoshi Kashimoto (9)

ももちゃんおまかせ隊
ももちゃんおまかせ隊ももちゃんおまかせ隊
ももちゃんおまかせ隊
 
2015 11 08_つ部ハッカソン
2015 11 08_つ部ハッカソン2015 11 08_つ部ハッカソン
2015 11 08_つ部ハッカソン
 
最速フォトグラファーによるカメラ講座
最速フォトグラファーによるカメラ講座最速フォトグラファーによるカメラ講座
最速フォトグラファーによるカメラ講座
 
絶望しない! コミケ
絶望しない! コミケ絶望しない! コミケ
絶望しない! コミケ
 
Firefoxosハンズオン 環境構築
Firefoxosハンズオン 環境構築Firefoxosハンズオン 環境構築
Firefoxosハンズオン 環境構築
 
Android最速のフォトグラファーに、俺はなる!
Android最速のフォトグラファーに、俺はなる!Android最速のフォトグラファーに、俺はなる!
Android最速のフォトグラファーに、俺はなる!
 
Firefoxosハンズオン
FirefoxosハンズオンFirefoxosハンズオン
Firefoxosハンズオン
 
俺がライダーだ
俺がライダーだ俺がライダーだ
俺がライダーだ
 
FirefoxOSアプリ開発 JSとの健全な付き合い方
FirefoxOSアプリ開発 JSとの健全な付き合い方FirefoxOSアプリ開発 JSとの健全な付き合い方
FirefoxOSアプリ開発 JSとの健全な付き合い方
 

中二病でも開発がしたい