Некоторые устройства не предоставляют данные об ориентации - PullRequest
0 голосов
/ 21 ноября 2011

Мое приложение пытается определить ориентацию устройства с помощью:

int orientation = getResources().getConfiguration.orientation;

Похоже, это прекрасно работает на моем Samsung Galaxy S2, но при тестировании его на HTC Desire HD, а затем при попытке сослаться на мое целое число в тосте, чтобы проверить правильность его ориентации, выдается исключение Resources $ NotFoundException.

Правильно ли я считаю, что этот метод определения ориентации телефонов не всегда работает, если так, то почему он не просто генерирует исключение NullPointerException, когда я пытаюсь ссылаться на целое число?

Мое приложение захватывает фотографию, поэтому мне нужно найти ориентацию телефона, чтобы установить размеры для SurfaceView и повернуть изображение по мере необходимости. Есть ли другой способ определения ориентации телефона?

Заранее благодарен за любые ответы.

1 Ответ

1 голос
/ 23 ноября 2011

Когда вы вызываете Toast.makeText(), обратите внимание, что есть два метода: makeText(Context context, int resId, int duration) и makeText(Context context, CharSequence text, int duration). Когда вы используете целое число, вызывается первый метод, и Android пытается найти ресурс, связанный с целым числом, а это не то, что вам нужно.

Самое простое, что вы можете сделать вместо этого - преобразовать целое число в строку:

Toast.makeText(context, Integer.toString(orientation), Toast.LENGTH_SHORT).show();

Таким образом, Android не будет искать ресурсы и покажет вам необходимый текст.

...