両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン |
multitouch:start [2010/07/04 13:03] – oga | multitouch:start [2011/07/11 21:59] – [Multitouch 対応ハード] oga |
---|
* [[:3d:start|ステレオ 3D 立体視の開発環境まとめ]] | * [[:3d:start|ステレオ 3D 立体視の開発環境まとめ]] |
* [[http://wlog.flatlib.jp/?amount=0&blogid=1&query=multitouch|当 blog より multitouch 関連の情報]] | * [[http://wlog.flatlib.jp/?amount=0&blogid=1&query=multitouch|当 blog より multitouch 関連の情報]] |
| * [[:opengl:devicelist|Android/iOS 端末一覧]] |
| * [[:opengl:cpugpu|Android 端末の CPU/GPU 調査結果]] |
| |
====== Multitouch 対応ハード ====== | ====== Multitouch 対応ハード ====== |
| |
| |
| |
^ PC ^ 同時認識 ^ sensor ^ touch補足 ^ 対応 API ^ display ^ CPU ^ GPU ^ | ^ PC ^ 同時認識 ^ sensor ^ touch補足 ^ 対応 API ^ display ^ CPU ^ GPU ^ |
| HP TouchSmart IQ821jp | 2 点 | optical | NextWindow | Win7 Touch API | 25.5inch 1920x1200 | Core2 Duo P8600 2.4GHz | GeForce 9600M GS | | | HP TouchSmart IQ821jp | 2 点 | optical | NextWindow | Win7 Touch API | 25.5inch 1920x1200 | Core2 Duo P8600 2.4GHz | GeForce 9600M GS | |
| SHARP Meibus PC-NJ70A | ∞? | optical LCD | 開発× | SHARP 独自のみ | 4.0inch 854x480 (sub display) | Atom N270 | GMA950 | | | SHARP Meibus PC-NJ70A | ∞? | optical LCD | 開発× | SHARP 独自のみ | 4.0inch 854x480 (sub display) | Atom N270 | GMA950 | |
| iPhone 2G/3G/iPod touch | 5 点 | capacitive | | iOS (iPhoneOS) | 3.5inch 480x320 | ARM11 412/533MHz | PowerVR MBX | | | iPhone 2G/3G/iPod touch | 5 点 | capacitive | | iOS (iPhoneOS) | 3.5inch 480x320 | ARM11 412/533MHz | PowerVR MBX | |
| iPhone 3GS/iPod touch | 5 点 | capacitive | | iOS (iPhoneOS) | 3.5inch 480x320 | Cortex-A8 600MHz | PowerVR SGX 535 | | | iPhone 3GS/iPod touch | 5 点 | capacitive | | iOS (iPhoneOS) | 3.5inch 480x320 | Cortex-A8 600MHz | PowerVR SGX 535 | |
| iPad 3G/Wi-Fi | 11 点 | capacitive | | iOS (iPhoneOS) | 9.7inch 1024x768 | Cortex-A8 1GHz | PowerVR SGX 535 | | | iPad 3G/Wi-Fi | 11 点 | capacitive | | iOS (iPhoneOS) | 9.7inch 1024x768 | Cortex-A8 1GHz | PowerVR SGX 535 | |
| HTC Desire (X06HT) | 2 点 | capacitive | | Android 2.x | 3.7inch 800x480 | Scorpion 1GHz | AMD Z430 | | | HTC Desire (X06HT) | 2 点 | capacitive | | Android 2.x | 3.7inch 800x480 | Scorpion 1GHz | Adreno 200 (AMD Z430?) | |
| iiyama ProLite T2250MTS | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || | | iiyama ProLite T2250MTS | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || |
| | MouseComputer LuvPad AD100 | 2 点 | capacitive | | Android 2.2 | 10.1inch 1024x600 | Cortex-A9 1GHz x2 | Tegra 250 | |
| | LG Optimus Pad L-06C | 10 点 | capacitive | | Android 3.0 | 8.9inch 1280x768 | Cortex-A9 1GHz x2 | Tegra 250 | |
| |
| |
| |
| |
^ PC ^ 同時認識 ^ sensor ^ touch補足 ^ 対応 API ^ display ^ CPU ^ GPU ^ | ^ PC ^ 同時認識 ^ sensor ^ touch補足 ^ 対応 API ^ display ^ CPU ^ GPU ^ |
| Fujitsu LOOX U G90 | 5 点 | resistive | | Win7 Touch API | 5.6inch 1280x800 | Atom Z520 1.33GHz | GMA500 (PowerVR SGX 535) | | | Fujitsu LOOX U G90 | 5 点 | resistive | | Win7 Touch API | 5.6inch 1280x800 | Atom Z520 1.33GHz | GMA500 (PowerVR SGX 535) | |
| ASUS EeePC T91MT | 2 点 | resistive | | Win7 Touch API | 8.9inch 1024x600 | Atom Z520 1.33GHz | GMA500 (PowerVR SGX 535) | | | ASUS EeePC T91MT | 2 点 | resistive | | Win7 Touch API | 8.9inch 1024x600 | Atom Z520 1.33GHz | GMA500 (PowerVR SGX 535) | |
| ASUS EeePC T101MT | 2 点 | resistive | | Win7 Touch API | 10.1inch 1024x600 | Atom N450 1.66GHz | GMA3150 | | | ASUS EeePC T101MT | 2 点 | resistive | | Win7 Touch API | 10.1inch 1024x600 | Atom N450 1.66GHz | GMA3150 | |
| Lenovo IdeaPad S10-3t | 2 点 | capacitive | | Win7 Touch API | 10.1inch 1024x600 | Atom N450 1.66GHz | GMA3150 | | | Lenovo IdeaPad S10-3t | 2 点 | capacitive | | Win7 Touch API | 10.1inch 1024x600 | Atom N450 1.66GHz | GMA3150 | |
| ASUS EeeTop ET2010AGT | 2 点 | optical | | Win7 Touch API | 20.0inch 1600x900 | AthronII X2 250u 1.6GHz | ATI Mobility Radeon HD 5470 | | | ASUS EeeTop ET2010AGT | 2 点 | optical | | Win7 Touch API | 20.0inch 1600x900 | AthronII X2 250u 1.6GHz | ATI Mobility Radeon HD 5470 | |
| Gateway ZX6800-43 | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | Core2 Duo E7500 2.93GHz | GMA X4500HD | | | Gateway ZX6800-43 | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | Core2 Duo E7500 2.93GHz | GMA X4500HD | |
| Fujitsu FMV F/G60 | 2 点 | optical | | Win7 Touch API | 20.0inch 1600x900 | Core i3-330M 2.13GHz | GMA HD | | | Fujitsu FMV F/G60 | 2 点 | optical | | Win7 Touch API | 20.0inch 1600x900 | Core i3-330M 2.13GHz | GMA HD | |
| HP TouchSmart PC600 1190jp | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | Core i7-720QM 1.6GHz | GeForce GT230 | | | HP TouchSmart PC600 1190jp | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | Core i7-720QM 1.6GHz | GeForce GT230 | |
| SONY VAIO L VPCL139FJ/T | 2 点 | optical | NextWindow | Win7 Touch API | 24.0inch 1920x1080 | Core2 Duo E7600 3.06GHz | GeForce 310M | | | SONY VAIO L VPCL139FJ/T | 2 点 | optical | NextWindow | Win7 Touch API | 24.0inch 1920x1080 | Core2 Duo E7600 3.06GHz | GeForce 310M | |
| IODATA LCD-AD221FB-T | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || | | IODATA LCD-AD221FB-T | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || |
| | Let's note C1 | 2 点 | electromagnetic\\ digitizer + capacitive | 複合 Wacom | Win7 Touch API | 12.1inch 1280x800 | Core i5-502M 2.4GHz | GMA HD | |
| | SHARP IS01/SH-10B/JN-DK01 | 2 点? | capacitive | 開発× | Android 1.6で独自 | 5.0inch 960x480 | Scorpion 1GHz | Adreno 200 (AMD Z430?) | |
| | Toshiba Libretto W100 | 2点 x 2面 | capacitive | 2面とも | Win7 Touch API | 7.0inch 1024x600 x2 | Pentium U5400 1.2GHz | GMA HD | |
| |
| ↓情報提供していただいた物。 |
| |
| ^ PC ^ 同時認識 ^ sensor ^ touch補足 ^ 対応 API ^ display ^ CPU ^ GPU ^ |
| | ONKYO TW317A5 | 2点 | capacitive | | Win7 Touch API | 11.6inch 1366x768 | Aton N450 1.66GHz | GMA3150 | |
| | GREEN HOUSE GH-JTJ223GSHB | 2点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || |
| |
↓その他マルチタッチ可能と判明しているものや発売予定のものなど。 | ↓その他マルチタッチ可能と判明しているものや発売予定のものなど。 |
| Lenovo ThinkPad X201 Tablet | ? | electromagnetic\\ digitizer + capacitive? | 複合 Wacom | Win7 Touch API | 12.1inch 1280x800 | Core i7-640LM | GMA HD | | | Lenovo ThinkPad X201 Tablet | ? | electromagnetic\\ digitizer + capacitive? | 複合 Wacom | Win7 Touch API | 12.1inch 1280x800 | Core i7-640LM | GMA HD | |
| Viliv S10 | 3 点 | resistive | | Win7 Touch API | 10.1inch 1366x768 | Atom Z550 2.0GHz | GMA500 (PowerVR SGX 535) | | | Viliv S10 | 3 点 | resistive | | Win7 Touch API | 10.1inch 1366x768 | Atom Z550 2.0GHz | GMA500 (PowerVR SGX 535) | |
| iPhone 4 | 5? | capacitive | | iOS | 3.5inch 960x640 | Cortex-A8 | PowerVR SGX 535 | | | iPhone 4 / iPod touch 4G | 5? | capacitive | | iOS | 3.5inch 960x640 | Cortex-A8 | PowerVR SGX 535 | |
| Samsung Galaxy S GT-I9000 | ∞? | capacitive | | Android 2.x | 4.0inch 800x480 | Cortex-A8 1GHz | PowerVR SGX 540 | | | Samsung Galaxy S GT-I9000 | ∞? | capacitive | | Android 2.x | 4.0inch 800x480 | Cortex-A8 1GHz | PowerVR SGX 540 | |
| SHARP IS01/SH-10B/JN-DK01 | ? | capacitive | 開発× | Android 1.6で独自 | 5.0inch 960x480 | Scorpion 1GHz | AMD Z430 | | |
| Let's note C1 | ? | electromagnetic\\ digitizer + capacitive | 複合 Wacom | Win7 Touch API | 12.1inch 1280x800 | Core i5-502M 2.4GHz | GMA HD | | |
| Dell SX2210T | 2 点 | optical | NextWindow | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || | | Dell SX2210T | 2 点 | optical | NextWindow | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || |
| HP 2310t | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | モニタのみ || | | HP 2310t | 2 点 | optical | | Win7 Touch API | 23.0inch 1920x1080 | モニタのみ || |
| HP 2209t | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || | | HP 2209t | 2 点 | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || |
| GREEN HOUSE GH-JTJ223GSHB | | optical | | Win7 Touch API | 21.5inch 1920x1080 | モニタのみ || | |
| HP mini 5102 10H/160/Pro | | | | Win7 Touch API | 10.1inch 1366x768 | Atom N450 1.66GHz | GMA3150 | | | HP mini 5102 10H/160/Pro | | | | Win7 Touch API | 10.1inch 1366x768 | Atom N450 1.66GHz | GMA3150 | |
| Toshiba Libretto W100 | | capactive | 2面とも | Win7 Touch API | 7.0inch 1024x600 x2 | Pentium U5400 1.2GHz | GMA HD | | |
| MSI E22T31-ITWH | 2 点 | optical | | Win7 Touch API | 21.tinch 1920x1080 | Celeron T3100 1.9GHz | NVIDIA ION | | | MSI E22T31-ITWH | 2 点 | optical | | Win7 Touch API | 21.tinch 1920x1080 | Celeron T3100 1.9GHz | NVIDIA ION | |
| | MSI Wind Top AE2420 3D | | | touch+3D | Win7 Touch API | | | | |
| |
| |
| |
| |
* [[http://www.msi-computer.co.jp/PC/AIO/AE2220/]] | * [[http://www.msi-computer.co.jp/PC/AIO/AE2220/]] |
* [[http://www.green-house.co.jp/products/lcd/jtj223gshb/index.html]] | * [[http://www.green-house.co.jp/products/lcd/jtj223gshb/index.html]] |
| * [[http://www.mouse-jp.co.jp/luvpad/]] |
| |
++++ | ++++ |
| |
====== API ====== | ====== API ====== |
| |
| |
| |
^ OS ^ 固有 ID 割り振り ^ UP/DOWN イベント ^ マルチタップカウント ^ TimeStamp ^ 頻度 ^ イベントに含まれる情報 ^ 補足 ^ | ^ OS ^ 固有 ID 割り振り ^ UP/DOWN イベント ^ マルチタップカウント ^ TimeStamp ^ 面積 ^ 頻度 ^ イベントに含まれる情報 ^ 補足 ^ |
| Windows 7 WM_TOUCH API | あり dwID | 分離したタッチ点毎に UP/DOWN 状態が含まれる | なし | あり | 選択可能 | 全部の点それぞれの詳細 | Single ならマウスとして扱える | | | Windows 7 WM_TOUCH API | あり dwID | 分離したタッチ点毎に UP/DOWN 状態が含まれる | なし | あり | あり | 選択可能 | 全部の点それぞれの詳細 | Single ならマウスとして扱える | |
| Android OS 2.x | あり pointerId | 個別に発生するが他の点座標も含まれる | なし | あり | 低+History | 全部の点 | | | | Android OS 2.x | あり pointerId | 個別に発生するが他の点座標も含まれる | なし | あり | あり | 低+History | 全部の点 | | |
| iOS (iPhoneOS) | なし(座標値から判定) | 発生した点の座標のみ単独 | あり | なし | 高 | 変化した点だけ | | | | iOS (iPhoneOS) | なし(座標値から判定) | 発生した点の座標のみ単独 | あり | なし | ? | 高 | 変化した点だけ | | |
==== 各 OS ごとのイベント通知の違い ==== | ==== 各 OS ごとのイベント通知の違い ==== |
| |
WM_TOUCH: id4 (x,y) UP | WM_TOUCH: id4 (x,y) UP |
</code> | </code> |
| |
| * なぜか dwID が 3から始まる。 |
| * 複数の UP/DOWN を同時に受け取れる構造だが、イベントは同時に発生しない。必ず個別に発生する。(ドライバの仕様かもしれない) |
| |
| |
=== Android 2.x 以降 === | === Android 2.x 以降 === |
| |
<code> | <code> |
| pointerIndex/pointerId (x,y) |
ACTION_DOWN: 0/id0 (x,y) | ACTION_DOWN: 0/id0 (x,y) |
ACTION_MOVE: 0/id0 (x,y) | ACTION_MOVE: 0/id0 (x,y) |
ACTION_MOVE: 0/id0 (x,y) | ACTION_MOVE: 0/id0 (x,y) |
ACTION_DOWN: 0/id0 (x,y) 1/id1 (x,y) (actionPointerId=1) | ACTION_DOWN: 0/id0 (x,y) 1/id1 (x,y) actionPointerId=1 |
ACTION_MOVE: 0/id0 (x,y) 1/id1 (x,y) | ACTION_MOVE: 0/id0 (x,y) 1/id1 (x,y) |
ACTION_DOWN: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) (actionPointerId=2) | ACTION_DOWN: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) actionPointerId=2 |
ACTION_MOVE: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) | ACTION_MOVE: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) |
ACTION_UP: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) (actionPointerId=0) | ACTION_UP: 0/id0 (x,y) 1/id1 (x,y) 2/id2 (x,y) actionPointerId=0 |
ACTION_MOVE: 0/id1 (x,y) 1/id2 (x,y) | ACTION_MOVE: 0/id1 (x,y) 1/id2 (x,y) |
ACTION_MOVE: 0/id1 (x,y) 1/id2 (x,y) | ACTION_MOVE: 0/id1 (x,y) 1/id2 (x,y) |
ACTION_UP: 0/id1 (x,y) 1/id2 (x,y) (actionPointerId=1) | ACTION_UP: 0/id1 (x,y) 1/id2 (x,y) actionPointerId=1 |
ACTION_UP: 0/id1 (x,y) (actionPointerId=0) | ACTION_UP: 0/id1 (x,y) actionPointerId=0 |
| |
| |
pointerIndex/pointerId (x,y) | |
</code> | </code> |
| |
| * DOWN/UP 発生時、実際に変化したタッチ場所を得るには actionPointerId 番目の情報を参照する。 |
| * イベントの構造上、複数の点の UP/DOWN を同時に受け取ることが出来ない。 |
| |
| |
touchesMoved: (x,y) | touchesMoved: (x,y) |
touchesMoved: (x,y) | touchesMoved: (x,y) |
touchesBegan: (x,y) | touchesBegan: (x,y) |
touchesMoved: (x,y) | touchesMoved: (x,y) |
touchesMoved: (x,y) (x,y) | touchesMoved: (x,y) (x,y) |
touchesBegan: (x,y) | touchesBegan: (x,y) |
touchesMoved: (x,y) (x,y) (x,y) | touchesMoved: (x,y) (x,y) (x,y) |
touchesMoved: (x,y) (x,y) (x,y) | touchesMoved: (x,y) (x,y) (x,y) |
touchesEnded: (x,y) | touchesEnded: (x,y) |
touchesMoved: (x,y) (x,y) | touchesMoved: (x,y) (x,y) |
touchesMoved: (x,y) | touchesMoved: (x,y) |
touchesEnded: (x,y) | touchesEnded: (x,y) (x,y) |
touchesEnded: (x,y) | |
</code> | </code> |
| |
| * 複数の点を同時にタッチ&離したときは、1つの Began/Ended イベントで複数点の情報が送られてくる。 |
| |
| |
====== Multi touch 方式 ====== | ====== Multi touch 方式 ====== |