//------------------------------------------------------------------------------
// Copyright (c) 2012 Microsoft Corporation. All rights reserved.
//
// Description: See the class level JavaDoc comments.
//------------------------------------------------------------------------------
package com.microsoft.live;
import android.app.Activity;
import android.content.res.Configuration;
import android.util.Log;
/**
* The ScreenSize is used to determine the DeviceType.
* Small and Normal ScreenSizes are Phones.
* Large and XLarge are Tablets.
*/
enum ScreenSize {
SMALL {
@Override
public DeviceType getDeviceType() {
return DeviceType.PHONE;
}
},
NORMAL {
@Override
public DeviceType getDeviceType() {
return DeviceType.PHONE;
}
},
LARGE {
@Override
public DeviceType getDeviceType() {
return DeviceType.TABLET;
}
},
XLARGE {
@Override
public DeviceType getDeviceType() {
return DeviceType.TABLET;
}
};
public abstract DeviceType getDeviceType();
/**
* Configuration.SCREENLAYOUT_SIZE_XLARGE was not provided in API level 9.
* However, its value of 4 does show up.
*/
private static final int SCREENLAYOUT_SIZE_XLARGE = 4;
public static ScreenSize determineScreenSize(Activity activity) {
int screenLayout = activity.getResources().getConfiguration().screenLayout;
int screenLayoutMasked = screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
switch (screenLayoutMasked) {
case Configuration.SCREENLAYOUT_SIZE_SMALL:
return SMALL;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
return NORMAL;
case Configuration.SCREENLAYOUT_SIZE_LARGE:
return LARGE;
case SCREENLAYOUT_SIZE_XLARGE:
return XLARGE;
default:
// If we cannot determine the ScreenSize, we'll guess and say it's normal.
Log.d(
"Live SDK ScreenSize",
"Unable to determine ScreenSize. A Normal ScreenSize will be returned.");
return NORMAL;
}
}
}