This is the Android client for the RemoteVR project.
This client can communicate with the RemoteVR Server. At the moment the only implementation of the server is based on Unity and can be found here RemoteVR_UnityServer.
The client has two responsibilities:
- Show the output of the 3D application (received from the server) to the user.
- Intercept the input given by the user for the 3D application and send it to the server.
This application is meant to be used with a Google Cardboard, therefore it currently supports two types of input: rotations to track the user's head and a simple touch on the screen. That said, it's not hard to implement new types of input.
Is intercepted by the class RemoteVRView
and passed outside using RxJava.
This app uses the calibrated gyroscope provided by the Android framework to track the user's movements. The rotations are represented as quaternions. All the head tracking components are in the headtracking
package.
The images received from the server are shown to the user using the RemoteVRView
class.
The IO layer of the app is based on RxJava and is in the io
package. Touch events, quaternions from the gyroscope, images from the server.. everything is encapsulated inside an Observable
.
The communication protocol is implemented using both TCP and UDP. At the moment the client-server system is meant to run inside a LAN network, so UDP and TCP are good enough.
- The
GameFragment
should be refactorend. At the moment it does a little to much. - The event bus system should be cleaned (or removed :D)