Java判斷是否爲移動端

如下爲經常使用判斷,可直接建立使用css

/** * Created by kangao on 2018/3/23. */public class UAgentInfoHelper {    // User-Agent and Accept HTTP request headers    private String userAgent = "";    private String httpAccept = "";    // Let's store values for quickly accessing the same info multiple times.    public boolean initCompleted = false;    public boolean isWebkit = false; //Stores the result of DetectWebkit()    public boolean isMobilePhone = false; //Stores the result of DetectMobileQuick()    public boolean isIphone = false; //Stores the result of DetectIphone()    public boolean isAndroid = false; //Stores the result of DetectAndroid()    public boolean isAndroidPhone = false; //Stores the result of DetectAndroidPhone()    public boolean isTierTablet = false; //Stores the result of DetectTierTablet()    public boolean isTierIphone = false; //Stores the result of DetectTierIphone()    public boolean isTierRichCss = false; //Stores the result of DetectTierRichCss()    public boolean isTierGenericMobile = false; //Stores the result of DetectTierOtherPhones()    // Initialize some initial smartphone string variables.    public static final String engineWebKit = "webkit";    public static final String deviceIphone = "iphone";    public static final String deviceIpod = "ipod";    public static final String deviceIpad = "ipad";    public static final String deviceMacPpc = "macintosh"; //Used for disambiguation    public static final String deviceAndroid = "android";    public static final String deviceGoogleTV = "googletv";    public static final String deviceHtcFlyer = "htc_flyer"; //HTC Flyer    public static final String deviceWinPhone7 = "windows phone os 7";    public static final String deviceWinPhone8 = "windows phone 8";    public static final String deviceWinMob = "windows ce";    public static final String deviceWindows = "windows";    public static final String deviceIeMob = "iemobile";    public static final String devicePpc = "ppc"; //Stands for PocketPC    public static final String enginePie = "wm5 pie"; //An old Windows Mobile    public static final String deviceBB = "blackberry";    public static final String deviceBB10 = "bb10"; //For the new BB 10 OS    public static final String vndRIM = "vnd.rim"; //Detectable when BB devices emulate IE or Firefox    public static final String deviceBBStorm = "blackberry95";  //Storm 1 and 2    public static final String deviceBBBold = "blackberry97";  //Bold 97x0 (non-touch)    public static final String deviceBBBoldTouch = "blackberry 99";  //Bold 99x0 (touchscreen)    public static final String deviceBBTour = "blackberry96";  //Tour    public static final String deviceBBCurve = "blackberry89";  //Curve 2    public static final String deviceBBCurveTouch = "blackberry 938";  //Curve Touch 9380    public static final String deviceBBTorch = "blackberry 98";  //Torch    public static final String deviceBBPlaybook = "playbook"; //PlayBook tablet    public static final String deviceSymbian = "symbian";    public static final String deviceS60 = "series60";    public static final String deviceS70 = "series70";    public static final String deviceS80 = "series80";    public static final String deviceS90 = "series90";    public static final String devicePalm = "palm";    public static final String deviceWebOS = "webos"; //For Palm's line of WebOS devices    public static final String deviceWebOShp = "hpwos"; //For HP's line of WebOS devices    public static final String engineBlazer = "blazer"; //Old Palm    public static final String engineXiino = "xiino"; //Another old Palm    public static final String deviceNuvifone = "nuvifone";  //Garmin Nuvifone    public static final String deviceBada = "bada";  //Samsung's Bada OS    public static final String deviceTizen = "tizen";  //Tizen OS    public static final String deviceMeego = "meego";  //Meego OS    public static final String deviceKindle = "kindle";  //Amazon Kindle, eInk one    public static final String engineSilk = "silk-accelerated";  //Amazon's accelerated Silk browser for Kindle Fire    //Initialize variables for mobile-specific content.    public static final String vndwap = "vnd.wap";    public static final String wml = "wml";    //Initialize variables for other random devices and mobile browsers.    public static final String deviceTablet = "tablet"; //Generic term for slate and tablet devices    public static final String deviceBrew = "brew";    public static final String deviceDanger = "danger";    public static final String deviceHiptop = "hiptop";    public static final String devicePlaystation = "playstation";    public static final String devicePlaystationVita = "vita";    public static final String deviceNintendoDs = "nitro";    public static final String deviceNintendo = "nintendo";    public static final String deviceWii = "wii";    public static final String deviceXbox = "xbox";    public static final String deviceArchos = "archos";    public static final String engineOpera = "opera"; //Popular browser    public static final String engineNetfront = "netfront"; //Common embedded OS browser    public static final String engineUpBrowser = "up.browser"; //common on some phones    public static final String engineOpenWeb = "openweb"; //Transcoding by OpenWave server    public static final String deviceMidp = "midp"; //a mobile Java technology    public static final String uplink = "up.link";    public static final String engineTelecaQ = "teleca q"; //a modern feature phone browser    public static final String engineObigo = "obigo"; //W 10 is a modern feature phone browser    public static final String devicePda = "pda"; //some devices report themselves as PDAs    public static final String mini = "mini";  //Some mobile browsers put "mini" in their names.    public static final String mobile = "mobile"; //Some mobile browsers put "mobile" in their user agent strings.    public static final String mobi = "mobi"; //Some mobile browsers put "mobi" in their user agent strings.    //Use Maemo, Tablet, and Linux to test for Nokia"s Internet Tablets.    public static final String maemo = "maemo";    public static final String linux = "linux";    public static final String qtembedded = "qt embedded"; //for Sony Mylo    public static final String mylocom2 = "com2"; //for Sony Mylo also    //In some UserAgents, the only clue is the manufacturer.    public static final String manuSonyEricsson = "sonyericsson";    public static final String manuericsson = "ericsson";    public static final String manuSamsung1 = "sec-sgh";    public static final String manuSony = "sony";    public static final String manuHtc = "htc";    //In some UserAgents, the only clue is the operator.    public static final String svcDocomo = "docomo";    public static final String svcKddi = "kddi";    public static final String svcVodafone = "vodafone";    //Disambiguation strings.    public static final String disUpdate = "update"; //pda vs. update    /**     * Initialize the userAgent and httpAccept variables     *     * @param userAgent the User-Agent header     * @param httpAccept the Accept header     */    public UAgentInfoHelper(String userAgent, String httpAccept) {        if (userAgent != null) {            this.userAgent = userAgent.toLowerCase();        }        if (httpAccept != null) {            this.httpAccept = httpAccept.toLowerCase();        }        //Intialize key stored values.        initDeviceScan();    }    /**     * Return the lower case HTTP_USER_AGENT     * @return userAgent     */    public String getUserAgent() {        return userAgent;    }    /**     * Return the lower case HTTP_ACCEPT     * @return httpAccept     */    public String getHttpAccept() {        return httpAccept;    }    /**     * Return whether the device is an Iphone or iPod Touch     * @return isIphone     */    public boolean getIsIphone() {        return isIphone;    }    /**     * Return whether the device is in the Tablet Tier.     * @return isTierTablet     */    public boolean getIsTierTablet() {        return isTierTablet;    }    /**     * Return whether the device is in the Iphone Tier.     * @return isTierIphone     */    public boolean getIsTierIphone() {        return isTierIphone;    }    /**     * Return whether the device is in the 'Rich CSS' tier of mobile devices.     * @return isTierRichCss     */    public boolean getIsTierRichCss() {        return isTierRichCss;    }    /**     * Return whether the device is a generic, less-capable mobile device.     * @return isTierGenericMobile     */    public boolean getIsTierGenericMobile() {        return isTierGenericMobile;    }    /**     * Initialize Key Stored Values.     */    public void initDeviceScan() {        //Save these properties to speed processing        this.isWebkit = detectWebkit();        this.isIphone = detectIphone();        this.isAndroid = detectAndroid();        this.isAndroidPhone = detectAndroidPhone();        //Generally, these tiers are the most useful for web development        this.isMobilePhone = detectMobileQuick();        this.isTierTablet = detectTierTablet();        this.isTierIphone = detectTierIphone();        //Optional: Comment these out if you NEVER use them        this.isTierRichCss = detectTierRichCss();        this.isTierGenericMobile = detectTierOtherPhones();        this.initCompleted = true;    }    /**     * Detects if the current device is an iPhone.     * @return detection of an iPhone     */    public boolean detectIphone() {        if ((this.initCompleted == true) ||                (this.isIphone == true))            return this.isIphone;        // The iPad and iPod touch say they're an iPhone! So let's disambiguate.        if (userAgent.indexOf(deviceIphone) != -1 &&                !detectIpad() &&                !detectIpod()) {            return true;        }        return false;    }    /**     * Detects if the current device is an iPod Touch.     * @return detection of an iPod Touch     */    public boolean detectIpod() {        if (userAgent.indexOf(deviceIpod) != -1) {            return true;        }        return false;    }    /**     * Detects if the current device is an iPad tablet.     * @return detection of an iPad     */    public boolean detectIpad() {        if (userAgent.indexOf(deviceIpad) != -1                && detectWebkit()) {            return true;        }        return false;    }    /**     * Detects if the current device is an iPhone or iPod Touch.     * @return detection of an iPhone or iPod Touch     */    public boolean detectIphoneOrIpod() {        //We repeat the searches here because some iPods may report themselves as an iPhone, which would be okay.        if (userAgent.indexOf(deviceIphone) != -1                || userAgent.indexOf(deviceIpod) != -1) {            return true;        }        return false;    }    /**     * Detects *any* iOS device: iPhone, iPod Touch, iPad.     * @return detection of an Apple iOS device     */    public boolean detectIos() {        if (detectIphoneOrIpod() || detectIpad()) {            return true;        }        return false;    }    /**     * Detects *any* Android OS-based device: phone, tablet, and multi-media player.     * Also detects Google TV.     * @return detection of an Android device     */    public boolean detectAndroid() {        if ((this.initCompleted == true) ||                (this.isAndroid == true))            return this.isAndroid;        if ((userAgent.indexOf(deviceAndroid) != -1) ||                detectGoogleTV())            return true;        //Special check for the HTC Flyer 7" tablet. It should report here.        if (userAgent.indexOf(deviceHtcFlyer) != -1)            return true;        return false;    }    /**     * Detects if the current device is a (small-ish) Android OS-based device     * used for calling and/or multi-media (like a Samsung Galaxy Player).     * Google says these devices will have 'Android' AND 'mobile' in user agent.     * Ignores tablets (Honeycomb and later).     * @return  detection of an Android phone     */    public boolean detectAndroidPhone() {        if ((this.initCompleted == true) ||                (this.isAndroidPhone == true))            return this.isAndroidPhone;        if (detectAndroid() && (userAgent.indexOf(mobile) != -1))            return true;        //Special check for Android phones with Opera Mobile. They should report here.        if (detectOperaAndroidPhone())            return true;        //Special check for the HTC Flyer 7" tablet. It should report here.        if (userAgent.indexOf(deviceHtcFlyer) != -1)            return true;        return false;    }    /**     * Detects if the current device is a (self-reported) Android tablet.     * Google says these devices will have 'Android' and NOT 'mobile' in their user agent.     * @return detection of an Android tablet     */    public boolean detectAndroidTablet() {        //First, let's make sure we're on an Android device.        if (!detectAndroid())            return false;        //Special check for Opera Android Phones. They should NOT report here.        if (detectOperaMobile())            return false;        //Special check for the HTC Flyer 7" tablet. It should NOT report here.        if (userAgent.indexOf(deviceHtcFlyer) != -1)            return false;        //Otherwise, if it's Android and does NOT have 'mobile' in it, Google says it's a tablet.        if ((userAgent.indexOf(mobile) > -1))            return false;        else            return true;    }    /**     * Detects if the current device is an Android OS-based device and     * the browser is based on WebKit.     * @return detection of an Android WebKit browser     */    public boolean detectAndroidWebKit() {        if (detectAndroid() && detectWebkit()) {            return true;        }        return false;    }    /**     * Detects if the current device is a GoogleTV.     * @return detection of GoogleTV     */    public boolean detectGoogleTV() {        if (userAgent.indexOf(deviceGoogleTV) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is based on WebKit.     * @return detection of a WebKit browser     */    public boolean detectWebkit() {        if ((this.initCompleted == true) ||                (this.isWebkit == true))            return this.isWebkit;        if (userAgent.indexOf(engineWebKit) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is EITHER a Windows Phone 7.x OR 8 device     * @return detection of Windows Phone 7.x OR 8     */    public boolean detectWindowsPhone() {        if (detectWindowsPhone7() || detectWindowsPhone8()) {            return true;        }        return false;    }    /**     * Detects a Windows Phone 7.x device (in mobile browsing mode).     * @return detection of Windows Phone 7     */    public boolean detectWindowsPhone7() {        if (userAgent.indexOf(deviceWinPhone7) != -1) {            return true;        }        return false;    }    /**     * Detects a Windows Phone 8 device (in mobile browsing mode).     * @return detection of Windows Phone 8     */    public boolean detectWindowsPhone8() {        if (userAgent.indexOf(deviceWinPhone8) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is a Windows Mobile device.     * Excludes Windows Phone 7.x and 8 devices.     * Focuses on Windows Mobile 6.xx and earlier.     * @return detection of Windows Mobile     */    public boolean detectWindowsMobile() {        if (detectWindowsPhone()) {            return false;        }        //Most devices use 'Windows CE', but some report 'iemobile'        //  and some older ones report as 'PIE' for Pocket IE.        //  We also look for instances of HTC and Windows for many of their WinMo devices.        if (userAgent.indexOf(deviceWinMob) != -1                || userAgent.indexOf(deviceWinMob) != -1                || userAgent.indexOf(deviceIeMob) != -1                || userAgent.indexOf(enginePie) != -1                || (userAgent.indexOf(manuHtc) != -1 && userAgent.indexOf(deviceWindows) != -1)                || (detectWapWml() && userAgent.indexOf(deviceWindows) != -1)) {            return true;        }        //Test for Windows Mobile PPC but not old Macintosh PowerPC.        if (userAgent.indexOf(devicePpc) != -1 &&                !(userAgent.indexOf(deviceMacPpc) != -1))            return true;        return false;    }    /**     * Detects if the current browser is any BlackBerry.     * Includes BB10 OS, but excludes the PlayBook.     * @return detection of Blackberry     */    public boolean detectBlackBerry() {        if (userAgent.indexOf(deviceBB) != -1 ||                httpAccept.indexOf(vndRIM) != -1)            return true;        if (detectBlackBerry10Phone())            return true;        return false;    }    /**     * Detects if the current browser is a BlackBerry 10 OS phone.     * Excludes tablets.     * @return detection of a Blackberry 10 device     */    public boolean detectBlackBerry10Phone() {        if (userAgent.indexOf(deviceBB10) != -1 &&                userAgent.indexOf(mobile) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is on a BlackBerry tablet device.     *    Example: PlayBook     * @return detection of a Blackberry Tablet     */    public boolean detectBlackBerryTablet() {        if (userAgent.indexOf(deviceBBPlaybook) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is a BlackBerry device AND uses a     *    WebKit-based browser. These are signatures for the new BlackBerry OS 6.     *    Examples: Torch. Includes the Playbook.     * @return detection of a Blackberry device with WebKit browser     */    public boolean detectBlackBerryWebKit() {        if (detectBlackBerry() && detectWebkit())            return true;        return false;    }    /**     * Detects if the current browser is a BlackBerry Touch     * device, such as the Storm, Torch, and Bold Touch. Excludes the Playbook.     * @return detection of a Blackberry touchscreen device     */    public boolean detectBlackBerryTouch() {        if (detectBlackBerry() &&                (userAgent.indexOf(deviceBBStorm) != -1 ||                        userAgent.indexOf(deviceBBTorch) != -1 ||                        userAgent.indexOf(deviceBBBoldTouch) != -1 ||                        userAgent.indexOf(deviceBBCurveTouch) != -1 )) {            return true;        }        return false;    }    /**     * Detects if the current browser is a BlackBerry device AND     *   has a more capable recent browser. Excludes the Playbook.     *   Examples, Storm, Bold, Tour, Curve2     *   Excludes the new BlackBerry OS 6 and 7 browser!!     * @return detection of a Blackberry device with a better browser     */    public boolean detectBlackBerryHigh() {        //Disambiguate for BlackBerry OS 6 or 7 (WebKit) browser        if (detectBlackBerryWebKit())            return false;        if (detectBlackBerry()) {            if (detectBlackBerryTouch()                    || userAgent.indexOf(deviceBBBold) != -1                    || userAgent.indexOf(deviceBBTour) != -1                    || userAgent.indexOf(deviceBBCurve) != -1) {                return true;            } else {                return false;            }        } else {            return false;        }    }    /**     * Detects if the current browser is a BlackBerry device AND     *   has an older, less capable browser.     *   Examples: Pearl, 8800, Curve1     * @return detection of a Blackberry device with a poorer browser     */    public boolean detectBlackBerryLow() {        if (detectBlackBerry()) {            //Assume that if it's not in the High tier, then it's Low            if (detectBlackBerryHigh()                    || detectBlackBerryWebKit()) {                return false;            } else {                return true;            }        } else {            return false;        }    }    /**     * Detects if the current browser is the Symbian S60 Open Source Browser.     * @return detection of Symbian S60 Browser     */    public boolean detectS60OssBrowser() {        //First, test for WebKit, then make sure it's either Symbian or S60.        if (detectWebkit()                && (userAgent.indexOf(deviceSymbian) != -1                || userAgent.indexOf(deviceS60) != -1)) {            return true;        }        return false;    }    /**     *     * Detects if the current device is any Symbian OS-based device,     *   including older S60, Series 70, Series 80, Series 90, and UIQ,     *   or other browsers running on these devices.     * @return detection of SymbianOS     */    public boolean detectSymbianOS() {        if (userAgent.indexOf(deviceSymbian) != -1                || userAgent.indexOf(deviceS60) != -1                || userAgent.indexOf(deviceS70) != -1                || userAgent.indexOf(deviceS80) != -1                || userAgent.indexOf(deviceS90) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is on a PalmOS device.     * @return detection of a PalmOS device     */    public boolean detectPalmOS() {        //Make sure it's not WebOS first        if (detectPalmWebOS())            return false;        //Most devices nowadays report as 'Palm', but some older ones reported as Blazer or Xiino.        if (userAgent.indexOf(devicePalm) != -1                || userAgent.indexOf(engineBlazer) != -1                || userAgent.indexOf(engineXiino) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is on a Palm device     *    running the new WebOS.     * @return detection of a Palm WebOS device     */    public boolean detectPalmWebOS() {        if (userAgent.indexOf(deviceWebOS) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is on an HP tablet running WebOS.     * @return detection of an HP WebOS tablet     */    public boolean detectWebOSTablet() {        if (userAgent.indexOf(deviceWebOShp) != -1 &&                userAgent.indexOf(deviceTablet) != -1) {            return true;        }        return false;    }    /**     * Detects Opera Mobile or Opera Mini.     * @return detection of an Opera browser for a mobile device     */    public boolean detectOperaMobile() {        if (userAgent.indexOf(engineOpera) != -1                && (userAgent.indexOf(mini) != -1                || userAgent.indexOf(mobi) != -1)) {            return true;        }        return false;    }    /**     * Detects Opera Mobile on an Android phone.     * @return detection of an Opera browser on an Android phone     */    public boolean detectOperaAndroidPhone() {        if (userAgent.indexOf(engineOpera) != -1                && (userAgent.indexOf(deviceAndroid) != -1                && userAgent.indexOf(mobi) != -1)) {            return true;        }        return false;    }    /**     * Detects Opera Mobile on an Android tablet.     * @return detection of an Opera browser on an Android tablet     */    public boolean detectOperaAndroidTablet() {        if (userAgent.indexOf(engineOpera) != -1                && (userAgent.indexOf(deviceAndroid) != -1                && userAgent.indexOf(deviceTablet) != -1)) {            return true;        }        return false;    }    /**     * Detects if the current device is an Amazon Kindle (eInk devices only).     * Note: For the Kindle Fire, use the normal Android methods.     * @return detection of a Kindle     */    public boolean detectKindle() {        if (userAgent.indexOf(deviceKindle)!= -1 &&                !detectAndroid()) {            return true;        }        return false;    }    /**     * Detects if the current Amazon device is using the Silk Browser.     * Note: Typically used by the the Kindle Fire.     * @return detection of an Amazon Kindle Fire in Silk mode.     */    public boolean detectAmazonSilk() {        if (userAgent.indexOf(engineSilk)  != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is a     *    Garmin Nuvifone.     * @return detection of a Garmin Nuvifone     */    public boolean detectGarminNuvifone() {        if (userAgent.indexOf(deviceNuvifone) != -1) {            return true;        }        return false;    }    /**     * Detects a device running the Bada smartphone OS from Samsung.     * @return detection of a Bada device     */    public boolean detectBada() {        if (userAgent.indexOf(deviceBada) != -1) {            return true;        }        return false;    }    /**     * Detects a device running the Tizen smartphone OS.     * @return detection of a Tizen device     */    public boolean detectTizen() {        if (userAgent.indexOf(deviceTizen) != -1) {            return true;        }        return false;    }    /**     * Detects a device running the Meego OS.     * @return detection of a Meego device     */    public boolean detectMeego() {        if (userAgent.indexOf(deviceMeego) != -1) {            return true;        }        return false;    }    /**     * Detects the Danger Hiptop device.     * @return detection of a Danger Hiptop     */    public boolean detectDangerHiptop() {        if (userAgent.indexOf(deviceDanger) != -1                || userAgent.indexOf(deviceHiptop) != -1) {            return true;        }        return false;    }    /**     * Detects if the current browser is a Sony Mylo device.     * @return detection of a Sony Mylo device     */    public boolean detectSonyMylo() {        if (userAgent.indexOf(manuSony) != -1                && (userAgent.indexOf(qtembedded) != -1                || userAgent.indexOf(mylocom2) != -1)) {            return true;        }        return false;    }    /**     * Detects if the current device is on one of the Maemo-based Nokia Internet Tablets.     * @return detection of a Maemo OS tablet     */    public boolean detectMaemoTablet() {        if (userAgent.indexOf(maemo) != -1) {            return true;        } else if (userAgent.indexOf(linux) != -1                && userAgent.indexOf(deviceTablet) != -1                && !detectWebOSTablet()                && !detectAndroid()) {            return true;        }        return false;    }    /**     * Detects if the current device is an Archos media player/Internet tablet.     * @return detection of an Archos media player     */    public boolean detectArchos() {        if (userAgent.indexOf(deviceArchos) != -1) {            return true;        }        return false;    }    /**     * Detects if the current device is an Internet-capable game console.     * Includes many handheld consoles.     * @return detection of any Game Console     */    public boolean detectGameConsole() {        if (detectSonyPlaystation()                || detectNintendo()                || detectXbox()) {            return true;        }        return false;    }    /**     * Detects if the current device is a Sony Playstation.     * @return detection of Sony Playstation     */    public boolean detectSonyPlaystation() {        if (userAgent.indexOf(devicePlaystation) != -1) {            return true;        }        return false;    }    /**     * Detects if the current device is a handheld gaming device with     * a touchscreen and modern iPhone-class browser. Includes the Playstation Vita.     * @return detection of a handheld gaming device     */    public boolean detectGamingHandheld() {        if ((userAgent.indexOf(devicePlaystation) != -1) &&                (userAgent.indexOf(devicePlaystationVita) != -1)) {            return true;        }        return false;    }    /**     * Detects if the current device is a Nintendo game device.     * @return detection of Nintendo     */    public boolean detectNintendo() {        if (userAgent.indexOf(deviceNintendo) != -1                || userAgent.indexOf(deviceWii) != -1                || userAgent.indexOf(deviceNintendoDs) != -1) {            return true;        }        return false;    }    /**     * Detects if the current device is a Microsoft Xbox.     * @return detection of Xbox     */    public boolean detectXbox() {        if (userAgent.indexOf(deviceXbox) != -1) {            return true;        }        return false;    }    /**     * Detects whether the device is a Brew-powered device.     * @return detection of a Brew device     */    public boolean detectBrewDevice() {        if (userAgent.indexOf(deviceBrew) != -1) {            return true;        }        return false;    }    /**     * Detects whether the device supports WAP or WML.     * @return detection of a WAP- or WML-capable device     */    public boolean detectWapWml() {        if (httpAccept.indexOf(vndwap) != -1                || httpAccept.indexOf(wml) != -1) {            return true;        }        return false;    }    /**     * Detects if the current device supports MIDP, a mobile Java technology.     * @return detection of a MIDP mobile Java-capable device     */    public boolean detectMidpCapable() {        if (userAgent.indexOf(deviceMidp) != -1                || httpAccept.indexOf(deviceMidp) != -1) {            return true;        }        return false;    }    //*****************************    // Device Classes    //*****************************    /**     * Check to see whether the device is any device     *   in the 'smartphone' category.     * @return detection of a general smartphone device     */    public boolean detectSmartphone() {        //Exclude duplicates from TierIphone        return (detectTierIphone()                || detectS60OssBrowser()                || detectSymbianOS()                || detectWindowsMobile()                || detectBlackBerry()                || detectPalmOS());    }    /**     *  Detects if the current device is a mobile device.     *  This method catches most of the popular modern devices.     *  Excludes Apple iPads and other modern tablets.     * @return detection of any mobile device using the quicker method     */    public boolean detectMobileQuick() {        //Let's exclude tablets        if ((initCompleted == true) ||                (isMobilePhone == true))            return isMobilePhone;        //Most mobile browsing is done on smartphones        if (detectSmartphone())            return true;        if (detectWapWml()                || detectBrewDevice()                || detectOperaMobile()                || detectTierTablet())            return true;        if ((userAgent.indexOf(engineObigo) != -1)                || (userAgent.indexOf(engineNetfront) != -1)                || (userAgent.indexOf(engineUpBrowser) != -1)                || (userAgent.indexOf(engineOpenWeb) != -1))            return true;        if (detectDangerHiptop()                || detectMidpCapable()                || detectMaemoTablet()                || detectArchos())            return true;        if ((userAgent.indexOf(devicePda) != -1) &&                (userAgent.indexOf(disUpdate) < 0)) //no index found            return true;        if (userAgent.indexOf(mobile) != -1)            return true;        //We also look for Kindle devices        if (detectKindle()                || detectAmazonSilk())            return true;        return false;    }    /**     * The longer and more thorough way to detect for a mobile device.     *   Will probably detect most feature phones,     *   smartphone-class devices, Internet Tablets,     *   Internet-enabled game consoles, etc.     *   This ought to catch a lot of the more obscure and older devices, also --     *   but no promises on thoroughness!     * @return detection of any mobile device using the more thorough method     */    public boolean detectMobileLong() {        if (detectMobileQuick()                || detectGameConsole()                || detectSonyMylo()) {            return true;        }        //detect older phones from certain manufacturers and operators.        if (userAgent.indexOf(uplink) != -1)            return true;        if (userAgent.indexOf(manuSonyEricsson) != -1)            return true;        if (userAgent.indexOf(manuericsson) != -1)            return true;        if (userAgent.indexOf(manuSamsung1) != -1)            return true;        if (userAgent.indexOf(svcDocomo) != -1)            return true;        if (userAgent.indexOf(svcKddi) != -1)            return true;        if (userAgent.indexOf(svcVodafone) != -1)            return true;        return false;    }    //*****************************    // For Mobile Web Site Design    //*****************************    /**     * The quick way to detect for a tier of devices.     *   This method detects for the new generation of     *   HTML 5 capable, larger screen tablets.     *   Includes iPad, Android (e.g., Xoom), BB Playbook, WebOS, etc.     * @return detection of any device in the Tablet Tier     */    public boolean detectTierTablet() {        if ((this.initCompleted == true) ||                (this.isTierTablet == true))            return this.isTierTablet;        if (detectIpad()                || detectAndroidTablet()                || detectBlackBerryTablet()                || detectWebOSTablet()) {            return true;        }        return false;    }    /**     * The quick way to detect for a tier of devices.     *   This method detects for devices which can     *   display iPhone-optimized web content.     *   Includes iPhone, iPod Touch, Android, Windows Phone 7 and 8, BB10, WebOS, Playstation Vita, etc.     * @return detection of any device in the iPhone/Android/Windows Phone/BlackBerry/WebOS Tier     */    public boolean detectTierIphone() {        if ((this.initCompleted == true) ||                (this.isTierIphone == true))            return this.isTierIphone;        if (detectIphoneOrIpod()                || detectAndroidPhone()                || detectWindowsPhone()                || detectBlackBerry10Phone()                || (detectBlackBerryWebKit()                && detectBlackBerryTouch())                || detectPalmWebOS()                || detectBada()                || detectTizen()                || detectGamingHandheld()) {            return true;        }        return false;    }    /**     * The quick way to detect for a tier of devices.     *   This method detects for devices which are likely to be capable     *   of viewing CSS content optimized for the iPhone,     *   but may not necessarily support JavaScript.     *   Excludes all iPhone Tier devices.     * @return detection of any device in the 'Rich CSS' Tier     */    public boolean detectTierRichCss() {        if ((this.initCompleted == true) ||                (this.isTierRichCss == true))            return this.isTierRichCss;        boolean result = false;        //The following devices are explicitly ok.        //Note: 'High' BlackBerry devices ONLY        if (detectMobileQuick()) {            //Exclude iPhone Tier and e-Ink Kindle devices.            if (!detectTierIphone() && !detectKindle()) {                //The following devices are explicitly ok.                //Note: 'High' BlackBerry devices ONLY                //Older Windows 'Mobile' isn't good enough for iPhone Tier.                if (detectWebkit()                        || detectS60OssBrowser()                        || detectBlackBerryHigh()                        || detectWindowsMobile()                        || userAgent.indexOf(engineTelecaQ) != -1) {                    result= true;                }            }        }        return result;    }    /**     * The quick way to detect for a tier of devices.     *   This method detects for all other types of phones,     *   but excludes the iPhone and RichCSS Tier devices.     * @return detection of a mobile device in the less capable tier     */    public boolean detectTierOtherPhones() {        if ((this.initCompleted == true) ||                (this.isTierGenericMobile == true))            return this.isTierGenericMobile;        //Exclude devices in the other 2 categories        if (detectMobileLong()                && !detectTierIphone()                && !detectTierRichCss())            return true;        return false;    }}
相關文章
相關標籤/搜索