सामान्य रूप से एंड्रॉइड टैबलेट का पता कैसे लगाया जाता है। उपभोक्ता अभिकर्ता?


103

मैंने हर जगह देखा है। हम अपने टेबलेट साइट परीक्षण का प्रयास करने के लिए एक मोटोरोला ज़ूम का उपयोग कर रहे हैं। मुद्दा यह है कि Android Useragent एक सामान्य उपयोगकर्ता है और टैबलेट Android और मोबाइल Android के बीच कोई अंतर नहीं है। मैं केवल एक विशिष्ट डिवाइस को लक्षित नहीं करना चाहता हूं जैसे कि Xoom यूजरैगेंट क्योंकि एंड्रॉइड सबसे अधिक निकट भविष्य में कई टैबलेट डिवाइसों पर होगा।

हम Umbraco CMS का उपयोग कर रहे हैं, और हमने 51Degrees.mobi समाधान का उपयोग करते हुए देखा है, और इस समय यह हमारी आवश्यकताओं के लिए काम नहीं करेगा। भविष्य में हो सकता है। मैं जानता हूं कि 51 डेग्रीस और कुछ लोग उम्ब्रेको में कुछ एकीकरण कर रहे हैं, लेकिन अंतिम परियोजना शायद कुछ महीनों के लिए नहीं होगी।
इसलिए, हम एंड्रॉइड टैबलेट के यूजरेंट स्ट्रिंग का पता क्यों लगाना चाहते हैं और क्या यह हमारे मोबाइल साइट पर निर्देशित नहीं है जैसे कि यह वर्तमान में है।

अगर किसी को पता है कि सामान्य रूप से एंड्रॉइड टैबलेट का पता कैसे लगाया जाता है, तो विशिष्ट डिवाइस बहुत उपयोगी नहीं होगा।


2
मैं सिर्फ अनुमान लगा रहा हूं, लेकिन शायद यह देखने का एक तरीका है कि देखने का रिज़ॉल्यूशन कितना ऊंचा है?
फोनॉन

@Ponon, हाँ हम जावास्क्रिप्ट का उपयोग करने का प्रयास कर रहे हैं ताकि सर्वर पर वापस मान भेज सकें। हम एक __doPostBack की कोशिश कर रहे हैं, लेकिन यह हमारे मूल्य को वापस नहीं भेज रहा है। हमारे पास एक छिपी हुई इनपुट वैल्यू है, यह क्लाइंट साइड को दिखाता है लेकिन हमें इसे सर्वर साइड वापस नहीं मिल रहा है।
क्लोसडिजाइन

यकीन नहीं होता कि मैं यहां आपकी मदद कर सकता हूं।
फोनन

जवाबों:


112

मुद्दा यह है कि एंड्रॉइड उपयोगकर्ता-एजेंट एक सामान्य उपयोगकर्ता-एजेंट है और टैबलेट एंड्रॉइड और मोबाइल एंड्रॉइड के बीच कोई अंतर नहीं है।

यह गलत है। मोबाइल एंड्रॉइड में उपयोगकर्ता-एजेंट हेडर में "मोबाइल" स्ट्रिंग है। टैबलेट एंड्रॉइड नहीं करता है।

लेकिन यह ध्यान देने योग्य है कि कुछ टैबलेट हैं जो उपयोगकर्ताएजेंट में "मोबाइल" सफारी की रिपोर्ट करते हैं और बाद वाला मोबाइल और टैबलेट के बीच अंतर करने का एकमात्र / ठोस तरीका नहीं है


3
तुम सही हो। मुझे बस एक स्ट्रिंग की तलाश थी जिसमें एंड्रॉइड हो। मुझे उस स्ट्रिंग की खोज करनी थी जिसमें एंड्रॉइड और मोबाइल शामिल हैं। इस बारे में टिम ब्रे द्वारा लेख मिला।
क्लोसडिजाइन

6
@yoavf: ऐसा प्रतीत होता है कि XOOM के एंड्रॉइड 3.1 अपडेट के साथ तय किया गया है। मैं एक एक्सओएम का मालिक हूं और सिर्फ इसका परीक्षण किया है - कोई "मोबाइल" नहीं।
कॉमन्सवेयर

