CHANGE: Add AndroidDeviceCapabilities.vibratorCount#2410
CHANGE: Add AndroidDeviceCapabilities.vibratorCount#2410
Conversation
Codecov ReportAttention: Patch coverage is
@@ Coverage Diff @@
## develop #2410 +/- ##
===========================================
- Coverage 78.13% 78.12% -0.01%
===========================================
Files 483 483
Lines 98770 98771 +1
===========================================
- Hits 77169 77166 -3
- Misses 21601 21605 +4 Flags with carried forward coverage won't be shown. Click here to find out more.
|
| public bool isVirtual; | ||
| public AndroidAxis[] motionAxes; | ||
| public AndroidInputSource inputSources; | ||
| public int vibratorCount; |
There was a problem hiding this comment.
Is this only gamepad specific?
AFAIK, the Android vibrator API you mentioned is not compatible with our rumble API.
The vibrator API, at least for the android device itself, usually allows you to control the duration and, in some devices, the amplitude of vibrations, and doesn't match the concepts of motor speed in a controller.
From the Jira comments, I got a bit confused, and I believe you need to use these gamepad specific APIs instead to match our rumble interface https://developer.android.com/games/sdk/game-controller/controller-features#java ?
There was a problem hiding this comment.
Is this only gamepad specific?
Yes and no, https://developer.android.com/reference/android/view/InputDevice#public-methods is heavily abstracted class, thus in theory and input device can have a vibrator. Though so far, I saw vibrators only available on gamepads
AFAIK, the Android vibrator API you mentioned is not compatible with our rumble API.
The vibrator API, at least for the android device itself, usually allows you to control the duration and, in some devices, the amplitude of vibrations, and doesn't match the concepts of motor speed in a controller.
it's compatible enough, connecting Android vibration API to https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/api/UnityEngine.InputSystem.Haptics.IDualMotorRumble.html is not that hard. Sure we could go further and have Android specific vibrator APIs to expose everything Android provides, but this is outside of that scope.
From the Jira comments, I got a bit confused, and I believe you need to use these gamepad specific APIs instead to match our rumble interface https://developer.android.com/games/sdk/game-controller/controller-features#java ?
There are not plans to use game-controller library in Unity , having access to https://developer.android.com/reference/android/view/InputDevice#public-methods is good enough for us.
Description
Android team is adding rumble support for gamepads - https://jira.unity3d.com/browse/PLAT-19228 (The changes will be done mainly in Android's backend). One of the changes is DeviceCapabilities expansion - https://github.cds.internal.unity3d.com/unity/unity/pull/102096/commits/f682823cc6640dddb48d172bb57cb1f2bdd2b460
Basically it allows you to query how many motors (a.k.a vibrators in Android term) the device has.
This PR simply mirrors the change on input system package.
Note AndroidDeviceCapabilities is an internal class, so no user facing changes, additionally if backend doesn't report vibratorCount, it will simply default to 0.