दिलचस्प पोस्ट
ऑपरेशन पूरा नहीं किया जा सकता क्योंकि DbContext त्रुटि का निपटारा किया गया है आईओएस: एन्कोड ऐप- info.plist variables को कोड में मैं Google लाइन चार्ट के किनारे पर छवि या आइकन कैसे जोड़ सकता हूं कैसे Firebase डेटा संशोधन को प्रतिबंधित करने के लिए? OS X पर MySQL रूट उपयोगकर्ता पासवर्ड सेट करना ग्रहण, एंड्रॉइड, स्काला ने आसान बनाया लेकिन अभी भी काम नहीं करता है विधानसभा, प्रिंटिंग आस्की नंबर संभवतः पीछे की तरफ से पुनरावृति करना संभव है? विभिन्न वायरस स्कैनर के कारण माइक्रोसॉफ्ट विज़ुअल स्टूडियो का मंदी कैसे बताओ कि कोई सत्र सक्रिय है या नहीं? जहां उपयोगकर्ता अपलोड से छवियों को बचाने के लिए सबसे अच्छी जगह है स्ट्रिंग की लंबाई प्राप्त करें जावा में Ctrl + C पकड़ना सी # परिवर्तनशील scoping: इस क्षेत्र में 'एक्स' घोषित नहीं किया जा सकता क्योंकि यह 'एक्स' के लिए एक अलग अर्थ देगी ऑडियो और वीडियो इवेंट बबल क्यों नहीं करते?

Android पर क्रोम में भौतिक स्क्रीन आयाम / डीपीआई / पिक्सेल घनत्व प्राप्त करना

सवाल

एंड्रॉइड पर, वास्तव में क्रोम में वास्तव में सही स्क्रीन भौतिक आयाम पाने का एक सुरक्षित तरीका है? यदि आवश्यक हो, तो क्रोम और एंड्रॉइड के पुराने संस्करण को दायरे से बाहर रखा जा सकता है

पूर्व अनुसंधान

जावास्क्रिप्ट (या सीएसएस) के भीतर से किसी डिवाइस के वास्तविक भौतिक स्क्रीन आयामों को पाने के बारे में स्टैक ओवरफ्लो पर बहुत से मृत अंत प्रश्न हैं ऐसा लगता है कि एचटीएमएल एपीआई मानकीकरण और उसमें वास्तविक ब्राउज़र कार्यान्वयन के बीच कोई अभिसरण नहीं है, यह उल्लेख नहीं कि ब्राउज़र का कार्यान्वयन ओएस एपीआई पर निर्भर करता है जो बदले में सही जानकारी प्रदान करने वाले हार्डवेयर पर भरोसा करता है।

रास्ते में कुछ पूर्व उत्तर रहस्यमय (वर्ष 2011 और जैसे) एक निश्चित पिक्सेल घनत्व उस समय प्रबल में मानते हुए, और इसलिए बेकार है। अन्य वेबकिट से संबंधित हैं, लेकिन क्रोम ब्लिंक ने क्रोम (?) में वेबकिट को स्थानांतरित कर दिया है।

मैं केवल एंड्रॉइड पर क्रोम के लिए चीजों को बाधित करके एक साधारण समाधान के अस्तित्व को तलाशना चाहूंगा

ध्यान दें

यह ब्राउज़र के अंदर एक जावास्क्रिप्ट (या सीएसएस) समाधान के बारे में है, मूल एप के समाधान नहीं।

Solutions Collecting From Web of "Android पर क्रोम में भौतिक स्क्रीन आयाम / डीपीआई / पिक्सेल घनत्व प्राप्त करना"

आप वास्तव में वास्तविक भौतिक आयाम या वास्तविक डीपीआई नहीं प्राप्त कर सकते हैं और यहां तक ​​कि अगर आप कर सकते हैं, तो आप उनके साथ कुछ भी नहीं कर सकते।

यह एक बहुत लंबी और जटिल कहानी है, इसलिए मुझे माफ कर दो।

