Android 在谷歌电视内将分辨率设置为720p或1080p?

Android 在谷歌电视内将分辨率设置为720p或1080p?,android,google-tv,Android,Google Tv,如何限制GoogleTV应用程序以特定分辨率显示:即720P、1080p等?出于某种原因,我的应用程序一直无法以960x540左右的分辨率显示,尽管我的谷歌电视和显示器可以处理1080p的分辨率 我不确定是我的谷歌电视只显示960x540,还是其他谷歌电视也看到了同样的东西。在任何情况下,我都想确保我的应用程序只能以以下分辨率查看:960x540或1280x720谷歌电视上的每个显示都是不同的。(除了像LG这样的内置电视)谷歌电视刚刚打开时,有一个步骤可以确定电视的分辨率 目前大多数谷歌电视(基

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


我不确定是我的谷歌电视只显示960x540,还是其他谷歌电视也看到了同样的东西。在任何情况下,我都想确保我的应用程序只能以以下分辨率查看:960x540或1280x720

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

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


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


因此,总而言之,你不能/不应该按照你的要求去做。

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

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


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


总之,你不能/不应该按你的要求去做。

我想出来了。我必须设置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发送的参数调整视频视图的大小和位置。但由于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);

我想出来了。我必须设置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发送的参数调整视频视图的大小和位置。但由于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);

“总之,960x540是720p或1080p的android设备像素。”这意味着什么?我正在使用一个鱼缸测试装置。你可能想要一个基于ARM的设备。有关Android密度无关像素的信息,请访问,谢谢您的帮助!好的,没有一种官方的方法可以像其他电视平台(如三星)那样将应用程序限制在某个特定的分辨率,但是有没有一种非官方的方法可以达到同样的效果?例如,有没有一种方法可以将一个720p的小网络视图放大到1080p显示屏上的全屏显示?VideoView可以自动使您的小部件与您的布局尺寸匹配——现代电视和基于ARM的设备都有惊人的定标器来支持这一点。“总之,960x540是720p或1080p的android设备像素。”这是什么意思?我正在使用一个鱼缸测试装置。你可能想要一个基于ARM的设备。有关Android密度无关像素的信息,请访问,谢谢您的帮助!好的,没有一种官方的方法可以像其他电视平台(如三星)那样将应用程序限制在某个特定的分辨率,但是有没有一种非官方的方法可以达到同样的效果?例如,有没有一种方法可以将一个720p的小网络视图放大到1080p的全屏显示?VideoView可以自动使您的小部件与您的布局大小相匹配——现代电视和基于ARM的设备都有惊人的缩放功能,可以支持这样做。