2013-11-09 1 views
2

Вопрос связан с вращением экрана эмулятора Android.Экран Android - угол поворота

Я использую DefaultDisplay.getRotation(), чтобы получить угол поворота на эмуляторе. Он возвращает только 0 и 90. Даже в обратном портрете и обратном пейзаже. Не задайте определенную ориентацию экрана в файле XML активности. Я новичок в этом, поэтому, наверное, здесь что-то не хватает и может использовать некоторую помощь, чтобы понять, что это может быть.

Спасибо.

+0

Возможный дубликат [Как использовать Акселерометр Android?] (http://stackoverflow.com/quest Ионы/5180187/как-делать-я-использование-The-андроид-акселерометр) – NoBugs

ответ

0

Прежде всего getRotation способ не работает в экране эмулятора. Потому что, согласно вашей теме, вы видите, что получаете только два угла, то есть «0» и «90» из-за пейзаж и potrait mode. Так что просто протестируйте его на любом реальном устройстве.

1

Попробуйте это ..

int rotation = getWindowManager().getDefaultDisplay().getRotation(); 
     Log.v("rotation--", ""+rotation); 

     switch (rotation) { 

     case 0: 
      Toast.makeText(getBaseContext(), "Angle 0", Toast.LENGTH_SHORT).show(); 
      break; 
     case 1: 
      Toast.makeText(getBaseContext(), "Angle 90", Toast.LENGTH_SHORT).show(); 
      break; 
     case 2: 
      Toast.makeText(getBaseContext(), "Angle 180", Toast.LENGTH_SHORT).show(); 
      break; 
     case 3: 
      Toast.makeText(getBaseContext(), "Angle 270", Toast.LENGTH_SHORT).show(); 
      break; 
     } 
0

Если вы просто хотите, чтобы портрет/обратный портрет и пейзаж/обратный пейзаж можно использовать

  if (Utils.getDeviceDefaultOrientation(localActivity) == Configuration.ORIENTATION_LANDSCAPE) 
      { 
       if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_0) 
        //Landscape Mode 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90) 
        //Portrait Mode 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_180) 
        //Reverse Landscape 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270) 
        //Reverse Portrait 
      } 
      else 
      { 
       if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_0) 
        //Portrait Mode 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90) 
        //Landscape Mode 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_180) 
        //Reverse Portrait Mode 
       else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270) 
        //Reverse Landscape Mode 
      } 

Мы должны проверить getDeviceDefaultOrientation, потому что для таблеток по умолчанию Ориентация устройства - Пейзаж, и он вернется getRotation() 0 в этом случае