वेब और सभी ब्राउज़र 1px को एक सीएसएस पिक्सेल नामक इकाई के रूप में परिभाषित करते हैं। एक सीएसएस पिक्सेल वास्तविक पिक्सेल नहीं है, बल्कि एक इकाई है जिसे डिवाइस के कोण को देखने के आधार पर एक इंच के 1/96 वां माना जाता है। इसे संदर्भ पिक्सेल के रूप में निर्दिष्ट किया गया है

संदर्भ पिक्सेल, डिवाइस पर एक पिक्सेल का दृश्य कोण है जिसमें 96 डीपीआई के पिक्सेल घनत्व और एक हाथ की लंबाई के रीडर से दूरी है। नाममात्र हाथ की 28 इंच की लंबाई के लिए, दृश्य कोण इसलिए 0.0213 डिग्री के बारे में है। बांह की लंबाई में पढ़ने के लिए, 1px इस प्रकार लगभग 0.26 मिमी (1/6 6 इंच) से मेल खाती है।

अंतरिक्ष के 0.26 मिमी में हमारे पास बहुत से वास्तविक डिवाइस पिक्सल हो सकते हैं।

ब्राउज़र मुख्य रूप से विरासत के कारणों के लिए करता है – वेब पर पैदा होने पर सबसे मॉनिटर 96 डीपीआई होते हैं – लेकिन साथ ही साथ "पुराने दिनों" में एक 15 इंच स्क्रीन पर एक 22 पिक्सल बटन 800×600 पर 22px बटन के दो बार होगा 1600×1200 पर एक 15 इंच मॉनिटर इस स्थिति में स्क्रीन के डीपीआई वास्तव में 2x है (क्षैतिज रूप से दो बार संकल्प लेकिन एक ही भौतिक अंतरिक्ष में)। यह वेब और एप्लिकेशन के लिए एक बुरी स्थिति है, इसलिए अधिकांश ऑपरेटिंग सिस्टम उपकरण स्वतंत्र इकाइयों (एंड्रॉइड पर डीआईपीएस, आईओएस पर पीटी और वेब पर सीएसएस पिक्सेल ) में सार पिक्सेल मूल्यों के कई तरीके तैयार किए।

एक व्यूपोर्ट की अवधारणा को पेश करने के लिए आईफ़ोन सफ़ारी ब्राउज़र पहले (मेरे ज्ञान के लिए) था यह एक छोटा स्क्रीन पर रेंडर करने के लिए पूर्ण डेस्कटॉप स्टाइल एप्लिकेशन को सक्षम करने के लिए बनाया गया था। व्यूपोर्ट 960px चौड़ा होने के लिए परिभाषित किया गया था। यह अनिवार्य रूप से पृष्ठ को 3x से ज़ूम किया गया (आईफ़ाइल मूल रूप से 320px था) इसलिए 1 सीएसएस पिक्सेल भौतिक पिक्सेल का 1 / 3rd जब आप व्यूोर्ट को परिभाषित करते हैं, तो आप इस उपकरण को 1 सीएसएस पिक्सेल = 1 असली पिक्सेल से 163 डीपीआई से मेल कर सकते हैं।

एक व्यूपोर्ट का उपयोग करके जहां चौड़ाई "डिवाइस-चौड़ाई" है, आपको प्रत्येक डिवाइस के आधार पर व्यूपोर्ट की चौड़ाई को इष्टतम सीएसएस पिक्सेल आकार में सेट करने से मुक्त कर देता है, ब्राउज़र केवल आपके लिए करता है

डबल डीपीआई उपकरणों की शुरूआत के साथ, मोबाइल फोन निर्माताओं मोबाइल पेजों को 50% छोटा नहीं दिखाना चाहते थे, इसलिए उन्होंने डिवाइस पिक्सलराटियो नामक एक अवधारणा की शुरुआत की (पहले मुझे विश्वास है कि मोबाइल वेबकिट पर), इससे उन्हें 1 सीएसएस पिक्सेल को मोटे तौर पर 1 / एक इंच का 96 वां लेकिन आपको यह समझने की ज़रूरत है कि आपकी संपत्ति जैसे छवियों को दो बार आकार की आवश्यकता हो सकती है यदि आप आईफोन श्रृंखला को देखते हैं, तो उनके सभी उपकरणों का कहना है कि सीएसएस पिक्सल में स्क्रीन की चौड़ाई 320px है हालांकि हम जानते हैं कि यह सच नहीं है।

