tv助手项目阶段性总结

linux下tv播放器阶段性总结  今天就对我实现的linux下的tv播放器进行一个阶段性的总结吧,目前我的这个tv测试程序已经能够实现流畅播放电视,在更改视频帧缓冲设置的情况下录制效果也还不错,并且实现了频道调整和电视频道回放的功能;另外,底层电视库中也增加了亮度、对比度、饱和度、色调调整的代码,以便将来在上层GUI界面中添加对应的设置功能; 这次我先比较详细的说明电视播放和录制的原理和关键代码的实现,两个部分就不拆开了,算 阅读详情

1. 模块,主要负责偏底层的模块:

(1)tvd模块的下载、更新、安装、开启;

(2)通过adb获取智能电视、盒子的ip,通过dlna获取智能电视、盒子的自定义名称(其中dlna模块使用的是开源项目)。

2. 设计

(1)设计一个单例模式的TVDManager类,通过http协议下载、更新tvd.apk文件到手机sdcard上,通过adb命令安装tvd.apk到智能电视或盒子上,并安装、开启tvd;

1个主类:TVDManager.java是单例模式,实现下载:通过http协议,下载过程中的成功失败状态通过Interface回调给上层界面,首先是像服务器拉取tvd.apk文件的下载地址url和版本号等参数,数据使用Gson解析,然后更具服务器返回的是否需要更新数据以及下载地址url,下载最新版本的tvd.apk文件到手机sdcard上;实现安装:通过adb命令push tvd.apk文件到tv上,这里还需要首先通过adb命令获取tv上的tvd的版本号,来判断是否需要安装新版本的tvd.apk。所以这里就需要在启动tv助手app的时候(启动TvassistantApplication),在Application中首先调用TVDManager下载目前服务器上最新版本的tvd.apk,并通过sp存储版本号和下载sdcard的路径,然后需要安装的时候直接从这个SDCard路径中安装到tv上即可。

客户端判断:已经安装,则判断是否更新;没安装则直接安装;

4个辅助class文件:ITVDManagerCallback提供给上层界面的接口,回调下载、更新、安装的状态;TVDPackageDownloadRequest请求最新版tvd.apk文件的下载地址url和版本号、是否需要升级等;TVDRequestParams请求参数;TVDResponseParams响应参数;

问题1:这里会出现一个多线程问题:假设有2台tv,手机连接上了tv1,并且下载tvd文件,下载到了50%,这个时候切换到tv2,并且开始下载,这个时候就会出现一个问题,tv2的中的线程会重复下载(并且会覆盖)同一个版本的tvd文件(因为这个tvd文件在安装到tv上之前,是先存放在手机sdcard文件系统中的),这个时候就要用ReentrantLock来锁定互斥区(下载的文件),来解决问题,又由于这个下载线程是异步事件,因此不能用synchronized,需要使用ReentrantLock来解决。

问题2:现象时,服务器、手机、tv上的tvd版本不一致;场景,当需要更新tvd文件时(从服务器上拉取tvd返回的标志标明需要更新tvd),这时候app启动的时候就会从服务器中下载文件,当下载文件没有完成时,这个时候点击连接tv(这个过程从tv本地获取tvd的版本号与手机本地存储的tvd版本号比较,如果一样则不更新tv上的tvd,如果不一样才更新),由于手机本次存储的tvd版本号还没有被服务器上的更新,所以手机上的tvd版本号是脏数据,导致这一次tv上的tvd没有得到更新;对于这个问题,我开始的设计是:使用ReentrantLock的Condition条件变量来实现,即,当启动App时,首先获取锁并持有条件变量,当拉取的服务器标志是要更新,则更新完并把版本号写入到手机本地后,再释放锁和通知释放条件变量,当点击连接tv,检查tv上tvd版本号与手机本地tvd版本号时,在这个条件变量上等待,直到接到通知;如果服务器返回的数据不需要更新tvd,则立马释放锁和通知条件变量。

但是,目前这个会影响连接tv的性能,因为无论如何都必须等待手机从服务器上拉取是否更新的标记和更新地址,这样才是真正的连接tv过程。。。。严重影响用户体验。。。暂时没用。

