2015-03-18 4 views
0

Dans mon application, je suis situation où tout le téléphone aura seulement Portrait, Tablette avec hauteur = 1024; width = 768 puis Height/width (1024/768 < = 1.3333) Je veux faire l'onglet Paysage sinon je dois faire Portrait.Réglage de l'orientation de l'appareil en fonction de la hauteur et la largeur

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(); 
     } 
} 

L'écran devient flip et l'application tombe en panne.

Répondre

0

L'écran a scintillé car il continue à basculer entre l'orientation. Donc j'ai arrêté par

android:configChanges="orientation|keyboardHidden|screenSize" 

en mettant ce code de ligne dans mon manifeste sur l'activité correspondante. L'activité scintillante est donc arrêtée.

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); 
     } 

En utilisant ce code que j'ai accompli ma tâche :)

0

Vérifiez la météo du mobile ou de la tablette en utilisant le code suivant.

TelephonyManager manager =(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
if(manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE){ 
return "Tablet"; 
}else{ 
return "Mobile"; 
}