27
यह उत्तर पूरी तरह से सही नहीं है। वहाँ कुछ गोलियाँ हैं - यहां तक ​​कि नवीनतम जलाने की आग - कि रिपोर्ट "मोबाइल" userAgent स्ट्रिंग में सफारी। इस बिंदु पर टैबलेट बनाम फोन का पता लगाने का एक ठोस तरीका प्रतीत नहीं होता है जब तक कि यह उपयोगकर्ता का संयोजन और रिज़ॉल्यूशन का पता लगाने के लिए संभव समर्थन न हो।
वर्नक

22
असत्य! सैमसंग गैलेक्सी टैब स्पष्ट टैबलेट है, लेकिन इसके उपयोगकर्ता एजेंट में "मोबाइल" है
पुचू

1
मेरा मानना ​​है कि "मोबाइल" जोड़ एंड्रॉइड 4 के साथ था, अभी भी बहुत सारे डिवाइस प्री -4 हैं ... एंड्रॉइड 2.x के लिए मैं फोन को मानता हूं। 3.x के लिए मैं टैबलेट मानता हूं (हालांकि कुछ झूठे सकारात्मक होंगे) ... अन्यथा आप मोबाइल के लिए परीक्षण कर सकते हैं ...
Tracker1

20

@Carlos: अपने लेख में टिम ब्रे ने इसकी अनुशंसा की (जैसा कि Google द्वारा एक और पोस्ट किया गया है ), लेकिन दुर्भाग्य से यह सभी टैबलेट निर्माताओं द्वारा लागू नहीं किया जा रहा है।

... हम अनुशंसा करते हैं कि बड़े-कारक कारक उपकरणों का निर्माण उपयोगकर्ता एजेंट से "मोबाइल" को हटा दें ...

अधिकांश एंड्रॉइड टैबलेट उपयोगकर्ता-एजेंट के तार मैंने मोबाइल सफारी का उपयोग करते देखा है, जैसे सैमसंग गैलेक्सी टैब:

मोज़िला / 5.0 (लिनक्स; यू; एंड्रॉइड 2.2; en-us; SCH-I800 बिल्ड / फ़रोयो) AppleWebKit / 533.1 (KHTML, जैसे गेको) संस्करण / 4.0 मोबाइल सफारी / 533.1

इसलिए फिलहाल मैं एंड्रॉइड टैबलेट का पता लगाने के लिए डिवाइस के नाम पर जांच कर रहा हूं। जब तक बाजार पर बस कुछ मॉडल हैं, यह ठीक है लेकिन जल्द ही यह एक बदसूरत समाधान होगा।

कम से कम XOOM के मामले में, मोबाइल हिस्सा चला गया लगता है:

मोज़िला / 5.0 (लिनक्स; यू; एंड्रॉइड 3.0; en-us; Xoom बिल्ड / HRI39) AppleWebKit / 534.13 (KHTML, जैसे गेको) संस्करण / 4.0 सफारी / 534.13

लेकिन जैसा कि वर्तमान में केवल Andorid 3.x के साथ टैबलेट हैं, एंड्रॉइड 3 पर जांच करना पर्याप्त होगा।


1
क्या आप उन डिवाइसों की सूची पोस्ट कर सकते हैं जिन्हें आपने चेक किया था और कोडिंग।
LTech

12

"मोबाइल" उपयोगकर्ता-एजेंट का पता लगाने के लिए मो 'बेहतर है

यद्यपि आप अभी भी एंड्रॉइड-विशिष्ट सुविधाओं को लागू करने के लिए उपयोगकर्ता-एजेंट में "एंड्रॉइड" का पता लगाना चाहते हैं, जैसे कि टच-स्क्रीन अनुकूलन, हमारा मुख्य संदेश है: क्या आपकी मोबाइल साइट यूएए सूँघने पर निर्भर करती है, कृपया स्ट्रिंग्स "मोबाइल" का पता लगाएं उपयोगकर्ता-एजेंट में "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>

3
यह पूरी तरह से काम करता है। मैंने इसे iPad और iPhone / iPod के लिए जोड़ा। else if (userAgent.search("ipad") > -1) document.write("<b> iPad <br>") else if ((userAgent.search("iphone") > -1)||(userAgent.search("ipod") > -1)) document.write("<b> iPhone or iPod <br>")
स्पेंसर कोल

यह mozilla / 5.0 (linux; u? Android 2.2; en-gb; gt-p1000 build / froyo) applewebkit / 533.1 (khtml, जैसे gecko) संस्करण / 4.0 मोबाइल सफारी / 533.1 के लिए कैसे काम करता है, जिसमें 'मोबाइल' शब्द है सैमसंग गैलेक्सी टैबलेट के लिए?
लिट्टे