(2)adb Service和DLNA Service都是异步行为,因此,如果想让他们同时显示ip地址和电视名称是不可能的,同时又考虑到项目中的连接、安装功能都必须使用adb来实现,因此,我们以adb命令探测到的ip地址为主key,adb探测到的电视ip地址设计一个列表List<String> ipListAdb 用于存储ip;DLNA方式探测到的ip和name设计一个哈希表Map<String, String> ipNamemapDlna来存储ip和电视自定义名称,因为探测到的电视/盒子个数是以ipListAdb中数量为主,因此我们的ListView的数量也是以ipListAdb为数据源,更新数据源的时机处了是ipListAdb改变外,还有就是ipNameMapDlna的改变后,查询ipListAdb是否有对应ip,如果有更新,如果没有,放弃;在ListView的adapter中,我们的getItem是使用ipListAdb中查询到的ip地址作为key,返回ipNameMapDlna中的value。【这里验证了一个问题:ListView的数据源更新,并不一定必须是数据源个数的变化才notifyDataSetChanged,数据源的显示改变也可以用notifyDataSetChanged更新ListView】。

以上的设计用户体验方面很差劲儿,adb获取速度比dlna快的多,因此,dlna获取的名称很滞后,所以,改了设计:当启动App的时候(在Applicaton中执行)就启动DLNA Service,然后设置异步回调事件处理把获得的ip-name存入sp,等进入首页后,开启adb service扫描到tv或盒子的ip地址,然后在sp中查找对应的name,如果找到就显示name,找不到就显示默认名称,这种设计缺点是:存储在sp中的ip-name对与其他存储在sp中的值相混淆,使得公共sp很杂乱,而且用户体验方面也不好:用户第1次使用App时,sp中的ip-value对很可能没有建立,因为DLNA比adb慢,所以,一般情况下是先显示adb拉到的ip和默认名称,而且如果用户把盒子名称更改了,也不会及时得到更新;

针对以上2点缺点,重新设计为:使用java中的Properties类来把ip-name对存入文件(/data/data/package-name/files/xxxx.properties文件)中;使用interface回调给UI界面更新设备名称,当扫描到设备并获取设备名称后,这个解决第1次使用app时显示不出设备名称问题和用户更改设备名称得不到及时更新问题;

过程是:启动app时,从文件中获取ip-name对存入Map中,然后用adb扫描到的ip来查找Map中name,显示给UI,如果Map为空,则显示为默认设备名称(这个情况只会出现在第1次使用App时,这时Properties文件还没建立,所以Map一定为空,之后再次开启就直接从Properties文件中获取即可),并且设定DLNA扫描到设备的回调,一旦有新设备加入则回调给UI跟新设备名称,即使用户更新了设备名称,也能通过这个interface回调给UI更新设备名称。

----项目工作记录。

对话系统简介与OPPO小布助手的工程实践 前不久,OPPO旗下的人工智能助手“小布助手”月度活跃用户数突破一亿,成为国内首个月活用户数破亿的手机语音助手。 经过2年多的成长,小布助手在能力上实现大幅升级,也融入了我们身边便捷的服务功能。小布团队亦克服了诸多技术难点,为用户带来了更智能的服务。为此,小布团队撰写了一系列文章,详细介绍小布助手背后的技术支撑。本文是揭秘小布背后技术的第一篇,主要介绍系统架构设计和演进。 1. 行业价值 1.1 前言 对话系统是一项接近30年研究历史的技术,代表人机交互的未来。近十年来随着语音、NLP领域的阶段性突 阅读详情

相关推荐

assistant.apk

assistant.apk

阶段性成果--HoloCubic小电视与四轴飞控

HoloCubic小电视 开头感谢B站:一叶知秋君莫笑我(“保姆级教程:从0到1带你做稚晖君HoloCubic小电视”)与溜码小哥的资料包。 之前是看到关注的稚晖君开源了这个小电视,觉得非常有趣,想着自己也做一个。刚好上述两位up主在稚晖君开源的基础上更加详细与完善流程,我跟着他们的步骤也做了一个。如下: 因为资料包是别人的,所以这里我就不放了,大家想要这个的可以去B站找,也是开源的。 四轴飞控 在大学的时候只做过车,就一直想着自己要做一个四旋翼,奈何时间与计划冲突,就一直搁置到现在。但是之前一直保留着宏

