web-dev-qa-db-ja.com

一般的にAndroidタブレットを検出する方法。ユーザーエージェント?

私はどこでも見ました。モトローラズームを使用して、タブレットサイトのテストを試みています。問題は、Android Useragentが一般的なUseragentであり、タブレットAndroidとモバイルAndroidの間に違いがないことです。近い将来Androidが複数のタブレットデバイスに搭載される可能性が高いため、Xoom Useragentのような特定のデバイスのみをターゲットにしたくありません。

私たちはUmbraco CMSを使用しており、51Degrees.mobiソリューションの使用を検討しましたが、現在のところ、これはニーズに合っていません。たぶん将来的に。 51DegreesとUmbracoの一部の人々がUmbracoへの統合を行っていることは知っていますが、おそらく最終プロジェクトは数か月間は公開されません。
したがって、AndroidタブレットのUseragent文字列を検出し、現在のようにモバイルサイトに直接送信しないようにする理由。

一般に、タブレットの検出方法とAndroidタブレットの知識があれば、特定のデバイスはあまり役に立ちません。

102
ClosDesign

問題は、Android User-Agentが一般的なUser-Agentであり、タブレットAndroidとモバイルAndroidの間に違いがないことです。

これは間違っています。 Mobile AndroidのUser-Agentヘッダーに「Mobile」文字列が含まれています。タブレットAndroidはサポートしていません。

しかし、言及する価値がある userAgentには「モバイル」Safariを報告するタブレットがかなりあり、後者は区別する唯一の/確実な方法ではないモバイルとタブレット。

111
CommonsWare

@Carlos:彼の記事で、Tim Brayはこれを推奨しています(別の Googleによる投稿 )が、残念ながらすべてのタブレットメーカーによって適用されているわけではありません。

...ラージフォームファクタデバイスの製造業者は、ユーザーエージェントから「モバイル」を削除することをお勧めします...

私が見たほとんどのAndroidタブレットユーザーエージェント文字列は、モバイルサファリを使用しています。 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をチェックするだけで十分です。

20
Bitwalker

「モバイル」ユーザーエージェントも検出する方が良い

ユーザーエージェントで「Android」を検出して、タッチスクリーンの最適化などのAndroid固有の機能を実装することもできますが、主なメッセージは次のとおりです。モバイルサイトがUAスニッフィングに依存する場合は、「mobile」という文字列を検出してくださいUser-Agentの「Android」ではなく「Android」。これにより、モバイルユーザーとタブレットユーザーの両方に適切に対応できます。

ブラウザを介した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>
12
Jorgesys

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 問題がある場合は、問題を投稿してください。

8
CodeFuze

ユーザーエージェントでAndroidを検出したら、これがタブレットとスマートフォンのブラウザーを区別する方法です(これはPythonを使用していますが、他のプログラミング言語でも同様に簡単です)。

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

更新:以下のコメントに従って、AndroidでのChromeの使用を反映します。

6
Suman

このサイトのエージェント文字列に基づいて:

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

この結果が出ました:
最初:

すべてのタブレットデバイスには次のものがあります。
1。タブレット
2。 iPad

第二:

すべての電話デバイスには次のものがあります。
1。モバイル
2。電話

三番:

タブレットおよび電話デバイスには次のものがあります。
1。アンドロイド

レベルごとに検出できる場合、結果は90%真実です。 SharePointデバイスチャネルと同様。

3
Jalali Shakib

一部のタブレットが「モバイル」を省略しているとは言えませんが、Samsung Galaxy Tab doを含む多くのタブレットでは、ユーザーエージェントにモバイルがあり、Androidモデルの詳細を確認することなく、タブレットとAndroid電話。このIMHOは、デバイスリストを毎月更新および拡張する予定がない限り、時間の無駄です。

残念ながら、ここでの最善の解決策は、これについてGoogleに苦情を申し立てて、Chrome for Androidを修正し、モバイルデバイスとタブレットを識別するためのテキストを追加することです。地獄では、文字列の特定の場所に1文字M OR Tでも十分ですが、それはあまりにも理にかなっていると思います。

2
D Langhorne

私が使用するものは次のとおりです。

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
    }
2
Regis St-Gelais

「モバイル」の不在を使用する場合、それはほとんど正しいです。ただし、モバイルキーワードを送信しないHTC Sensation 4G(4.3インチのAndroid 2.X)があります。

個別に扱いたい理由は、iframesなどが原因です。

1
zel

最近のほとんどのタブレットは、ハニカムとも呼ばれる3.xを実行します。デフォルトで3.xを実行する電話はありません。現在2.xを実行しているほとんどのタブレットは容量が少なく、いずれにせよモバイルサイトを表示したほうが優れている場合があります。私はそれが完璧ではないことを知っています..しかし、私はそれがモバイルの不在よりもはるかに正確だと思います。

1
gjr

XoomのユーザーエージェントにはWord 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モバイルSafari/533.1

そのため、Xoomの検出は簡単で、特定のAndroidバージョンがモバイルかどうかの検出は困難です。

1
travyo

Categorizr を使用して、ユーザーがタブレットを使用しているかどうかを検出することをお勧めします。 categorizrのテスト結果を表示できます here

1
hybrid

モバイルAndroidのユーザーエージェント文字列に「モバイル」が含まれている場合がありますが、タブレットのOperaにAndroid Mobileを使用している場合はどうなりますか?ユーザーエージェント文字列にはまだ「モバイル」が含まれていますが、タブレットサイズのサイトが表示されているはずです。 「モバイル」だけでなく「オペラ」が前にない「モバイル」をテストする必要があります。

または、Opera Mobileを忘れてしまうこともあります。

1
GeeItSomeLaldy

51Degreesベータ版1.0.1.6および最新の安定版リリース1.0.2.2(4/28/2011)には、タブレット用のスニッフィング機能があります。基本的には次のとおりです。

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

これがお役に立てば幸いです。

0
Joey Schluchter

OpenDDR を試してください。他のほとんどのソリューションとは異なり、無料です。

0
Werner Keil