इसलिए यदि आपने सीएसएस स्पेस में 22px होने का बटन बनाया है, तो भौतिक स्क्रीन पर 22 * ​​डिवाइस पिक्सेल अनुपात का प्रतिनिधित्व है। दरअसल, मैं यह कहता हूं, यह वास्तव में ऐसा नहीं है क्योंकि डिवाइस पिक्सेल अनुपात कभी भी सटीक नहीं होता है, फोन निर्माताओं ने इसे 2.132985728 9918 के बजाय 2.0, 3.0 जैसी अच्छी संख्या में सेट किया है ….

संक्षेप में, सीएसएस पिक्सल डिवाइस स्वतंत्र है और हमें स्क्रीन के शारीरिक आकार और प्रदर्शन घनत्व आदि के बारे में चिंता करने की ज़रूरत नहीं है।

कहानी का नैतिक है: स्क्रीन के भौतिक पिक्सेल आकार को समझने के बारे में चिंता न करें। आपको इसकी ज़रूरत नहीं है 50px मोटे तौर पर सभी मोबाइल उपकरणों पर दिखना चाहिए, यह थोड़ा भिन्न हो सकता है, लेकिन सीएसएस पिक्सेल हमारे डिवाइस को सुसंगत दस्तावेज बनाने और UI के निर्माण का स्वतंत्र तरीका है

संसाधन:

मैट के जवाब के आधार पर, मैंने एक परीक्षण किया:

 // on Macbook Pro Retina (2880x1800, 15.4"), is the calculated diagonal size // approximately 15.4? Let's see... var svgEl = document.createElementNS("http://www.w3.org/2000/svg", "svg"); var screenWidthMillimeters = svgEl.screenPixelToMillimeterX * 2880; var screenHeightMillimeters = svgEl.screenPixelToMillimeterY * 1800; var screenDiagonalMillimeters = Math.sqrt(Math.pow(screenWidthMillimeters, 2) + Math.pow(screenHeightMillimeters, 2)); // pythagorean theorem var screenDiagonalInches = (screenDiagonalMillimeters / 10 / 2.54); // (mm / 10mm/cm) / 2.54cm/in = in console.log("The calculated diagonal of the screen is "+screenDiagonalInches+" inches. \nIs that close to the actual 15.4\"?"); 

यह आउटपुट है:

 The calculated diagonal of the screen is 35.37742738560738 inches. Is that close to the actual value of 15.4? 

नहीं।

इसलिए अभी तक एक वेब ब्राउज़र में असली भौतिक मूल्य प्राप्त करने का कोई रास्ता नहीं है।

आप WURFL के साथ उस जानकारी प्राप्त कर सकते हैं:

डिवाइस प्रदर्शन गुण

गुणों को कहा जाता है:

 resolution_(width|height) physical_display_(width|height) 

दीर्घ संस्करण:

इसे प्राप्त करने के लिए सबसे अच्छा और सबसे निपुण रणनीति, ब्राउज़र से user agent string को एक डीबी जैसे WURFL (या अन्य) को डीबी तक WURFL जो आवश्यक जानकारी प्रदान कर सकती है।

उपयोगकर्ता एजेंट स्ट्रिंग

यह जानकारी का एक टुकड़ा है जो सभी आधुनिक ब्राउज़र प्रदान कर सकते हैं; यह डिवाइस के बारे में जानकारी को उजागर करता है और यह ओएस है यह केवल WURFL जैसे शब्दकोश की मदद से आपके ऐप्लिकेशन के लिए पर्याप्त अर्थपूर्ण नहीं है

WURFL

यह आमतौर पर डिवाइस गुणों का पता लगाने के लिए उपयोग किया जाने वाला एक डेटाबेस है

इसके साथ, आप बाज़ार के अधिकतर लोकप्रिय उपकरणों को सही ढंग से समर्थन करने में सक्षम हो सकते हैं। मैं एक कोड डेमो पोस्ट करूँगा लेकिन एक WURFL साइट पर डाउनलोड के साथ उपलब्ध है। पुस्तकालय के साथ डाउनलोड किए गए उदाहरण / डेमो फ़ोल्डर पर आपको ऐसा डेमो मिल सकता है।