qq_38168606的博客 2762

大模型备案避坑指南:如何设计符合TC260标准的评估测试题集?

本文深入探讨了如何设计符合TC260标准的大模型评估测试题集,以顺利通过备案。文章从解构标准核心逻辑出发,详细阐述了题集设计的工程化流程、核心原则与常见误区,并提供了模拟真实对抗的高阶测试策略与度量分析方法,旨在帮助企业构建一套能真实反映模型安全水位、有效规避风险的评估体系。

kafka6courier的博客 662

Flutter在webOS电视系统的技术优势与应用实践

跨平台开发框架Flutter凭借其高性能渲染引擎和内存管理优势,正在智能电视领域展现技术价值。通过Skia图形引擎直接操作GPU,Flutter实现了比传统Web技术栈更稳定的帧率表现,特别适合4K大屏场景。Dart语言的AOT编译特性使运行时内存占用降低40%,有效解决了智能电视内存受限的痛点。这些技术特性使Flutter成为LG重构webOS系统的首选方案,其应用场景涵盖电子节目指南、流媒体应用等电视专属功能。随着Flutter 3.22对webOS的官方支持,开发者现在可以用同一套代码覆盖从移动端到电

weixin_30882895的博客 395

告别U盘!在Ubuntu 22.04上从零搭建PXE网络装机服务器(支持UEFI/Legacy双启动)

本文详细介绍了在Ubuntu 22.04上搭建PXE网络装机服务器的完整流程,支持UEFI/Legacy双启动模式。通过配置DHCP、TFTP和HTTP服务,实现无需U盘的高效批量系统部署,解决传统安装方式的介质依赖、版本控制和时间成本问题,显著提升机房维护和设备部署效率。

weixin_42569329的博客 248

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 635

my-tv-0版本更新日志深度解读:从v1.0.0到v1.3.9.8的功能演进之路

想要了解这款功能强大的电视网络视频播放软件是如何一步步完善的吗?my-tv-0作为一款支持自定义视频源的电视播放应用,从最初的简单播放功能发展到如今的完整解决方案,经历了令人瞩目的功能演进。本文将带你深入解读从v1.0.0到最新版本v1.3.9.8的完整更新历程,揭示这款开源项目的技术发展脉络。 ## 🚀 初期版本奠定基础(v1.0.0-v1.1.0) **v1.0.0**版本仅提供最基本的

gitblog_00830的博客 1073

camera——HAL层知识分享

CameraHAL层是Android相机系统的核心中间层,负责连接Framework层与硬件驱动层。它通过标准化接口解耦软硬件,实现跨平台兼容性,同时为厂商提供硬件定制空间。主要功能包括:设备管理、数据流处理、参数控制以及图像优化。关键子系统涵盖预览、拍照、录像、对焦与曝光等模块,采用HAL3的"请求-响应"模型实现精细控制。性能优化重点关注启动时间、帧率稳定性和延迟控制。通过分层架构设计(接口层-核心层-适配层)和缓冲池机制,确保高效数据传输和硬件资源调度。

2302_77429403的博客 2072

微信电视2.0版将新增语音搜索、节目单分享推荐自定义等

  继腾讯推出微信电视以来,微信传屏、微信弹幕、微信遥控等基于腾讯微信平台的电视功能一直受到市场追捧,现在微信电视2.0版即将到来了,瞧瞧将会有哪些新的特色功能吧   昨天(13日),TCL集团在深圳举办“双+”战略转型阶段性进展发布会,TCL多媒体CEO郝义向外界透露了微信电视2.0版的最新进展。据悉,TCL自联合腾讯推出微信电视后一直受到市场追捧。截至2014年10月底,激活微信功能的T...

weixin_30950607的博客 109

【单片机】STM32F103C8T6 最小系统板原理图

STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,由STMicroelectronics(ST)公司生产。它是STMicroelectronics的STM32系列微控制器中的一员,被广泛应用于嵌入式系统和电子设备中。LQFP48封装(Low-profile Quad Flat Package,48引脚)SRAM(静态随机访问存储器):20 KB。支持JTAG调试和编程接口(可选)多个通用输入/输出口(GPIO)USB接口(用于USB设备模式)内置调试和编程接口(SWD)

q742971636的博客 6万+

1.2 amdgpu_bo的设计分析 — gem层和ttm层

本文分析了AMD KFD的BO设计架构,重点介绍了DRM子系统中缓冲对象的多层继承关系。文章首先展示了核心继承层次图,包括DRM通用层(drm_gem_object)、TTM内存管理层(ttm_buffer_object)、AMD驱动层(amdgpu_bo)和KFD计算层(kgd_mem)。随后详细解析了drm_gem_object结构体的关键功能,包括用户空间接口管理、内存映射支持、引用计数机制以及DMA-BUF导入/导出功能。

图形/计算GPU的驱动与虚拟化技术分享园地 2543

2020年lumia怎样安装软件_2020年智能电视必备软件排行榜,当贝市场分享

2020年马上就要到了,相信不少用户在各种大促中购买的智能电视已经操作的很流畅了,可还会存在一个问题就是应该安装哪些软件才好,今天小编就给大家推荐几款智能电视必备的几款软件,其中包含娱乐、影视、K歌等,没有下载的朋友,尽快下载哟~应用市场类--当贝市场作为一款内含海量应用的应用市场,里面包含了直播、点播工具、学习、健身、娱乐等软件,是目前市面上最全面的电视应用商店。里面有超详细的应用分类,给用户提...

weixin_31129503的博客 888

【人工智能】AI驱动值班巡检Agent(Hermes)

传统运维值班巡检场景中,存在四大核心痛点:本项目基于 Agent+Skills+浏览器自动化 架构,构建了具备自我进化能力的AI值班员,核心逻辑流如下:

奶爸的编程之路,也就一周冷个三天 178

网络电视(IPTV)系统解决方案

视频点播模块基于B/S架构,采用誉沃自主知识产权的服务内核,目前主流的MPEG-1/2(mpg、dat、mp3、vob)、MPEG-4(avi、asf、wmv、flv)、Real(rm、rmvb)、FlashVideo(flv、f4v)、高清编码(H.264、VC-1)、手机平台(3gp、mp4)、MKV等各种媒体格式自动转码为多种高品质的视音频文件格式MP4(H.264+AAC)和M3U8+TS(H.264+AAC)格式,供不同终端设备使用。系统界面友好(可定制),简便易操作,业务流程清晰、完整;

jiangbeck的博客 1965

LPDDR6与LPDDR5 ZQ Calibration技术探讨

LPDDR6与LPDDR5 ZQ Calibration技术探讨

zilan23的博客 1098

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

湖南卫视淘金互联网:芒果TV估值或超60亿元

来自国内投资界的知爱人士向腾讯科技t透露,惨淡卫视全资子公司得意阳光即将已毕A轮融资,公司估值超出60亿国民币,此刻已有二十几个公有和民营布景的大型基金竞标认购,融资结果预测明年初将对外颁布。     湖南卫视副台长聂玫在接纳腾讯科技采访时,对上述音讯未予置评,但她夸耀,快乐阳光旗下芒果TV将完全服从收集局势实施商场化运营,不铲除引入外部本钱或并购其他新媒体公司。     看成国内最成

网络小鱼儿 1170

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

日系电视成为中国主场?电视产业大变革怎么发生的?

反观中国家电企业,凭借对本土市场的深刻理解,快速调整产品策略,推出符合消费者需求的高性价比产品,同时依托中国制造在供应链效率、成本控制上的核心优势,构建起高效的生产与销售体系。第三,值得关注的是,近年来出现的中国资本对日系家电巨头的反向控股或深度战略合作,绝非纯粹的资本化“买买买”,而是对于其供应链、产业链的全方位战略布局。曾经,日系电视是市场上绝对的王者,上个世纪90年代家家都是以买了松下、夏普彩电为荣,然而就在最近有媒体曝出日系电视已经全面成为中国企业的主场,电视产业的大变革到底是怎么发生的?

2401_88566218的博客 718

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

