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

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

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

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

Ответ 1

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

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

Но стоит упомянуть, что существует довольно много планшетов, которые сообщают о "мобильном" Safari в userAgent, и последний не является единственным/надежным способом провести различие между Mobile и Tablet.

Ответ 2

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

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

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

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 будет достаточно.

Ответ 3

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

Пока вы все еще можете обнаружить "андроид" в User-Agent, чтобы реализовать Android-специфические функции, такие как сенсорный экран оптимизации, наше главное сообщение: если ваш мобильный сайт зависит от UA нюхает, пожалуйста, определите строки "мобильный" и "андроид" , скорее чем просто "андроид" в 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>

Ответ 4

Вы можете попробовать этот script, так как вы не хотите устанавливать таргетинг только на 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. Не стесняйтесь отправлять вопросы, если что-то не так!

Ответ 5

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

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

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

Ответ 6

Основываясь на строках Агентов на этом сайте:

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

Результаты: Сначала:

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

Второе:

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

В-третьих:

У планшетных и телефонных устройств есть:
1. Android

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

Ответ 7

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

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
    }

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

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 мобильной или нет.

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

Ответ 14

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

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

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

Ответ 15

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