static DisplayMetricsAndroid() {
// Early out if we're not on an Android device
if (Application.platform != RuntimePlatform.Android) {
return;
}
// The following is equivalent to this Java code:
//
// metricsInstance = new DisplayMetrics();
// UnityPlayer.currentActivity.getWindowManager().getDefaultDisplay().getMetrics(metricsInstance);
//
// ... which is pretty much equivalent to the code on this page:
// http://developer.android.com/reference/android/util/DisplayMetrics.html
using (
AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"),
metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")
) {
using (
AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"),
activityInstance = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"),
windowManagerInstance = activityInstance.Call<AndroidJavaObject>("getWindowManager"),
displayInstance = windowManagerInstance.Call<AndroidJavaObject>("getDefaultDisplay")
) {
displayInstance.Call("getRealMetrics", metricsInstance);
Density = metricsInstance.Get<float>("density");
DensityDPI = metricsInstance.Get<int>("densityDpi");
HeightPixels = metricsInstance.Get<int>("heightPixels");
WidthPixels = metricsInstance.Get<int>("widthPixels");
ScaledDensity = metricsInstance.Get<float>("scaledDensity");
XDPI = metricsInstance.Get<float>("xdpi");
YDPI = metricsInstance.Get<float>("ydpi");
}
}
}