卷走超大屏电视半壁江山:TCL屏实力说话

2022年,国内家电市场发生了巨大变化,各大厂商们在“超大屏”这条赛道上是越"卷"越带劲。 以电视行业为例,自2021年8月陆续推出98Q6E、98X9C两款超大屏电视后,TCL就几乎包揽了国内98吋彩电市场的半壁江山。最新公布的GFK中怡康全渠道数据显示,TCL以40.95%的销量占比力压第二名的海信和第三名红米,并以远超二者之和的优势位居行业第一。 阶段性的胜利成果,让TCL有节奏地堆砌起超大屏领域的堡垒。4月20日,TCL正式推出第一台不忽悠年轻人的真高刷电视T7E,该系列共有5个尺寸,其中9..

weixin_56846000的博客 353

饱受质疑的“故事大王”乐视,如何做成了互联网电视?

文/腾讯科技 李儒超,来源:腾讯科技 推荐自:VC互联网分析频道  微信ID:qianhaoapp 2012年9月19日的那场发布会,是梁军“噩梦”的开始。 这是乐视创始人贾跃亭“山寨”乔布斯的首秀。身着黑色圆领T恤、黑色休闲西装裤,贾跃亭在台上不断变换手势,拼命鼓吹乐视超级电视将会如何颠覆行业----即便没有任何产品,甚至没有任何参数,只有一份PPT。 那天,身为乐视电视

lijiuyangzilsc的专栏 1190

电视鸿蒙系统最新版本,鸿蒙系统真来了,华为智慧屏3299革了电视的命

原标题:鸿蒙系统真来了,华为智慧屏3299革了电视的命在过去的这些年里,客厅都是以电视为中心,但是随着手机、平板、电脑在家庭里的普及,电视越来越成为花屏,买了用不着,不买不像家。华为看准时机,推出智慧屏S系列,拥有55、65、75寸三种屏幕尺寸共6款机型。基于鸿蒙系统的分布式能力,打破了手机、电脑、平板、电视之前的隔阂,当然,最重要的一点就是华为智慧屏S系列性价比非常高,3299就可以搞定,感觉还...

weixin_29005499的博客 738

实施期项目目标分解及进度安排

matlab_python22的博客 101

电视卖不出还没人看,广电总局急了:全面解决这个痛点

来自公众号:电脑报突发!OpenAI发布最强模型 o1(附国内使用地址)年初,有网友评价电视开机率称,“元旦,亲戚家买了台智能电视,一个高中生,两个大学生,拿着遥控器研究了10分钟,不知道怎么进去CCTV1”。此番言论得到不少网友的赞同,大家纷纷吐槽,智能电视的功能越来越多,却越来越难用。此前,奥运会期间,不少人鼓起勇气打开吃灰的电视,却因为不会开电视而“崩溃”,有网友在社交平台发文称:“IPTV...

程序IT圈 398

Rust By Practice 所有权实战练习全解析:从 move 语义到部分 move

> 本篇是开源实践项目 rust-by-practice(Rust 练习实践)[所有权章节](https://link.gitcode.com/i/c9e8213cb20a575ab46a5e13d344763b)中「所有权」一节的完整实战指南。该章节围绕 Rust 最核心的所有权(Ownership)机制设计了 9 道难度从 🌟 到 🌟🌟🌟 的编译修复题,覆盖 move 语义、函数参数与

gitblog_00168的博客 419

阶段性PJ某软件APK

APK,逆向,MAC

zjdragoon的博客 1892

「评测」联想S9智能电视:爱恨皆空鼠

联想称,“终结者S9”代表了自己对智能电视探索的阶段性成果,它的核心价值在于引入一种新型的遥控器交互技术——空鼠,以及探索一种新型的硬件架构,通过升级卡的形式,让电视有机会使用未来最先进的处理器。 鉴于升级卡更像是将一台不带屏幕的平板电脑接到电视上,使之可以共享电视的屏幕、音响和网络连接,升级卡与电视本身是完全不同的两套软硬件系统。至少目前来...

weixin_34138377的博客 495
上一篇: 全面解析Java注解
下一篇: Android后台推送服务的实现设计
HabbyGe
博客等级 码龄16年 46粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值