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

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

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

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

15 ответов


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

Это неверно. Mobile Android имеет строку "Mobile" в заголовке User-Agent. Планшет Андроид не.


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

... Мы рекомендуем производителям устройств с большим форм-фактором удалить "мобильный" из пользовательского агента...

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

Mozilla / 5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) версия/4.0 мобильное сафари/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 будет достаточно.


Mo 'лучше также обнаружить "мобильный" user-agent

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

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

 < script language="javascript"> <!--
     var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
              if (mobile) {
                  alert("MOBILE DEVICE DETECTED");
                  document.write("<b>----------------------------------------<br>")
                  document.write("<b>" + navigator.userAgent + "<br>")
                  document.write("<b>----------------------------------------<br>")
                  var userAgent = navigator.userAgent.toLowerCase();
                  if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1))
                         document.write("<b> ANDROID MOBILE <br>")
                   else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1))
                       document.write("<b> ANDROID TABLET <br>")
              }
              else
                  alert("NO MOBILE DEVICE DETECTED"); //--> </script>

вы можете попробовать этот скрипт, так как вы не хотите нацеливаться только на 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 в User agent, вот как я различаю браузеры планшетов и смартфонов (это использует 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
    }

хотя мы не можем сказать, если некоторые таблетки опускают "мобильный", многие из них, включая Samsung Galaxy Tab do имейте мобильный телефон в своем пользовательском агенте, что делает невозможным обнаружение между планшетом android и телефоном android, не прибегая к проверке специфики модели. Это имхо является пустой тратой времени, если вы не планируете обновлять и расширять список устройств на ежемесячной основе.

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


Xoom имеет слово Xoom в user-agent: 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 имеет "мобильный" в user-agent: 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 мобильной или не.


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


в то время как мобильный Android может иметь "мобильный" в строке пользовательского агента, что делать, если он использует Opera Mobile для Android на планшете? Он по-прежнему будет иметь "мобильный" в строке user-agent, но должен отображать сайты размером с планшет. Вам нужно будет протестировать "мобильный", которому не предшествует "opera", а не просто"мобильный"

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


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


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

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


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

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

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


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