uni.getSystemInfo(OBJECT)

本文介绍了uni-app中uni.getSystemInfo和uni.getSystemInfoSync两个API用于获取系统信息,详细阐述了系统信息的概念和内容,包括设备、操作系统、ROM、宿主、框架和应用信息。还讲解了各平台的特殊返回参数,如deviceId、deviceModel、language等,并提醒开发者注意获取设备唯一标识的隐私问题和兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统信息的概念

uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息。

系统信息返回的内容非常多,各操作系统、各家小程序、各浏览器对它们的定义也不相同。uni-app里重新梳理了这些概念,同时为了向下兼容也保留了这些平台原来的概念,但不推荐使用。

按照运行环境层级排序,从底层向上,uni-app有6个概念:

  • device:运行应用的设备,如iphone、huawei
  • os:设备的操作系统,如 ios、andriod、windows、mac、linux
  • rom:基于操作系统的定制,Android系统特有概念,如miui、鸿蒙
  • host:运行应用的宿主程序,即OS和应用之间的运行环境,如浏览器、微信等小程序宿主、集成uniMPSDK的App。uni-app直接开发的app没有host概念
  • uni:uni-app框架相关的信息,如uni-app框架的编译器版本、运行时版本
  • app:开发者的应用相关的信息,如应用名称、版本

uni.getSystemInfo(OBJECT)

异步获取系统信息

OBJECT 参数说明:

参数名 类型 必填 说明
success Function 接口调用成功的回调
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

#success 返回参数说明

