2015-09-22 43 views
0

我正在爲零售亭建立AIR-> android應用程序。我們要隱藏'狀態欄',所以應用程序是全屏的,並沒有軟按鈕欄(它也會被鎖定到使用第三方應用程序的Kiosk模式)。如何去android全屏幕沒有狀態欄和renderMode設置爲直接?

當我在隱藏狀態欄的設備上發佈並運行我的應用程序時,原始狀態欄所在的位置可以看到閃光燈的顏色。這個空間應該填充應用內容(全屏圖像等),但原本包含酒吧的68px空間只是純白色(或任何backgroundColor舞臺設置)

經過大量的試驗和錯誤我已經明確了這一點,我已將renderMode設置爲在應用程序描述符xml中指向。如果我刪除了這些,應用內容將填滿屏幕,但顯然我無法訪問GPU加速渲染系統。

我假設這是與AIR有關的要求設備的硬件的分辨率,它返回爲1920x1032,即使像素的實際數量是1920x1080。因此,在AIR下,只設置了一個1920x1032的可渲染窗口(當renderMode> direct時)。

有沒有人知道在renderMode> direct時啓用真正全屏的方法?

+1

沒事做的渲染模式,許多Android設備返回不可靠的分辨率值,因此這是不可能的AIR計數100%的時間給你正確的分辨率值。您必須使用ANE,它將使用Metrics java Class正確返回這些值。 – BotMaster

+0

感謝BotMaster,這似乎是我在Starling論壇上遇到的解決方案,所以我會想象它是正確的。我還沒有機會實現它,但有人指出我對這個ANE https://github.com/mesmotronic/air-fullscreen-ane這是爲了在Android上啓用「身臨其境的全屏模式」,並返回正確的決議。我會在這裏張貼它是否有效。 – Sean

回答

1

Android MEtrics ANE是最簡單的一個。這是我獲得x分辨率的範例。如果你沒有經驗做ANES這可能是一開始是正確的:

@Override 
public FREObject call(FREContext arg0, FREObject[] arg1) 
{ 
    try 
    { 
     DisplayMetrics metrics = arg0.getActivity().getResources().getDisplayMetrics(); 
     int realWidth = metrics.widthPixels; 
     try 
     { 
      Display display = arg0.getActivity().getWindowManager().getDefaultDisplay(); 
      display.getRealMetrics(metrics); 
      int rawWidth = metrics.widthPixels; 
      if(rawWidth > realWidth) 
      { 
       realWidth = rawWidth; 
      } 
     } 
     catch(Exception e) 
     { 

     } 
     try 
     { 
      Display display = arg0.getActivity().getWindowManager().getDefaultDisplay(); 
      int rawWidth = 0; 
      Method getRawWidth = Display.class.getMethod("getRawWidth"); 
      rawWidth = (Integer) getRawWidth.invoke(display);    
      if(rawWidth > realWidth) 
      { 
       realWidth = rawWidth; 
      } 
     } 
     catch(Exception e) 
     { 

     }   
     FREObject baseValue = FREObject.newObject(realWidth); 
     return baseValue; 
    } 
    catch(Exception e) 
    { 

    } 
    return null; 
} 
相關問題