1

如何限制我的 GoogleTV 应用以特定分辨率显示:即 720P、1080p 等?出于某种原因,即使我的 GoogleTV 和显示器可以处理 1080p,我的应用程序仍无法以 960x540 左右的分辨率显示。

我不确定是否只是我的 GoogleTV 仅以 960x540 显示,或者其他 GoogleTV 是否也看到相同的内容。无论如何,我想确保我的应用只能在以下分辨率下查看:960x540 或 1280x720

4

2 回答 2

1

Google TV 上的每个显示器都是不同的。(除了像 LG 这样的内置电视)当谷歌电视刚打开时,有一个步骤可以确定电视的分辨率。

当前大多数 Google TV(基于 ARM)都是 1080p。缩小到 720 由您的电视完成。

综上所述,960x540 是 720p 或 1080p 的 android 设备像素。

所以,总而言之,你不能/不应该做你所要求的。

于 2013-05-15T23:18:22.927 回答
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 没有监听窗口调整大小事件,因此在 webview 明显改变大小后它没有重新调整其 UI。为了解决这个问题,我可以更改我的 HTML 并让它对 JavaScript 窗口调整大小事件做出反应,或者我可以做我最终要做的事情 - 在加载不正确大小的 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);
于 2013-05-22T17:47:16.523 回答