डाउनलोड करें WURFL

भौतिक आकार और रिज़ॉल्यूशन की जांच के बारे में यहां अधिक जानकारी और स्पष्टीकरण दिया गया है: http://www.scientiamobile.com/forum/viewtopic.php?f=16&t=286

आप किसी भी पृष्ठ तत्व को बना सकते हैं और वास्तविक भौतिक इकाइयों का उपयोग करके इसकी चौड़ाई निर्धारित कर सकते हैं। उदाहरण के लिए

 <div id="meter" style="width:10cm"></div> 

और फिर इसकी चौड़ाई पिक्सल में प्राप्त करें उदाहरण के लिए एचटीएमएल कोड के नीचे (मैं JQuery का उपयोग करता है) सेंटीमीटर में डिवाइस स्क्रीन की चौड़ाई दिखाती है

 <script> var pixPer10CM = $('#meter').width(); var CMPerPix = 10 / pixPer10CM; var widthCM = screen.width * CMPerPix; alert(widthCM); </script> 

मैंने अपनी वेब प्रोजेक्ट्स http://www.vinodiscover.com में से एक के साथ इस समस्या का समाधान किया है। इसका जवाब यह है कि आप निश्चित रूप से यह नहीं जान सकते कि भौतिक आकार क्या है, लेकिन आप सन्निकटन प्राप्त कर सकते हैं। जेएस और / या सीएसएस का उपयोग करते हुए, आप व्यूोर्ट / स्क्रीन की चौड़ाई और ऊंचाई और मीडिया प्रश्नों का उपयोग करके पिक्सेल घनत्व पा सकते हैं। उदाहरण के लिए: आईफोन 5 (326 पीपीआई) = 320px बाय 568 पीएक्स और एक 2.0 पिक्सेल घनत्व, जबकि सैमसंग गैलेक्सी एस 4 (441 पीपीआई) = 360px x 640 पीएक्स और 3.0 पिक्सेल घनत्व प्रभावी रूप से 1.0 पिक्सेल घनत्व लगभग 150 पीपीआई है।

यह देखते हुए, मैं अपने सीएसएस को 1 कॉलम दिखाता हूं जब चौड़ाई 284 पीएक्स से कम हो, पिक्सेल घनत्व की परवाह किए बिना; फिर 284px और 568px के बीच दो कॉलम; फिर 852px से ऊपर 3 कॉलम। ऐसा लगता है कि यह बहुत सरल है, क्योंकि ब्राउज़र अब पिक्सेल घनत्व गणना स्वतः करते हैं।

http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

GetPPI () फ़ंक्शन का उपयोग करना ( मोबाइल वेब: भौतिक पिक्सल आकार कैसे प्राप्त करें? ), एक इंच आईडी प्राप्त करने के लिए इस सूत्र का उपयोग करें:

 var ppi = getPPI(); var x = ppi * devicePixelRatio * screen.pixelDepth / 24; $('#Cubo').width (x); $('#Cubo').height(x); <div id="Cubo" style="background-color:red;"></div> 

संकल्प को खोजने के लिए WURFL का उपयोग करने के बारे में जवाब देने के जवाब में, यह भी उल्लेखनीय है कि WURFL एक जावास्क्रिप्ट स्निपेट के रूप में भी उपलब्ध है।

Wurfl.io पर उपलब्ध मुफ्त संस्करण में, आपको स्क्रीन और रिज़ॉल्यूशन के बारे में जानकारी नहीं मिलेगी (केवल डिवाइस का नाम, फॉर्म फ़ैक्टर और मोबाइल / मोबाइल नहीं), लेकिन यहां उपलब्ध अधिक क्षमताओं के साथ एक व्यावसायिक संस्करण भी उपलब्ध है ।