参数分类 参数 说明 App平台值域 Web平台值域 小程序平台值域 备注 uni框架最低版本要求
device deviceId 设备 id 。由 uni-app 框架生成并存储,清空 Storage 会导致改变
deviceType 设备类型。如phonepadpcunknow 详见 phonepadpcunknow phonepadpc uni-app 3.4.10+
deviceBrand 设备品牌。如:applehuawei 不支持 uni-app 3.4.10+
deviceModel 设备型号 部分设备无法获取 uni-app 3.4.10+
deviceOrientation 设备方向 竖屏 portrait横屏 landscape 竖屏 portrait横屏 landscape 竖屏 portrait横屏 landscape。仅微信百度小程序支持 uni-app 3.4.13+
devicePixelRatio 设备像素比 uni-app 3.4.13+
os osName 系统名称 ios、android ios、android、windows、macos、linux ios、android、windows、macos uni-app 3.4.10+
osVersion 操作系统版本。如 ios 版本,andriod 版本 uni-app 3.4.10+
osLanguage 操作系统语言详见 Android仅支持主语言+地区:zh-CN 中文简体、iOS支持主语言+次语言+地区zh-Hans-CN 中文简体 与浏览器语言一致 不支持 uni-app 3.4.10+
osTheme 操作系统主题 light、dark。iOS平台只有将应用主题设置为跟随系统时才能获取到系统的主题 不支持 不支持 uni-app 3.4.10+
osAndroidAPILevel Android 系统API库的版本。详情参考Android 官方文档(opens new window) 仅 Android 支持 不支持 不支持 uni-app 3.4.10+
rom romName rom 名称 Android 部分机型获取不到值,详见。iOS 不支持 不支持 不支持 uni-app 3.4.13+
romVersion rom 版本 Android 部分机型获取不到值,详见。iOS 不支持 不支持 不支持 uni-app 3.4.13+
browser browserName 浏览器名称或App的webview名称 chrome(android)、wkwebview(ios)、x5webview(app打包x5引擎) chrome、edge、safari、firefox 不支持 uni-app 3.4.10+
browserVersion 浏览器版本、webview 版本 不支持 uni-app 3.4.10+
host hostName 小程序宿主或uniMPSDK的集成宿主名称,如:WeChatFeiShu 仅 UniMPSDK 支持 不支持 详见 微信小程序真机运行才有真值 uni-app 3.4.10+
hostVersion 宿主版本。如:微信版本号 仅 UniMPSDK 支持 不支持 小程序宿主版本 uni-app 3.4.10+
hostLanguage 宿主
<think>好的,我需要解决用户提出的UniApp中视频播放清晰度不足的问题。首先,用户提到使用uni.previewImage时图片模糊的问题,之前通过修改CSS或设置compressed参数为false来解决。现在用户想知道如何设置视频播放的清晰度,避免模糊。 首先,我应该回顾已有的引用内容。引用3中提到,在uni.chooseVideo时,如果compressed参数设为true,视频会被压缩导致模糊,改为false可以解决。这可能是一个关键点,用户可能在选择视频时压缩了,导致播放时清晰度低。因此,建议检查uni.chooseVideo中的compressed参数是否为false。 接下来,用户提到的视频播放组件,比如使用<video>标签或者uni.createVideoContext,可能需要设置src为原始视频路径,确保未压缩的视频被加载。此外,视频的分辨率和码率也可能影响清晰度,如果在录制时设置了较高的参数,播放效果会更好。引用3中的例子显示,设置compressed:false可以避免压缩,这可能同样适用于其他视频相关API。 另外,引用2提到处理图片模糊时使用了CSS的image-rendering属性,但对于视频来说,可能需要不同的方法。视频的清晰度可能受到渲染设置的影响,但UniApp中如何处理呢?可能需要检查视频容器的样式,确保不缩放或变形,比如设置object-fit为contain或cover,保持视频比例,避免拉伸导致的模糊。 此外,引用4提到二维码扫描效率低的问题,可能涉及到硬件或环境因素,但视频清晰度更多与视频源和处理有关。用户可能需要确保视频源本身是高清晰度的,比如在录制时选择高分辨率,或者在服务器端提供不同清晰度的视频流,根据网络情况动态调整。 可能的解决方案步骤包括: 1. 检查视频选择时的压缩设置,将compressed设为false。 2. 确保视频源是高分辨率,如调整拍摄参数。 3. 使用合适的视频组件属性,如controls、autoplay,避免缩放。 4. 处理网络问题,使用CDN加速或预加载。 5. 后端支持多码率视频流,前端根据情况切换。 还需要考虑用户是否在使用uni.chooseVideo或其他API,比如uni.uploadFile,是否在上传时压缩了视频。另外,视频播放器的配置,如是否启用硬件加速,也可能影响清晰度。如果用户使用第三方插件或云服务,可能需要查阅相关文档调整参数。 总结,主要从视频源、压缩设置、播放组件配置、网络优化等方面入手,确保视频未被压缩,并以最佳状态播放。同时,引用中的compressed参数是关键,必须明确提示用户设置该参数为false,并检查相关API的使用情况。</think>针对UniApp中视频播放清晰度不足的问题,以下是分步解决方案: ### 一、检查视频源是否被压缩 1. **录制/选择视频时关闭压缩参数** 使用`uni.chooseVideo`选择视频或调用摄像头录制时,需设置`compressed: false`,避免系统默认压缩导致画质下降: ```javascript uni.chooseVideo({ compressed: false, // 关闭压缩 sourceType: ['camera'], success: (res) => { this.videoSrc = res.tempFilePath; } }); ``` 若未显式设置此参数,系统默认`compressed: true`会降低分辨率[^3]。 2. **上传视频时保留原始文件** 若需上传视频到服务器,确保后端接口接收未压缩的原始文件: ```javascript uni.uploadFile({ url: 'your_api_url', filePath: this.videoSrc, // 未压缩的视频路径 name: 'video' }); ``` --- ### 二、优化视频播放组件配置 1. **使用原生组件属性** 在`<video>`标签中,通过`controls`、`autoplay`等属性确保视频以原始分辨率播放,并添加`style`防止容器缩放: ```html <video :src="videoSrc" controls autoplay style="width: 100%; height: auto; object-fit: contain;"> </video> ``` - `object-fit: contain`可避免视频拉伸变形[^2]。 2. **启用硬件加速(仅限H5)** 在H5环境中,通过CSS触发GPU渲染提升画质: ```css video { transform: translateZ(0); } ``` --- ### 三、调整视频录制参数 若通过摄像头直接录制视频,需指定分辨率与码率: ```javascript uni.chooseVideo({ compressed: false, camera: 'back', // 使用后置摄像头(通常分辨率更高) success: (res) => { console.log('视频分辨率:', res.width, res.height); } }); ``` 部分安卓设备需通过`uni.getSystemInfo`获取支持的录制参数动态调整。 --- ### 四、网络与服务器优化 1. **使用CDN加速视频加载** 若视频存储在远程服务器,建议通过CDN分发,减少缓冲卡顿。 2. **提供多码率视频流** 后端可转码生成多种清晰度的视频(如720P、1080P),前端根据网络环境切换: ```javascript // 根据网络状态选择视频源 const networkType = await uni.getNetworkType(); const videoUrl = networkType === 'wifi' ? 'high_quality.mp4' : 'low_quality.mp4'; ``` --- ### 五、排查设备兼容性问题 1. **测试不同设备的表现** 部分低端设备可能限制最大播放分辨率,需在真机调试中验证效果。 2. **使用原生插件(进阶)** 若内置组件无法满足需求,可集成原生插件(如Android的ExoPlayer、iOS的AVPlayer)以获得更精细的清晰度控制。 --- ### 相关问题 1. 如何检测UniApp中视频的实际播放分辨率? 2. UniApp能否实现视频清晰度的动态切换(如手动选择720P/1080P)? 3.UniApp中如何处理视频加载时的卡顿问题? 通过上述步骤,可系统性提升UniApp视频播放的清晰度。关键点在于**源头避免压缩**、**播放器正确配置**和**网络环境适配**[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值