Android - jak uruchomić czujnik (usługa, wątek, aktywność)?

Piszę prostą grę przechylającą. Spraw, aby piłka toczyła się po ekranie w kierunku, w którym przechylasz telefon.

Pobrałem więc przykład uzyskiwania danych z czujnika i działa to dobrze (używam macierzy rotacji, aby uniknąć problemu z kątem Eulera). Ale potem próbowałem umieścić go w większej aplikacji i mam problem z uruchomieniem go.

Moim pierwszym pomysłem było uruchomienie czujnika przechyłu w osobnym wątku, ale moja klasa: public class TiltSensor rozszerza Implementacje wątków SensorEventListener nie działa dobrze. Dostaję jedną rundę wartości, a potem się zatrzymuje.

Jak wdrożyłbyś tę aplikację?

Nie chcę blokować wątku interfejsu użytkownika, więc myślę, że potrzebuję osobnego wątku (GameHandler), aby uruchomić grę, a następnie wywołuję runOnUithread i stamtąd unieważniam widok. Oddzieliłbym także reprezentację planszy od widoku, więc reprezentowałbym ekran jako matrycę, a następnie widok użyłby tej matrycy, aby wiedzieć, jak powinien wyglądać ekran. Ale nie jestem pewien, jaki jest najlepszy sposób wdrożenia TiltSensora. Czy powinien działać w osobnym wątku lub tym samym wątku co GameHandler? Jak upewnić się, że SensorManager rzeczywiście wywołuje onSensorChanged w wątku GameHandler?

questionAnswers(1)

yourAnswerToTheQuestion