如何从Amazon Fire Stick和Android TV获取真实屏幕分辨率?
获取Amazon Fire Stick/Android TV真实分辨率的方法
原因分析
你拿到的960×540是逻辑像素,而非物理像素。Android TV/Fire Stick这类设备会通过设备像素比(DPR)对WEB视图进行缩放,window.screen返回的是经过缩放后的逻辑尺寸。
解决方案
1. 通过设备像素比计算真实分辨率
利用window.devicePixelRatio获取系统缩放比例,再和逻辑像素相乘得到物理分辨率:
const dpr = window.devicePixelRatio; this.screenWidth = window.screen.width * dpr; this.screenHeight = window.screen.height * dpr;
该方法能覆盖绝大多数标准场景,但需注意部分设备可能存在自定义系统缩放设置。
2. 使用Capacitor Device插件直接获取
Capacitor的@capacitor/device插件可从系统层面直接读取物理屏幕参数,绕过WEB视图缩放限制:
- 先安装插件:
npm install @capacitor/device npx cap sync
- 代码中调用:
import { Device } from '@capacitor/device'; async getRealScreenSize() { const deviceInfo = await Device.getInfo(); this.screenWidth = deviceInfo.screenWidth; this.screenHeight = deviceInfo.screenHeight; }
这个方法适配Fire Stick和Android TV的可靠性更高。
3. 禁用WEB视图缩放(可选)
如果你的应用仅针对固定分辨率的电视设备开发,可在capacitor.config.ts中配置禁用WEB视图缩放,让逻辑像素与物理像素保持一致:
import { CapacitorConfig } from '@capacitor/cli'; const config: CapacitorConfig = { appId: 'com.your.app', appName: 'YourApp', webDir: 'dist', android: { webViewSettings: { setSupportZoom: false, builtInZoomControls: false, displayZoomControls: false } } }; export default config;
注意:该方法可能导致低分辨率设备显示异常,仅建议在特定场景下使用。
内容的提问来源于stack exchange,提问作者Raxit Pandya
相关产品推荐
相关产品推荐

