Touch.radius always zero on Android

Is touch.radius supposed to work on Android, or is it just for newer versions of iOS that support 3D touch?
(The doc page: Unity - Scripting API: Touch.radius)

Here’s what I’ve figured out so far:
On my Samsung Stratosphere 2 running Android 4.1.2, it always returns zero for the radius, no matter how much I try to flatten my thumb/finger against the screen. On an iPad, however, the same project using touch.radius works properly. Looking at Google’s Android reference, it appears that there is a function for getting the size of a touch in Android 2.0 onward (so I would’ve assumed the Unity function would basically just use that). I’ve also downloaded an app from the Play store that appears to detect radius (and pressure) with reasonable accuracy, so it appears that my phone’s hardware and software should be capable of getting the radius of a touch. Issue 756048 (Unity Issue Tracker - Radius and radiusVariance variable of Input.GetTouch always return unexpected values) basically says that touch.radius doesn’t work for either iOS or Android, but the issue is marked as fixed. The issue was found in Unity 5.4.0b1, but I have tried both 5.3.5 (which I believe is the latest stable release) and 5.4.0b18, and it doesn’t work on my phone using either of them. So does anyone know if this functionality was ever present for Unity on Android, and if so, in what version of Unity? Thanks for any help.

Am also getting this same issue. Did you find a fix? I’m on Unity2017

This will be available in Unity 2018.1 - Unity - Scripting API: Touch.radius

1 Like

Is there a workaround in the meantime or for those of us who’d rather not upgrade?

The only workaround I could think of, is to modify onTouchEvent in UnityPlayerActivity.java and read radius yourself and pass it to your script.

This problem remains on 2018.4.30f1 when testing on a xiaomi M2006J10C while other xiaomi smart phones are OK.

touch.pressure // always 1
touch.radius //always 0
touch.radiusVariance //always 0```