package com.googlecode.mgwt.ui.client; public class OsDetectionRuntimeImpl implements OsDetection { @Override public boolean isAndroid() { return isAndroidPhone() || isAndroidTablet(); } @Override public boolean isIPhone() { String userAgent = getUserAgent(); if (userAgent.contains("iphone") && getDevicePixelRatio() < 2) { return true; } return false; } @Override public boolean isIPad() { String userAgent = getUserAgent(); if (userAgent.contains("ipad") && getDevicePixelRatio() < 2) { return true; } return false; } @Override public boolean isIOs() { return isIPad() || isIPadRetina() || isIPhone() || isRetina(); } @Override public boolean isRetina() { String userAgent = getUserAgent(); if (userAgent.contains("iphone") && getDevicePixelRatio() >= 2) { return true; } return false; } @Override public boolean isIPadRetina() { String userAgent = getUserAgent(); if (userAgent.contains("ipad") && getDevicePixelRatio() >= 2) { return true; } return false; } @Override public boolean isDesktop() { return !isIOs() && !isAndroid(); } @Override public boolean isTablet() { return isIPad() || isIPadRetina() || isAndroidTablet(); } @Override public boolean isAndroidTablet() { String userAgent = getUserAgent(); if (userAgent.contains("android") && !userAgent.contains("mobile")) { return true; } return false; } @Override public boolean isAndroidPhone() { String userAgent = getUserAgent(); if (userAgent.contains("android") && userAgent.contains("mobile")) { return true; } return false; } @Override public boolean isPhone() { return isIPhone() || isRetina() || isAndroidPhone(); } @Override public boolean isBlackBerry() { return false; } @Override public boolean isAndroid4_4_OrHigher() { String userAgent = getUserAgent(); if (userAgent.contains("android") && userAgent.contains("chrome")) { return true; } return false; } @Override public boolean isAndroid2x() { String userAgent = getUserAgent(); if (userAgent.contains("android 2.")) { return true; } return false; } native String getUserAgent() /*-{ return $wnd.navigator.userAgent.toLowerCase(); }-*/; native double getDevicePixelRatio() /*-{ return $wnd.devicePixelRatio || 1; }-*/; @Override public boolean isIOS6() { if(!isIOs()){ return false; } String userAgent = getUserAgent(); if (userAgent.contains("os 6_")) { return true; } return false; } @Override public boolean isAndroid4_3_orLower() { if(isAndroid4_4_OrHigher()) { return false; } String userAgent = getUserAgent(); if (userAgent.contains("android")) { return true; } return false; } }