Enviar búsqueda
Cargar
Androidの入力システム
•
4 recomendaciones
•
3,468 vistas
magoroku Yamamoto
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 14
Descargar ahora
Descargar para leer sin conexión
Recomendados
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
demuyan
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する
祐司 伊藤
Android起動周りのノウハウ
Android起動周りのノウハウ
chancelab
クロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
Recomendados
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
demuyan
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する
祐司 伊藤
Android起動周りのノウハウ
Android起動周りのノウハウ
chancelab
クロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
CODE BLUE
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方
wata2ki
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
CMake multiplatform build-tool
CMake multiplatform build-tool
Naruto TAKAHASHI
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
Yusuke Shirakawa
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
masayahamazaki
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
CODE BLUE
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
Unity Technologies Japan K.K.
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
i_yudai
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
レシピの作り方入門
レシピの作り方入門
Nobuhiro Iwamatsu
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
WebIDLを見てみる
WebIDLを見てみる
takenspc
マルチコア時代の並列プログラミング
マルチコア時代の並列プログラミング
Akihiko Matuura
Wireguard 実践入門
Wireguard 実践入門
Kazuhiro Nishiyama
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
Continuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
Más contenido relacionado
La actualidad más candente
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
CODE BLUE
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方
wata2ki
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
CMake multiplatform build-tool
CMake multiplatform build-tool
Naruto TAKAHASHI
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
Yusuke Shirakawa
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
masayahamazaki
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
CODE BLUE
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
Unity Technologies Japan K.K.
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
i_yudai
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
レシピの作り方入門
レシピの作り方入門
Nobuhiro Iwamatsu
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
WebIDLを見てみる
WebIDLを見てみる
takenspc
マルチコア時代の並列プログラミング
マルチコア時代の並列プログラミング
Akihiko Matuura
Wireguard 実践入門
Wireguard 実践入門
Kazuhiro Nishiyama
La actualidad más candente
(20)
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
Assembly Definition あれやこれ
Assembly Definition あれやこれ
YoctoをつかったDistroの作り方とハマり方
YoctoをつかったDistroの作り方とハマり方
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
CMake multiplatform build-tool
CMake multiplatform build-tool
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
レシピの作り方入門
レシピの作り方入門
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
WebIDLを見てみる
WebIDLを見てみる
マルチコア時代の並列プログラミング
マルチコア時代の並列プログラミング
Wireguard 実践入門
Wireguard 実践入門
Similar a Androidの入力システム
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
Continuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
CUDAを利用したPIV解析の高速化
CUDAを利用したPIV解析の高速化
翔新 史
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Takefumi MIYOSHI
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
dofilewrite and vn_write
dofilewrite and vn_write
kusabanachi
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
Boost9 session
Boost9 session
freedom404
Moony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinal
PacSecJP
インターネット上のWikiページ上でエッジ側端末のI2Cデバイスの設定と入出力を可能とするIoTシステムの試作
インターネット上のWikiページ上でエッジ側端末のI2Cデバイスの設定と入出力を可能とするIoTシステムの試作
Takashi Yamanoue
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
孝好 飯塚
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
android sola
C++0x in programming competition
C++0x in programming competition
yak1ex
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
mganeko
Effective modern-c++#9
Effective modern-c++#9
Tatsuki SHIMIZU
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
Study Group by SciencePark Corp.
Android Lecture #02 @PRO&BSC Inc.
Android Lecture #02 @PRO&BSC Inc.
Yuki Higuchi
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
Junichi Akita
Similar a Androidの入力システム
(20)
デバドラを書いてみよう!
デバドラを書いてみよう!
Continuation with Boost.Context
Continuation with Boost.Context
CUDAを利用したPIV解析の高速化
CUDAを利用したPIV解析の高速化
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
ものづくりプロジェクトII 一日でわかるArduino入門
ものづくりプロジェクトII 一日でわかるArduino入門
dofilewrite and vn_write
dofilewrite and vn_write
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Boost9 session
Boost9 session
Moony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinal
インターネット上のWikiページ上でエッジ側端末のI2Cデバイスの設定と入出力を可能とするIoTシステムの試作
インターネット上のWikiページ上でエッジ側端末のI2Cデバイスの設定と入出力を可能とするIoTシステムの試作
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
C++0x in programming competition
C++0x in programming competition
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Effective modern-c++#9
Effective modern-c++#9
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
Android Lecture #02 @PRO&BSC Inc.
Android Lecture #02 @PRO&BSC Inc.
自作RISC-VチップでLチカをやってみた
自作RISC-VチップでLチカをやってみた
Más de magoroku Yamamoto
Deep learning入門
Deep learning入門
magoroku Yamamoto
波形で見るBig.little
波形で見るBig.little
magoroku Yamamoto
自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた
magoroku Yamamoto
Oscar compiler for power reduction
Oscar compiler for power reduction
magoroku Yamamoto
Unix v6 セミナー vol. 5
Unix v6 セミナー vol. 5
magoroku Yamamoto
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
magoroku Yamamoto
V6 unix vol.2 in okinawa
V6 unix vol.2 in okinawa
magoroku Yamamoto
Adk2012
Adk2012
magoroku Yamamoto
Android binder-ipc
Android binder-ipc
magoroku Yamamoto
V6 unix in okinawa
V6 unix in okinawa
magoroku Yamamoto
ぐだ生システム#2
ぐだ生システム#2
magoroku Yamamoto
ぐだ生って何
ぐだ生って何
magoroku Yamamoto
Android builders summit slide tour
Android builders summit slide tour
magoroku Yamamoto
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料
magoroku Yamamoto
Poorman’s adk トレーナ
Poorman’s adk トレーナ
magoroku Yamamoto
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
magoroku Yamamoto
Poormans sdk
Poormans sdk
magoroku Yamamoto
Ngk2011 b
Ngk2011 b
magoroku Yamamoto
オレオレ家電
オレオレ家電
magoroku Yamamoto
V6read#4
V6read#4
magoroku Yamamoto
Más de magoroku Yamamoto
(20)
Deep learning入門
Deep learning入門
波形で見るBig.little
波形で見るBig.little
自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた
Oscar compiler for power reduction
Oscar compiler for power reduction
Unix v6 セミナー vol. 5
Unix v6 セミナー vol. 5
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
V6 unix vol.2 in okinawa
V6 unix vol.2 in okinawa
Adk2012
Adk2012
Android binder-ipc
Android binder-ipc
V6 unix in okinawa
V6 unix in okinawa
ぐだ生システム#2
ぐだ生システム#2
ぐだ生って何
ぐだ生って何
Android builders summit slide tour
Android builders summit slide tour
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料
Poorman’s adk トレーナ
Poorman’s adk トレーナ
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
Poormans sdk
Poormans sdk
Ngk2011 b
Ngk2011 b
オレオレ家電
オレオレ家電
V6read#4
V6read#4
Androidの入力システム
1.
Androidの入力システム magoroku15 横浜市在住 会社員
2.
近況 • 最近、横浜市民になった –
6月に新横浜に引っ越し – 隔週末は名古屋に帰ります – IKEAだいすきです、カーシェア便利です • 「ぐだ生」 累計視聴者1万2千人超えた – http://www.ustream.tv/channel/magorokutv • 名古屋geekbarも快調 – http://www.facebook.com/nagoyageekbar
3.
今日の話
タッチスクリーンを例に各 application レイヤの要点を説明 Android eventHubの役割 System server /dev/input Linux タッチスクリーンドラ ドライバ イバと/dev/input hw 入力ディバイス タッチスクリーンの仕 組み
4.
タッチスクリーンの仕組み • 基本的な構造
Y軸 – 0点をGND,軸の終端にVを与える – 押した点の2軸の分圧値を測定 例:Vを5vとしてX軸の電圧が1v,Y軸の電圧が4vとすれ X軸 ば、X-MAXの20%の位置、Y-MAXの80%の位置を押し たと判断 • 4線式の場合X+,X-,Y+,Y-の4線 – X軸を読む場合 X-をGND,X+にVCC,Y-を読み取る – Y軸を読む場合 Y-をGND,Y+にVCC,X-を読み取る
5.
タッチスクリーンコントローラ • タッチスクリーン自体はアナログディバイス –
X軸、Y軸の分圧している – 読み取りには最低ADCが必要 – マイコンでは直接ADCにつないで制御する • Androidでは専用のコントローラで経由で接続 – PMICが兼ねる場合も多い – drivers/input/touchscreenを参照
6.
usbtouchscreen.c static int egalax_read_data(struct
usbtouch_usb *dev, unsigned char *pkt) { if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT) return 0; dev->x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F); dev->y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F); dev->touch = pkt[0] & 0x01; return 1; static struct usbtouch_device_info usbtouch_dev_info[] = { } #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX [DEVTYPE_EGALAX] = { .min_xc = 0x0, .max_xc = 0x07ff, .min_yc = 0x0, .max_yc = 0x07ff, .rept_size = 16, .process_pkt = usbtouch_process_multi, .get_pkt_len = egalax_get_pkt_len, .read_data = egalax_read_data, }, #endif
7.
usbtouchscreen.c static void usbtouch_process_pkt(struct
usbtouch_usb *usbtouch, unsigned char *pkt, int len) { struct usbtouch_device_info *type = usbtouch->type; input_xxxxが/dev/inputの if (!type->read_data(usbtouch, pkt)) 呼び出し return; input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch); if (swap_xy) { input_report_abs(usbtouch->input, ABS_X, usbtouch->y); input_report_abs(usbtouch->input, ABS_Y, usbtouch->x); } else { input_report_abs(usbtouch->input, ABS_X, usbtouch->x); input_report_abs(usbtouch->input, ABS_Y, usbtouch->y); } if (type->max_press) input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press); input_sync(usbtouch->input); }
8.
/dev/input /usr/include/linux/input.h • 使い方
/dev/input/eventNをopen後readして、 struct input_eventを読む struct input_event { struct timeval time; //時間 __u16 type; //種別 __u16 code; // コード __s32 value; //値 };
9.
いろいろあります #define EV_SYN
0x00 #define EV_KEY 0x01 #define EV_REL 0x02 #define EV_ABS 0x03 #define EV_MSC 0x04 #define EV_SW 0x05 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define EV_CNT (EV_MAX+1)
10.
すこし寄り道 • /dev/uinput
– /dev/inputの逆 – 仮想入力装置をioctlで定義 – uinputにeventを書き込むと/dev/inputで読める – VNCサーバ、センサマネージャで利用 – 展示会で自動運転する時に便利
11.
evntHubと関連コード • frameworks/base/libs/ui/EventHub.cpp • frameworks/base/libs/ui/InputReader.cpp
12.
EventHub.cpp bool EventHub::getEvent(RawEvent* outEvent)
{ for (;;) { if (minputbufferが空でなかったら) const struct input_event& iev = mInputBufferData[mInputBufferIndex++]; : outEvent->type = iev.type; outEvent->scanCode = iev.code; : return; } read(pfd.fd, mInputBufferData,sizeof(struct input_event) * INPUT_BUFFER_SIZE); int pollResult = poll(mFDs, mFDCount, -1); } }
13.
InputReader.cpp void InputReader::loopOnce() {
RawEvent rawEvent; mEventHub->getEvent(& rawEvent); process(& rawEvent); } void InputReader::consumeEvent(const RawEvent* rawEvent) { int32_t deviceId = rawEvent->deviceId; { ssize_t deviceIndex = mDevices.indexOfKey(deviceId); InputDevice* device = mDevices.valueAt(deviceIndex); if (device->isIgnored()) { //LOGD("Discarding event for ignored deviceId %d.", deviceId); return; } device->process(rawEvent); } }
14.
ここまで • Inputの仕組みはファイル単位で変更 2.3から? •
もし、2.3対応のマウスパッチがあれば – その修正ファイルを追ってみてください – androidフレームワークのraw入力の仕組みがわかります – 内部コードへの読み替えなどの仕組みがわかります
Descargar ahora