2013-05-15 3 views
1

Google TV 앱을 특정 해상도, 즉 720P, 1080p 등으로 표시하도록 제한하려면 어떻게해야하나요? 내 Google TV 및 모니터가 1080p를 처리 할 수 ​​있지만 몇 가지 이유 때문에 내 앱이 약 960x540의 해상도로 표시되지 않습니다.GoogleTV에서 해상도를 720p 또는 1080p로 설정 하시겠습니까?

Google TV가 960x540에서만 표시되는지 또는 다른 GoogleTV에서도 동일한 것을 보는 지 확실하지 않습니다. 어떤 경우 든 내 앱을 해상도에서만 볼 수 있도록하고 싶습니다. 960x540 또는 1280x720

답변

0

나는 그것을 알아 냈다. 나는 webview의 초기 스케일을 설정해야했고, 화면 해상도가 1080p인데도 720p로 WebView를 볼 수있었습니다.

boolean _bReloaded = false; 
boolean _bLoaded = false; 
int _nWebScale = 100; 
DisplayMetrics displaymetrics = new DisplayMetrics(); 
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int nScreenHeight = displaymetrics.heightPixels; 
if(nScreenHeight >= 1000){ 
    _nWebScale = (int) Math.round((nScreenHeight/720.0) * 100.0); 
    _bReloaded = false; 
    mWebView.setVisibility(View.INVISIBLE); 
} 
mWebView.setInitialScale(_nWebScale); 

하지만이 완료되지 않은 :

이 내가 사용하는 코드입니다.

이 시점에서 webView는 적절한 해상도로 표시됩니다. 그러나 WebView가로드 될 때 Webview 창의 크기가 눈에 띄게 조정됩니다. 이것이 위의 코드에서 webview를 숨기는 이유입니다. 또 다른 문제는 내 특별한 경우에 내 HTML이 윈도우 크기 조정 이벤트를 듣지 않아서 웹 뷰가 크기가 눈에 띄게 변화된 후에 UI가 재조정되지 않았다는 것입니다. 이 문제를 해결하기 위해 HTML을 변경하고 자바 스크립트 창 크기 조정 이벤트에 반응 시키거나 궁극적으로 내가 한 일을 할 수있었습니다. 잘못된 크기의 UI가로드 된 후 webview를 다시로드합니다.

mWebView.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      if (progress == 100) { 
       if(_nWebScale != 100 && (mWebView.getVisibility() != View.VISIBLE) && !_bReloaded){ 
        _bReloaded = true; 
        mWebView.reload(); 
       } else { 
        _bLoaded = true; 
        displayLoadingSpinner(false); 
        mWebView.setVisibility(View.VISIBLE); 
       } 
      } else if (mProgressBar.getVisibility() != View.VISIBLE) { 
       displayLoadingSpinner(true); 
       _bLoaded = false; 
      } 
     } 
}); 

직접 원래의 질문에 관련되지 않은 정보의 또 다른 조각을하지만, 유용 할 수있는 것은 다음과 같다 :이 솔루션을 나는 창 크기 조정 이벤트에 반응하지 않았다. 내 코드 내에서 webview에서 보낸 매개 변수를 기반으로 VideoView 크기를 조정하고 위치를 조정해야했습니다. 그러나 webview는 실제 디스플레이 해상도와 다른 해상도가 될 수 있으므로 화면 해상도 측면에서 매개 변수를 조정해야했습니다.

예를 들어

//this parameter is equal to the width of the webview screen: 720 
nHeightFromWebView; 
//This is the x position of where the VideoView should be placed. 
nXFromWebView; 

float nScale = (float)_nWebScale/100; 
int nAdjustedHeight = (int) Math.round(((float)nHeightFromWebView * nScale)); 
//The adjusted height computes to 1080 - the actual resolution of the screen 
int nNewX = (int)Math.round((float)nXFromWebView * nScale); 
1

Google TV의 각 디스플레이는 다릅니다. (LG와 같이 TV가 내장 된 것을 제외하고) TV의 해상도를 설정 한 곳에서 Google TV가 켜져있는 단계가 있습니다.

현재 Google TV (ARM 기반)는 1080p입니다. 720으로 축소하는 것은 TV에서 수행됩니다.

모두 960x540은 720p 또는 1080p의 Android 장치 픽셀입니다.

요약하면, 당신은 당신이 요구하는 것을 할 수 없으며해서는 안됩니다.

+0

. "말했다 모든, 960x540에 720p 또는 1080p 중 하나에 대한 안드로이드 장치의 픽셀이" 그게 무슨 뜻 이죠? 나는 Fishtank 테스트 유닛과 함께 일하고 있습니다. – jaxim

+0

아마 ARM 기반 장치를 원할 것입니다. Android Density Independent Pixels에 대한 정보는 http://developer.android.com/guide/practices/screens_support.html –

+0

에서 찾을 수 있습니다. 도움에 감사드립니다! 좋아, 다른 TV 플랫폼에서 허용하는 것처럼 (즉, 삼성) 특정 해상도로 앱을 제한하는 공식적인 방법이 없지만 동일한 결과를 얻기위한 비공식적 인 방법이 있습니까? 예를 들어 작은 720p 웹보기를 1080p 디스플레이에 전체 화면에 맞게 확대 할 수있는 방법이 있습니까? – jaxim