Android系统中默认支持的最多touch点数是16个,一般情况下点击数也达不到这么多,这个16是哪里定义的呢,这里记录一下,
在frameworks/native/services/inputflinger/InputDispatcher.cpp中有
186static bool validateMotionEvent(int32_t action, int32_t actionButton, size_t pointerCount,
187 const PointerProperties* pointerProperties) {
188 if (! isValidMotionAction(action, actionButton, pointerCount)) {
189 ALOGE("Motion event has invalid action code 0x%x", action);
190 return false;
191 }
192 if (pointerCount < 1 || pointerCount > MAX_POINTERS) {
193 ALOGE("Motion event has invalid pointer count %zu; value must be between 1 and %d.",
194 pointerCount, MAX_POINTERS);
195 return false;
196 }
197 BitSet32 pointerIdBits;
198 for (size_t i = 0; i < pointerCount; i++) {
199 int32_t id = pointerProperties[i].id;
200 if (id < 0 || id > MAX_POINTER_ID) {
201 ALOGE("Motion event has invalid pointer id %d; value must be between 0 and %d",
202 id, MAX_POINTER_ID);
203 return false;
204 }
205 if (pointerIdBits.hasBit(id)) {
206 ALOGE("Motion event has duplicate pointer id %d", id);
207 return false;
208 }
209 pointerIdBits.markBit(id);
210 }
211 return true;
212}
从
192 if (pointerCount < 1 || pointerCount > MAX_POINTERS) {
193 ALOGE("Motion event has invalid pointer count %zu; value must be between 1 and %d.",
194 pointerCount, MAX_POINTERS);
195 return false;
可以看到,最大点数是MAX_POINTERS,
定义在frameworks/native/include/input/Input.h
#define MAX_POINTERS 16
119/*
120 * Maximum number of pointers supported per motion event.
121 * Smallest number of pointers is 1.
122 * (We want at least 10 but some touch controllers obstensibly configured for 10 pointers
123 * will occasionally emit 11. There is not much harm making this constant bigger.)
124 */
125#define MAX_POINTERS 16
126
127/*
128 * Maximum number of samples supported per motion event.
129 */
130#define MAX_SAMPLES UINT16_MAX
131
132/*
133 * Maximum pointer id value supported in a motion event.
134 * Smallest pointer id is 0.
135 * (This is limited by our use of BitSet32 to track pointer assignments.)
136 */
137#define MAX_POINTER_ID 31
这里也定义了最大的POINTER_ID是31
参考资料