Skip to main content
New Participant
November 4, 2025
Question

Getting Analog Values from Joysticks in Spatial SDK Native Android App

Hi, I am trying to create an app that can track the joystick push values as continuous values rather than discrete pushed/not pushed. I am using the Spatial SDK and it seems to only expose getters such as ButtonThumbLL which return an Int representing whether they were pressed or not. I saw a similar post about 4 months ago that was left unanswered: Interface of getting Controller joystick travel range | Meta Community Forums - 1336257. I am curious if anyone knows and idiomatic way of getting the continuous values of how far the joysticks are pushed. Thank you.

6 replies

New Participant
November 4, 2025

Sorry, just to clarify, I am using the getter to mask out buttonState. I am only getting a binary on and off for left, right, up, and down.

Meta Employee
November 7, 2025

Hello there!

If you go to your developer dashboard, on the left hand side go to team > contact us. From the window it opened, select new in the top right, set your topic as technical support and fill out the rest of the form to the best of your ability. Our specialists will then take a look at this for you!

If you need any additional assistance, let me know! 

Hope this helps!

Meta Employee
November 10, 2025

Hi daniel_kovari​!

 You can get the scroll amount when scrolling a panel by accessing the scrollInfo property of a PointerEvent. Unfortunately we don't support getting generic axis values at any time.


If you need any additional assistance, let me know! 


-Y

New Participant
November 13, 2025

I'm using IsdkSystem.registerObserver to receive PointerEvent objects for scroll gestures on a control panel. Currently, I can access event.scrollInfo.x and event.scrollInfo.y, but I need to differentiate between scroll events from the left controller vs. the right controller.

Does PointerEvent expose which controller/hand generated the event?

Is there a way to register observers for only one controller (e.g., only right controller events)

Meta Employee
November 13, 2025

Hi Vivan_kovari​ !

You can use the getHandForPointerEvent(pointerEvent: PointerEvent): Hand? method defined in IsdkSystem to get which controller/hand generated the event.

You can access the IsdkSystem instance by doing:

import com.meta.spatial.isdk.IsdkSystem

systemManager.findSystem<IsdkSystem>().getHandForPointerEvent(event)


getHandForPointerEvent(pointerEvent: PointerEvent): Hand?  can return three values: HAND.LEFT representing left hand/controller; HAND.RIGHT representing right hand/controller; and null.

Hope this helps!

-Y

New Participant
November 25, 2025

Hello,


I was able to get it working, but it is still very buggy. The system freezes if both joysticks are moved before the panel is fully up, and it occasionally freezes at random as well. This is a critical issue for us, as it can create major operational risks.

We would really appreciate the addition of a feature to access generic axis values. Is this something that could be implemented, or is it already planned for a future release?