Jeśli użytkownik przewróci telefon, chcę na to zareagować, zatrzymując czytanie tekstu na mowę. Byłaby to fajna funkcja dla mojej aplikacji, ale jak mogę wykryć ten ruch? Nie jestem obeznany z czujnikami ruchu i nie mogłem znaleźć tego konkretnego detektora ruchu w dowolnym miejscu, głównie orientacje ekranu. Dzięki za pomoc!Jak wykryć ruch obrotu w systemie Android?
Odpowiedz
To przykładowe działanie demonstruje, w jaki sposób czujnik grawitacji urządzenia może zostać użyty do wykrycia, kiedy urządzenie jest odwracane. W metodzie onSensorChanged()
określenie factor
określa, jak należy zakończyć "przewrócenie". Typowy zakres może wynosić od 0,7 do 0,95.
Obsługa czujnika grawitacyjnego została dodana w interfejsie API Androida 9. Nie wszystkie urządzenia mają czujnik grawitacji.
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private static final String TAG = "Demo";
private SensorManager mSensorManager;
private Sensor mGravitySensor;
private boolean mFacingDown;
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// nothing
}
@Override
public void onSensorChanged(SensorEvent event) {
final float factor = 0.95F;
if (event.sensor == mGravitySensor) {
boolean nowDown = event.values[2] < -SensorManager.GRAVITY_EARTH * factor;
if (nowDown != mFacingDown) {
if (nowDown) {
Log.i(TAG, "DOWN");
} else {
Log.i(TAG, "UP");
}
mFacingDown = nowDown;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
if (mGravitySensor == null) {
Log.w(TAG, "Device has no gravity sensor");
}
}
@Override
protected void onResume() {
super.onResume();
if (mGravitySensor != null) {
mSensorManager.registerListener(this, mGravitySensor, SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}
dziękuję! Wypróbuję to w poniedziałek, kiedy jestem z powrotem w college'u, robię swoją aplikację jako zadanie. (nie zapomnisz o przyjęciu tego :) –
Czy możesz mi pomóc, jak mogę to wykorzystać (przetestowałem, działa dobrze) w klasie? Chcę go używać w wielu działaniach, więc pomyślałem, że zaimplementuję to wszystko w klasie publicznej, ale mając problemy z jej działaniem, teraz otrzymuję 0 errorst, tylko aplikacja nie uruchamia się na moim telefonie: O –
w rzeczywistości aplikacja nie zaczynanie było z zupełnie innego powodu, po prostu musiałem usunąć go z mojego telefonu i zainstalować go ponownie. –
Tylko myśl: jeśli „oddanie oblicze telefonu w dół” jest OK (w przeciwieństwie do po prostu obracając go w powietrzu), a następnie wykrywa nagłe ściemnienie światła otoczenia może działać ([patrz tutaj] (http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_LIGHT)) Nie wiem, czy jest na to słuchacz. – TripeHound
sprawdzi to później (w poniedziałek), jeśli mogę tego użyć. Dokumentacja mówi, że czujniki otoczenia są znacznie łatwiejsze w użyciu, więc mam nadzieję :) –