8

आप इस स्क्रिप्ट को आज़मा सकते हैं क्योंकि आप केवल 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;
}
}

मैंने गितुब पर एक प्रोजेक्ट बनाया। इसे देखें - https://github.com/codefuze/js-mobile-tablet-redirect । कुछ भी गड़बड़ होने पर बेझिझक मुद्दों को प्रस्तुत करें!


1
यह Android संस्करण> 3.0, जैसे ICS (4.0) के लिए काम नहीं करेगा। मुझे लगता है कि स्वीकृत उत्तर सही है - जांचें कि क्या "मोबाइल सफारी" उपयोगकर्तागेंट में है।
सुमन

अन्य किंडल के बारे में निश्चित नहीं है, लेकिन किंडल फायर 1 का उपयोगकर्ता-एजेंट स्ट्रिंग में 'किंडल' नहीं है - और न ही इसमें 'एंड्रॉइड' शामिल नहीं है; एकमात्र सुराग 'सिल्क' और 'सिल्क-एक्सेलेरेटेड' शब्द हैं।
mklement0

6

एक बार जब मैंने उपयोगकर्ता एजेंट में एंड्रॉइड का पता लगाया, तो यह है कि मैं टैबलेट और स्मार्टफोन ब्राउज़रों के बीच अंतर कैसे करता हूं (यह पायथन का उपयोग कर रहा है, लेकिन अन्य प्रोग्रामिंग भाषाओं के लिए भी उतना ही सरल है):

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

अद्यतन: नीचे दी गई टिप्पणियों के अनुसार, एंड्रॉइड पर क्रोम के उपयोग को प्रतिबिंबित करने के लिए।


एजेंट में "मोबाइल" की तलाश क्यों न करें?
एरेन टेंटेकिन

मुझे लगता है कि यह भी काम कर सकता है, लेकिन मुझे लगता है कि सिर्फ "मोबाइल" के लिए खोज करना खतरनाक हो सकता है - नाम के साथ डिवाइस हो सकते हैं, "एचटीसी मोबाइल", आदि मुझे लगता है कि यह अनुशंसित दृष्टिकोण है।
सुमन

1
अब जब Google ने Android के लिए Chrome जारी किया, तो आपके दृष्टिकोण में थोड़ी समस्या हो सकती है। क्योंकि, एंड्रॉइड पर क्रोम सामान्य रूप से "मोबाइल सफारी" के बजाय "क्रोम मोबाइल" के रूप में रिपोर्ट करेगा, जैसा कि स्टॉक एंड्रॉइड ब्राउज़र कर रहा है। कुछ आधिकारिक सिफारिशों के लिए: Developers.google.com/chrome/mobile/docs/user-agent
Eren Tantekin

4

इस साइट पर एजेंट स्ट्रिंग्स के आधार पर:

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

यह परिणाम सामने आए:
पहला:

सभी टैबलेट डिवाइसेज़ में हैं:
1. टैबलेट
2. आईपैड

दूसरा:

सभी फ़ोन डिवाइसेस में हैं:
1. मोबाइल
2. फ़ोन

तीसरा:

टैबलेट और फोन डिवाइसेस हैं:
1. एंड्रॉइड

यदि आप स्तर से स्तर का पता लगा सकते हैं, तो मुझे लगता है कि परिणाम 90 प्रतिशत सच है। SharePoint डिवाइस चैनल की तरह।


2

यहाँ मेरा उपयोग है:

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

हम अगर कुछ गोलियाँ छोड़ "मोबाइल" यह नहीं कह सकते, कई Samsung Galaxy Tab सहित कर , उनके उपयोगकर्ता-एजेंट में मोबाइल है यह एक एंड्रॉयड टैबलेट और एंड्रॉयड फोन के बीच का पता लगाने के असंभव बना मॉडल विशेष जाँच का सहारा के बिना। यह IMHO समय की बर्बादी है जब तक आप मासिक आधार पर अपनी डिवाइस सूची को अपडेट और विस्तारित करने की योजना नहीं बनाते हैं।

