Support detecting whether device is a tablet and use that to determine whether to enforce portrait orientation

This commit is contained in:
drdev
2015-05-25 02:16:53 +00:00
parent ae47fb74a7
commit 63d024ed37
3 changed files with 27 additions and 6 deletions

View File

@@ -8,6 +8,7 @@ import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.Uri; import android.net.Uri;
@@ -29,13 +30,15 @@ public class Main extends AndroidApplication {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//setup portrait orientation AndroidAdapter adapter = new AndroidAdapter(this.getContext());
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (Build.VERSION.SDK_INT > 8) { //use dual-side portrait mode if supported
this.setRequestedOrientation(7);
}
AndroidAdapter adapter = new AndroidAdapter(); //enforce portrait orientation for non-tablet screens
if (!adapter.isTablet) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (Build.VERSION.SDK_INT > 8) { //use dual-side portrait mode if supported
this.setRequestedOrientation(7);
}
}
//establish assets directory //establish assets directory
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
@@ -88,8 +91,15 @@ public class Main extends AndroidApplication {
} }
private class AndroidAdapter implements IDeviceAdapter { private class AndroidAdapter implements IDeviceAdapter {
private final boolean isTablet;
private final ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); private final ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
private AndroidAdapter(Context context) {
isTablet = (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
@Override @Override
public boolean isConnectedToInternet() { public boolean isConnectedToInternet() {
return Boolean.TRUE.equals(ThreadUtil.executeWithTimeout(new Callable<Boolean>() { return Boolean.TRUE.equals(ThreadUtil.executeWithTimeout(new Callable<Boolean>() {
@@ -146,5 +156,10 @@ public class Main extends AndroidApplication {
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); // hide (remove, in this case) task from recents | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); // hide (remove, in this case) task from recents
startActivity(relaunch); startActivity(relaunch);
} }
@Override
public boolean isTablet() {
return isTablet;
}
} }
} }

View File

@@ -58,5 +58,10 @@ public class Main {
public void exit() { public void exit() {
Gdx.app.exit(); //can just use Gdx.app.exit for desktop Gdx.app.exit(); //can just use Gdx.app.exit for desktop
} }
@Override
public boolean isTablet() {
return true; //treat desktop the same as a tablet
}
} }
} }

View File

@@ -3,6 +3,7 @@ package forge.interfaces;
public interface IDeviceAdapter { public interface IDeviceAdapter {
boolean isConnectedToInternet(); boolean isConnectedToInternet();
boolean isConnectedToWifi(); boolean isConnectedToWifi();
boolean isTablet();
String getDownloadsDir(); String getDownloadsDir();
boolean openFile(String filename); boolean openFile(String filename);
void exit(); void exit();