2012-11-29 22 views
8

मैंने डिवाइस के स्क्रीन आकार को प्राप्त करने के विभिन्न तरीकों का प्रयास किया है, लेकिन यह हमेशा मुझे गलत आकार (854x480 के बजाय 791x480) लौटाता है, यह नेविगेशन बार के कारण हो सकता है। मेरा डिवाइस वर्तमान में जेलीबीन 4.1.1 चला रहा है।एंड्रॉइड: डिवाइस का वास्तविक स्क्रीन आकार कैसे प्राप्त करें?

मैंने कोशिश की:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
OpenGLRenderer.widthScreen = size.x; 
OpenGLRenderer.heightScreen = size.y; 

और:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
String resolution = dm.widthPixels + "x" + dm.heightPixels; 

मैं एप्लिकेशन पूर्ण स्क्रीन बनाने के लिए निम्नलिखित कोड का उपयोग कर रहा:

setContentView(mGLSurfaceView); 
mGLSurfaceView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

मैंने देखा है कि logcat में सही आकार वापस आ गया है:

01-01 03:05:06.967: I/InputReader(1961): 
    Device reconfigured: id=8, name='cyttsp-spi', 
    surface size is now 480x854, mode is 1 

मेरी AndroidManifest में:

uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" 

मैं प्रयोग किया है:

मैं नहीं एक क्यों कर रहा हूँ असली आकार पाने के लिए खून (480x854)? या मैं "डिवाइस पुन: कॉन्फ़िगर" द्वारा लौटाई गई सतह का उपयोग कैसे कर सकता हूं?

+1

getRealMetrics http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics) – Jameo

+0

मैं उलझन में हूं। आप पूछ रहे हैं कि डिवाइस का भौतिक आकार कैसे प्राप्त करें, फिर आप कहते हैं कि आपको नेविगेशन बार से कम आकार मिलता है। फिर आप कहते हैं कि आपके पास डिवाइस का भौतिक आकार है। आपकी समस्या कहां है? – DeeV

+0

@ डीवीवी आप सही हैं, मैं पूछ रहा हूं कि डिवाइस के भौतिक आकार को कैसे प्राप्त किया जाए, मुझे लगता है कि मेरे पास वापस आ गया आकार एनवी बार से कम है। मैं एक कोड लिखने का एक तरीका मांग रहा हूं जो किसी भी डिवाइस के लिए भौतिक आकार देगा। – Trois

उत्तर

5

कोशिश बुला

display.getRealSize(); 

अस्वीकरण: मैं इस एहसास नहीं था, लेकिन यह केवल एपीआई 17 (Android 4.2/JellyBean) और ऊपर के लिए काम करेंगे।

+2

संस्करण 4.2 – W55tKQbuRu28Q4xv

10

इस

final DisplayMetrics metrics = new DisplayMetrics(); 
    Display display = getWindowManager().getDefaultDisplay();  
    Method mGetRawH = null,mGetRawW = null; 

try { 

    // For JellyBeans and onward 
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN){ 

     display.getRealMetrics(metrics); 
     realWidth = metrics.widthPixels; 
     realHeight = metrics.heightPixels; 
    } 
    else{ 
    // Below Jellybeans you can use reflection method 

     mGetRawH = Display.class.getMethod("getRawHeight"); 
     mGetRawW = Display.class.getMethod("getRawWidth"); 

     try { 
      realWidth = (Integer) mGetRawW.invoke(display); 
      realHeight = (Integer) mGetRawH.invoke(display); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (InvocationTargetException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+1

से शुरू होना चाहिए यह JELLY_BEAN_MR1 नहीं होना चाहिए और JELLY_BEAN नहीं होना चाहिए = = 17? – ThomasRS

+0

मैं थॉमस से सहमत हूं, यह JELLY_BEAN_MR1 होना चाहिए। – Ethan

0

मैं एक Android 3.2 टेबलेट पर एक ही समस्या का सामना करना पड़ रहा था की कोशिश करो। मैंने getRealSize और getDisplayMetrics दोनों का परीक्षण किया। उन्हें दुर्घटनाग्रस्त होने की उम्मीद है क्योंकि वे एपीआई 17 पर उपलब्ध होना चाहते थे। लेकिन अजीब तरह से प्राप्त करें डिस्प्लेमैटिक्स मेरे 3.2 पर क्रैश नहीं होता है और सही आयाम देता है। getRealSize दुर्घटनाओं।

संबंधित मुद्दे

 संबंधित मुद्दे