दुर्भाग्य से यहां सबसे अच्छा समाधान Google को इस बारे में शिकायत करना और उन्हें एंड्रॉइड के लिए क्रोम ठीक करना है, इसलिए यह मोबाइल डिवाइस और टैबलेट के बीच पहचान करने के लिए कुछ पाठ जोड़ता है। नर्क में भी एक विशिष्ट जगह में एक भी पत्र एम या टी नरक पर्याप्त होगा, लेकिन मुझे लगता है कि बहुत अधिक समझ में आता है।


1

Xoom में यूजर-एजेंट में Xoom शब्द है: मोज़िला / 5.0 (लिनक्स; यू; एंड्रॉइड 3.0.1; en-us; Xoom Build / HRI66) AppleWebKit / 534.13 (KHTML, जैसे गेको) संस्करण / 4.0 सफारी / 534.13;

उपयोगकर्ता-एजेंट में गैलेक्सी टैब में "मोबाइल" है: मोज़िला / 5.0 (लिनक्स; यू; एंड्रॉइड 2.2; एन-यू ... एसएच-आई 800 बिल्ड / फ़्रीओ) AppleWebKit / 533.1 (KHTML, जैसे गेको) संस्करण: 4.0 मोबाइल सफारी / 533.1;

इसलिए, Xoom का पता लगाना आसान है, यह पता लगाना मुश्किल है कि एक विशिष्ट Android संस्करण मोबाइल है या नहीं।


1

अधिकांश आधुनिक टैबलेट मधुकोश उर्फ ​​3.x चलाते हैं। कोई भी फोन डिफ़ॉल्ट रूप से 3.x नहीं चलता है। अधिकांश टैबलेट जो वर्तमान में 2.x पर चलते हैं, उनकी क्षमता कम होती है और जब भी मोबाइल साइट के साथ प्रस्तुत किया जाता है तो बेहतर हो सकता है। मुझे पता है कि यह निर्दोष नहीं है .. लेकिन मुझे लगता है कि यह मोबाइल की अनुपस्थिति से कहीं अधिक सटीक है।


1
वास्तव में फोन 3.x भी नहीं चला सकते क्योंकि यह टैबलेट का केवल एंड्रॉइड रिलीज था और यह खुला नहीं था।
एरेन टैंटेकिन

1

जबकि मोबाइल एंड्रॉइड में उपयोगकर्ता-एजेंट स्ट्रिंग में "मोबाइल" हो सकता है, क्या होगा अगर यह टैबलेट पर एंड्रॉइड के लिए ओपेरा मोबाइल का उपयोग कर रहा है? यह अभी भी "मोबाइल" होगा इसमें उपयोगकर्ता-एजेंट स्ट्रिंग है, लेकिन टेबलेट के आकार की साइटों को प्रदर्शित करना चाहिए। आपको "मोबाइल" के लिए परीक्षण करने की आवश्यकता होगी जो केवल "मोबाइल" के बजाय "ओपेरा" से पहले नहीं है

या आप ओपेरा मोबाइल के बारे में भूल सकते हैं।


1
ओपेरा मोबाइल उपयोगकर्ता स्ट्रिंग में 'मोबाइल' का उपयोग नहीं करता है, यह 'मोबाइल' का उपयोग करता है। यहां
इयान स्टैनवे

2
मोबाइलों के लिए ओपेरा मोबाइल में यूजर एजेंट स्ट्रिंग में "ओपेरा मोबि" है, लेकिन टैबलेट के लिए ओपेरा मोबाइल में उपयोगकर्ता एजेंट स्ट्रिंग में "ओपेरा टैबलेट" है।
टैगवा

1

मैं का उपयोग कर की सिफारिश करेंगे Categorizr यदि उपयोगकर्ता एक गोली पर है पता लगाने के लिए। आप यहां वर्गीकृत परीक्षा परिणाम देख सकते हैं


1

यदि आप "मोबाइल" की अनुपस्थिति का उपयोग करते हैं तो इसका लगभग सही है। लेकिन HTC Sensation 4G (एंड्रॉइड 2.X के साथ 4.3 इंच) हैं जो मोबाइल कीवर्ड नहीं भेजते हैं।

आप इसका अलग से इलाज क्यों करना चाहते हैं, इसका कारण यह है iframesआदि।


0

51Degrees बीटा, 1.0.1.6 और नवीनतम स्थिर रिलीज 1.0.2.2 (4/28/2011) अब टैबलेट के लिए सूंघने की क्षमता है। मूल रूप से की तर्ज पर:

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

आशा है कि यह आपकी मदद करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.