Getting around system-wide touch slopping

61 views
Skip to first unread message

mako yass

unread,
Aug 21, 2016, 4:27:31 PM8/21/16
to android-platform
You may or may not have noticed that under android(at least, on the phones I have access to, a samsung SII and a Oneplus One) there's a very slight "stickiness" when a touch motion starts. It's referred to as slopping here https://developer.android.com/training/gestures/movement.html . Slopping makes it possible for a user to touch down and touch up without moving the point at all(although false movement events with no actual movement will still fire o_o???). Often, this is a feature you want. It can prevent clicks from being mistaken for scrolls, and I think it may play a role in preventing the point from straying uncontrolably as the locus of pressure changes as a user touches down. Though I doubt, I'm open to the possibility that capacitive touch screens that allowed the locus of pressure to move right from the start of the interaction would just not be usable for everyday touch phone stuff, but we'll see.

You'll be able to see the effects of system-wide slopping on your phone by turning on the pointer location information overlay in android's dev settings. You'll notice that you can rock your finger back and forth slightly when you touch down, and you wont get any touch events. If you move your finger then rock back and forth in the same way, you'll see that there was movement information that wasn't coming through before. It might seem to you that this is too fine-grained for anyone to reasonably worry about, but I do worry, I worry it harms the UX in one underexplored case, possibly fatally.

I'm experimenting with a movement control for games for which the very slight movements system-wide touch slop is masking would be useful and meaningful. The initial stickiness, at least on my Oneplus One (cyanogenmod), seems like it'll give users the impression that the touch controls are less sensitive than they really (once you've moved them a bit and unstuck them). That subliminal void of confidence could prevent them from sticking with it and learning to use it properly. That could prevent the games community at large from realizing that action games on android could potentially be really really good and that there's this way of doing things that gives you more fine-grained control over your speed and direction than a full blown high quality analogue stick would. That's speculation on my part but it's looking pretty optimistic.

Does anyone know if there's an API so low-level that I'd be able to get the raw movement events.. or, information(it might be being dropped before anything called a MotionEvent comes into existence), that's being masked? Or is it baked into the drivers? If no one knows, can anyone tell me who I should talk to?

(btw, I've checked https://developer.android.com/reference/android/view/MotionEvent.html#getRawX() , and they're not raw enough. Slopping's still happening.)

Glenn Kasten

unread,
Aug 22, 2016, 5:38:21 PM8/22/16
to android-platform
I am not an expert in this area, but I checked with some others here who are more knowledgeable.
According to them, the two devices we checked (Nexus 9 and Nexus 6) don't have this suppression and let through all the move events.
Motion Events do send everything from the hardware. If you see slop still, that is almost certainly happening at the hardware/sensor level.
Note that for scrolling, there IS additional slop after what Motion Events see, but that doesn't seem to be your issue.

So ... can you please try some Nexus family devices running AOSP builds and let us know if they have the same issue?
Please include the Nexus model name and AOSP build ID.  Thanks

mako yass

unread,
Aug 25, 2016, 9:52:44 AM8/25/16
to android-platform
Hmm, we tested a nexus 5 and a nexus 7, no perceptible slop. We tested a Moto G 2014 running cyanogenmod, and there was perceptible slop. We wonder if it's a cyanogenmod thing.
Reply all
Reply to author
Forward
0 new messages