Как обнаружить Android Tablets в целом. UserAgent?

Я везде искал. Мы используем Motorola Zoom для тестирования наших планшетов. Проблема в том, что Android Useragent является общим Useragent, и нет разницы между планшетом Android и мобильным телефоном Android. Я не хочу просто настраивать таргетинг на конкретное устройство, например, Xoom Useragent, так как Android, скорее всего, будет на нескольких планшетных устройствах в ближайшем будущем.

Мы используем CMS Umbraco, и мы рассмотрели использование решения 51Degrees.mobi, и на данный момент это не будет работать для наших нужд. Возможно в будущем. Я знаю 51Degrees, и некоторые из людей в Umbraco собираются сделать некоторую интеграцию в Umbraco, но окончательный проект, вероятно, не пройдет пару месяцев.
Следовательно, почему мы хотели бы обнаружить строку Useragent на Android-планшете и не направить ее прямо на наш мобильный сайт, как сейчас.

Если кто-нибудь знает, как обнаружить и Android Tablet в целом, не конкретное устройство будет очень полезно.

    Проблема в том, что пользовательский агент Android является общим User-Agent, и нет разницы между планшетом Android и мобильным телефоном Android.

    Это неверно. Мобильный Android имеет строку «Мобильный» в заголовке User-Agent. Планшет Android не работает.

    @ Карлос: В своей статье Тим Брей рекомендует это (как и другой пост от Google ), но, к сожалению, он не применяется всеми производителями планшетов.

    … Мы рекомендуем, чтобы устройства крупноформатных преобразователей удаляли «Мобильный» из User Agent …

    Большинство строк пользовательского агента планшета Android, которые я видел, используют мобильное safari, например Samsung Galaxy Tab:

    Mozilla / 5.0 (Linux, U, Android 2.2, en-us; SCH-I800 Build / FROYO) AppleWebKit / 533.1 (KHTML, например, Gecko) Версия / 4.0 Mobile Safari / 533.1

    Поэтому на данный момент я проверяю имена устройств для обнаружения планшетов Android. Пока на рынке есть всего несколько моделей, это нормально, но скоро это будет уродливое решение.

    По крайней мере, в случае XOOM мобильная часть, кажется, ушла:

    Mozilla / 5.0 (Linux, U, Android 3.0, en-us; Xoom Build / HRI39) AppleWebKit / 534.13 (KHTML, например, Gecko) Версия / 4.0 Safari / 534.13

    Но поскольку в настоящее время есть только таблетки с Andorid 3.x, проверки на Android 3 будет достаточно.

    Мо ‘лучше также обнаружить «мобильный» пользовательский агент

    Хотя вы все еще можете обнаружить «андроид» в User-Agent для реализации специфичных для Android функций, таких как оптимизация сенсорного экрана, наше основное сообщение: если ваш мобильный сайт зависит от нюхания UA, пожалуйста, определите строки «мобильные», и «андроид», а не просто «андроид» в User-Agent. Это помогает правильно обслуживать как ваших мобильных, так и планшетов.

    Обнаружение Android-устройства через браузер

    < script language="javascript">   

    Вы можете попробовать этот сценарий, так как вы не хотите нацеливать Xoom только. У меня нет Xoom, но я должен работать.

     function mobile_detect(mobile,tablet,mobile_redirect,tablet_redirect,debug) { var ismobile = (/iphone|ipod|android|blackberry|opera|mini|windows\sce|palm|smartphone|iemobile/i.test(navigator.userAgent.toLowerCase())); var istablet = (/ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase())); if (debug == true) { alert(navigator.userAgent); } if (ismobile && mobile==true) { if (debug == true) { alert("Mobile Browser"); } window.location = mobile_redirect; } else if (istablet && tablet==true) { if (debug == true) { alert("Tablet Browser"); } window.location = tablet_redirect; } } 

    Я создал проект по github. Проверьте это – https://github.com/codefuze/js-mobile-tablet-redirect . Не стесняйтесь отправлять вопросы, если что-то не так!

    Как только я обнаружил Android в пользовательском агенте, это то, как я различаю планшет и браузеры для смартфонов (это использует Python, но так же просто для других языков программирования):

     if ("Android" in agent): if ("Mobile" in agent): deviceType = "Phone" else: deviceType = "Tablet" 

    ОБНОВЛЕНО: отразить использование Chrome на Android, как указано ниже.

    На основе строк Агентов на этом сайте:

     http://www.webapps-online.com/online-tools/user-agent-strings 

    Полученные результаты:
    Первый:

    Все устройства планшета имеют:
    1. Планшет
    2. iPad

    Во-вторых:

    Все телефонные устройства имеют:
    1. Мобильный
    2. Телефон

    В третьих:

    Планшетные и телефонные устройства имеют:
    1. Android

    Если вы можете определить уровень за уровнем, я верю, что результат на 90 процентов прав. Как каналы устройств SharePoint.

    Вот что я использую:

     public static boolean onTablet() { int intScreenSize = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; return (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE) // LARGE || (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE + 1); // Configuration.SCREENLAYOUT_SIZE_XLARGE } 

    Хотя мы не можем сказать, что некоторые highcharts опускают «мобильные», многие из которых include Samsung Galaxy Tab , имеют мобильный телефон в своем пользовательском агенте, что делает невозможным обнаружение между планшетом Android и телефоном Android, не прибегая к проверке специфики модели. Это ИМХО – пустая трата времени, если вы планируете ежемесячно обновлять и расширять список своих устройств.

    К сожалению, лучшим решением здесь является жалоба на Google об этом и заставить их исправить Chrome для Android, чтобы он добавил текст для идентификации между мобильным устройством и планшетом. Ад даже одной буквы M OR T в определенном месте в строке будет достаточно, но, я думаю, это имеет слишком большой смысл.

    Xoom имеет слово Xoom в пользовательском агенте: Mozilla / 5.0 (Linux; U; Android 3.0.1; en-us; Xoom Build / HRI66) AppleWebKit / 534.13 (KHTML, например, Gecko) Версия / 4.0 Safari / 534.13

    Galaxy Tab имеет «Мобильный» в пользовательском агенте: Mozilla / 5.0 (Linux, U, Android 2.2, en-us; SCH-I800 Build / FROYO) AppleWebKit / 533.1 (KHTML, например Gecko) Версия / 4.0 Mobile Safari / 533.1

    Таким образом, легко обнаружить Xoom, трудно обнаружить, является ли конкретная версия Android мобильной или нет.

    Большинство современных планшетов управляют сотой, ака 3.x. По умолчанию телефоны не работают 3.x. Большинство планшетов, которые в настоящее время работают 2.x, имеют меньшую емкость и, возможно, лучше, когда их покажет мобильный сайт. Я знаю, что это не безупречно .. но я думаю, это намного точнее, чем отсутствие мобильных.

    Хотя Mobile Android может иметь «мобильный» в своей пользовательской строке, что, если он использует Opera Mobile для Android на планшете? Он по-прежнему будет иметь «мобильный» в своей пользовательской строке, но должен показывать сайты размером с Tablet. Вам нужно будет протестировать «мобильный», которому не предшествует «опера», а не просто «мобильная»,

    или вы можете просто забыть о Opera Mobile.

    Я бы рекомендовал использовать Categorizr для определения того, находится ли пользователь на планшете. Здесь вы можете просмотреть результаты тестирования категории.

    Если вы используете отсутствие «Мобильный», то это почти правильно. Но есть HTC Sensation 4G (4.3 дюйма с android 2.X), который не отправляет ключевое слово Mobile.

    Причина, по которой вы можете относиться к ней отдельно, связана с iframes и т. Д.

    В версии 51Degrees beta 1.0.1.6 и последнем стабильном выпуске 1.0.2.2 (4/28/2011) теперь есть возможность обнюхивать планшет. В основном по строкам:

     string capability = Request.Browser["is_tablet"]; 

    Надеюсь, это вам поможет.

    Попробуйте OpenDDR , он свободен в отличие от большинства других упомянутых решений.

    Interesting Posts

    Android – Соглашение об именах пакетов

    значения отключенных входов не будут отправлены?

    Как обрезать CvMat в OpenCV?

    Самый эффективный способ добавления массивов в C #?

    Почему я не могу активировать профиль Maven2 из другого профиля?

    Как приостановить Flash-контент в Android WebView, когда моя активность не видна?

    Когда перегрузка проходит по ссылке (l-value и r-value), предпочтительной для передачи по значению?

    Entity Framework: запрос дочерних объектов

    Как изменить изображение с помощью canvasа HTML5?

    Почему Fetch API Отправляет первый запрос PUT в качестве ВАРИАНТОВ

    Запись в ZipArchive с использованием HttpContext OutputStream

    Почему моя беспроводная сетевая карта должна быть сброшена каждый раз, когда я запускаю или разбужу свою машину?

    Лучший способ передачи файлов через локальную сеть между двумя компьютерами Linux

    Блокнот ++ дергает

    Что такое «переключаемые графические карты» в ноутбуках?

    Давайте будем гением компьютера.