2015-03-18 4 views
0

В моем приложении у меня ситуация, когда у всего телефона будет только портрет, планшет с высотой = 1024; width = 768 then Height/width (1024/768 < = 1.3333) Я хочу сделать вкладку Landscape, иначе мне нужно сделать Portrait.Настройка ориентации устройства на основе высоты и ширины

String userAgent = new WebView(activity).getSettings() 
      .getUserAgentString(); 
double screen_size = 1.3333333333333333; 
if (userAgent.contains("Mobile")) { 
     activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     mEditor.putString("Device_Mode", "Phone"); 
     mEditor.commit(); 
    } else { 
     activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getRealSize(size); 
     double height = size.y; 
     double width = size.x; 
     double aspect_Ratio = width/height; 
     if (aspect_Ratio <= screen_size) { 
      activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
      mEditor.putString("Device_Mode", "TAB-LANDSCAPE"); 
      mEditor.commit(); 
      quit(); 
     } else { 
      activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
      mEditor.putString("Device_Mode", "TAB-PORTRAIT"); 
      mEditor.commit(); 
      quit(); 
     } 
} 

Экран становится черным, и приложение, наконец, начинает падать.

ответ

0

Экран стал мерцать, потому что он продолжает переключаться между ориентацией. Поэтому я остановился на

android:configChanges="orientation|keyboardHidden|screenSize" 

положить этот код линии в мой манифест о соответствующей деятельности. Таким образом, мерцание активности прекращается.

int i = getResources().getConfiguration().orientation; 
Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getRealSize(size); 
double height = size.y; 
double width = size.x; 
double aspect_Ratio = 0.0; 
if (i == 1) 
    aspect_Ratio = height/width; 
else if (i == 2) 
    aspect_Ratio = width/height; 
if (aspect_Ratio <= screen_size) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 

Используя этот код, я достиг своей задачи :)

0

Проверьте погоду на мобильном устройстве или планшете, используя следующий код.

TelephonyManager manager =(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
if(manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE){ 
return "Tablet"; 
}else{ 
return "Mobile"; 
} 
Смежные вопросы