सीएसएस पिक्सल वास्तव में हमारे "डिवाइस स्वतंत्र पिक्सेल" नहीं हैं वेब प्लेटफ़ॉर्म में विभिन्न प्रकार के डिवाइस होते हैं जबकि सीएसएस पिक्सेल हाथों पर बहुत सुसंगत दिखता है, यह ठेठ 96 डीपीआई डेस्कटॉप मॉनीटर पर 50% बड़ा होगा। मेरा प्रश्न देखें यह वास्तव में कुछ मामलों में बुरी चीज नहीं है, जैसे कि बड़े स्क्रीन पर फोंट बड़ा होना चाहिए, क्योंकि आँख से दूरी बड़ा है। लेकिन UI तत्व आयाम बहुत सुसंगत होना चाहिए। मान लें कि आपके ऐप में एक शीर्ष पट्टी है, आप डेस्कटॉप और मोबाइल पर एक ही मोटाई चाहते हैं, डिफ़ॉल्ट रूप से यह 50% छोटा होगा, जो अच्छा नहीं है, क्योंकि स्पर्श करने योग्य तत्व बड़ा होना चाहिए। मुझे मिल गया एकमात्र समाधान डिवाइस डीपीआई के आधार पर विभिन्न शैलियों को लागू करना है।

आप स्क्रीन में डीपीआई को जावास्क्रिप्ट में खिड़की से प्राप्त कर सकते हैं। डिवाईस पिक्सेलरेतिओ या सीएसएस क्वेरी:

 @media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 13/10), only screen and (min-resolution: 120dpi) { /* specific styles for handhelds/ high dpi monitors*/ } 

मुझे नहीं पता कि यह कैसे लागू करना एक उच्च डीपीआई डेस्कटॉप मॉनीटर पर हालांकि काम करेगा। शायद तत्व बहुत छोटे होंगे। यह वास्तव में शर्म की बात है कि वेब प्लेटफ़ॉर्म कुछ बेहतर नहीं प्रदान करता है मुझे लगता है कि डुबकी का कार्यान्वयन बहुत कठिन नहीं होगा

तत्व की JqueryMobile चौड़ाई

 $(window).width(); // returns width of browser viewport $(document).width(); // returns width of HTML document 

JqueryMobile तत्व की ऊँचाई

 $(window).height(); // returns height of browser viewport $(document).height(); // returns height of HTML document 

गुड लक डैनी 117

आप आकार का किसी न किसी आकलन को प्राप्त कर सकते हैं, लेकिन यह सही नहीं है।

मैंने उन उदाहरणों को एक साथ रखा है, जिन पर मैंने कुछ उपकरणों पर परीक्षण किया है, यह देखने के लिए कि परिणाम क्या थे। मेरा iPhone 6 33% बड़ा मूल्य देता है मेरे मैक पर मेरे 27 "डेस्कटॉप मॉनिटर 30" मॉनिटर के रूप में रिपोर्ट किया गया

 var $el = document.createElement('div'); $el.style.width = '1cm'; $el.style.height = '1cm'; $el.style.backgroundColor = '#ff0000'; $el.style.position = 'fixed'; $el.style.bottom = 0; document.body.appendChild($el); var screenDiagonal = Math.sqrt(Math.pow((window.screen.width / $el.offsetWidth), 2) + Math.pow((window.screen.height / $el.offsetHeight), 2)); var screenDiagonalInches = (screenDiagonal / 2.54); var str = [ '1cm (W): ' + $el.offsetWidth + 'px', '1cm (H): ' + $el.offsetHeight + 'px', 'Screen width: ' + window.screen.width + 'px', 'Screen height: ' + window.screen.height + 'px', 'Browser width: ' + window.innerWidth + 'px', 'Browser height: ' + window.innerHeight + 'px', 'Screen available width: ' + window.screen.availWidth + 'px', 'Screen available height: ' + window.screen.availHeight + 'px', 'Screen width: ' + (window.screen.width / $el.offsetWidth).toFixed(2) + 'cm', 'Screen height: ' + (window.screen.height / $el.offsetHeight).toFixed(2) + 'cm', 'Screen diagonal: ' + screenDiagonal.toFixed(2) + 'cm', 'Screen diagonal: ' + screenDiagonalInches.toFixed(2) + 'in', 'Device Pixel Ratio: ' + (window.devicePixelRatio || 1) ].join('\n'); var $pre = document.createElement('pre'); $pre.innerHTML = str; document.body.appendChild($pre);