1

GoogleTV アプリを特定の解像度 (720P、1080p など) で表示するように制限するにはどうすればよいですか? GoogleTV とモニターが 1080p を処理できるにもかかわらず、何らかの理由で、アプリが 960x540 前後の解像度で表示されたままになります。

960x540 でしか表示されないのは私の GoogleTV だけなのか、それとも他の GoogleTV も同じものを見ているのかはわかりません。いずれにせよ、アプリが解像度 960x540 または 1280x720 でのみ表示されるようにしたい

4

2 に答える 2

1

Google TV のディスプレイはそれぞれ異なります。(LG のような内蔵 TV を除く) Google TV の電源を入れた直後に、TV の解像度を設定するステップがあります。

最新の Google TV (ARM ベース) は 1080p です。720 への縮小はテレビによって行われます。

つまり、960x540 は 720p または 1080p の Android デバイス ピクセルです。

つまり、要約すると、あなたが求めていることを行うことはできません/すべきではありません.

于 2013-05-15T23:18:22.927 に答える
0

私はそれを考え出した。WebView の初期スケールを設定する必要がありました。これにより、画面解像度が 1080p であっても WebView を 720p で表示できます。

これは私が使用したコードです:

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 がウィンドウのサイズ変更イベントをリッスンしていなかったため、Web ビューのサイズが著しく変化した後に UI を再調整しなかったことです。これを修正するには、HTML を変更して JavaScript ウィンドウのサイズ変更イベントに反応させるか、最終的に行ったことを行うことができます。つまり、不適切なサイズの UI をロードした後に Web ビューをリロードします。このソリューションでは、ウィンドウのサイズ変更イベントに反応する必要はありませんでした:

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 のサイズと位置を変更する必要がありました。ただし、Web ビューは実際のディスプレイ解像度とは異なる解像度である可能性があるため、パラメーターを調整して、画面解像度に関してそれらを作成する必要がありました。

例えば:

//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);
于 2013-05-22T17:47:16.523 に答える