Проблемы с получением данных об ориентации устройства для Android - PullRequest
1 голос
/ 07 февраля 2012

Я новичок в форуме и разработке Android.

Я пытался получить данные об ориентации устройства, но, похоже, что-то не так.Я перешел по этой ссылке: http://www.mail-archive.com/android-beginners@googlegroups.com/msg23415.html.

Однако строка

sensorManager =  (SensorManager) getSystemService(SENSOR_SERVICE);

выдает ошибку, что SENSOR_SERVICE не является допустимой переменной, поэтому я обнаружил, что это общедоступная статическая переменная класса Context, поэтому я использовал

sensorManager =  (SensorManager) getSystemService(Context.SENSOR_SERVICE);

, это выдает ошибку getSystemService (String) не является методом моего текущего класса.Теперь я понимаю, что getSystemService (String) является методом Context, и поэтому мои вопросы

1) что - я предполагаю, что это приведение - (SensorManager) делает перед вызовом метода?

2) я должен получить свой текущий контекст и запустить метод на этом?если так, то как?

Я уверен, что я обдумал это, но любая помощь и терпение очень ценятся.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

1) что - я предполагаю, что это приведение - (SensorManager) делает перед вызовом метода?

Это действительно актерский состав. Это необходимо, потому что объявлено, что getSystemService возвращает недифференцированный тип Object (хотя он, очевидно, возвращает что-то более конкретное).

2) я должен получить свой текущий контекст и запустить метод на этом? если да как?

В пользовательском классе View вы можете использовать getContext(). Если этот код является частью другого вида пользовательского класса, вы можете передать контекст в конструкторе. Я рекомендую использовать getApplicationContext() при сохранении контекста в качестве поля элемента, так как Activity контексты должны быть свободны для сбора мусора, если активность умирает, скажем, от изменения ориентации устройства.

0 голосов
/ 07 февраля 2012

да, getSystemService () является методом Context, чтобы получить Context, используйте либо

getApplicationContext();

, либо, используйте вашу текущую деятельность или службу, объект для получения контекста:

ThisService.this.getSystemService();

или

ThisActivity.this.getSystemService();
...