- 博客(76)
- 收藏
- 关注
原创 海思Hi3798MV200平台将打印串口改成普通串口
在Android板系统开放时,为了调试方便,往往会留一个调试(打印)串口,在无网环境时或系统无法正常启动时,可以通过打印口连接电脑串口工具查看日志进行问题分析。系统调试完成后一般就用不上打印串口了,这样也就浪费了硬件资源,这时可以将打印串口改成普通串口,就可以用来做其他功能,比如连接智能中控等外设,以适用更多使用场景。下面以海思Hi3798MV200平台为例,将打印串口(通常为 UART0)改成普通通讯串口。确认 device\hisilicon\Hi3798MV200\etc。/* 不注册控制台 */
2025-12-15 11:00:30
183
原创 关于Android14存储权限每次开机需要重新申请问题适配
平台建议Android 14✅ 使用MediaStoreAPI✅ 如果是系统应用,直接申请Android 13使用Android 12 及以下使用。
2025-11-28 16:21:04
857
原创 记录一次海思Hi3798MV200-android7.0平台开机卡在第一张图无法进入系统问题分析解决过程
最近在处理客户返修机器时,遇到机器开机一直卡在开机logo无法进入系统问题,但不是每次开机都这样,发生故障概率大概在30%,之前虽然有遇到过,但概率极低,重启后就好了,所以一直没放在心上,刚好借这次机会深入分析一下。
2025-10-25 15:49:27
634
原创 基于海思Hi3798MV200-android7.0适配RTL8733BU模块WiFi流程梳理
源码路径:HiSTBAndroidV600R003C00SPC020\device\hisilicon\bigfish\sdk\source\component\wifi\drv\usb_rtl8733bu\rtl8733BU_WiFi_linux_v5.15.12-123-g23d8f6271.20240806_COEX20230616-330e\Makefile。wifi.c中通过wifi_send_command() 使用ctrl_conn 中的wpa_ctrl 对象向WPAS 发送命令并接收回复。
2025-10-23 13:48:59
777
原创 基于海思Hi3798MV200 Android7.0实现电影播放蓝光导航功能
下面把“能做什么”与“还差什么”拆开说明。海思 SDK 里 VO 图层多达 8 层,Android HAL 层需暴露 “HWC_BLURAY_IG” 新 LayerType,让 SurfaceFlinger 把 BD-J 的 off-screen 纹理送到 VO 层 3/4。否则只能走“研究性”libaacs + 已知 PK 表,不能商用。若需“完全正版蓝光导航(含 BD-J 游戏、BD-Live 下载)”,必须引入商业授权 JVM / AACS / BD+ SDK,并改 Android HAL。
2025-09-29 16:49:43
1098
原创 基于海思Hi3798MV200Android7.0聊聊HDMI色深模式和电视HDR
技术版:峰值亮度 ≥ 1000 cd/m²、黑场 ≤ 0.05 cd/m²,同时色域 BT.2020、色深 10-bit、光电转换函数 PQ(Perceptual Quantizer,EOTF-2)或 HLG(Hybrid Log-Gamma,EOTF-3)。海思Hi3798MV200芯片在硬件层面具备对HDR(HDR10、HLG、HDR Vivid)和SDR的完整支持能力,包括HDR转SDR、多路图形/视频叠加、BT.2020色域、10bit解码、HDMI 2.0 4K@60fps输出等关键特性。
2025-09-29 14:19:36
1502
原创 Android播放视频适配黑边问题类型总结
在Android开发视频播放类功能时,视频画面周边出现黑边是个很常见的问题,下面把 Android 视频播放常见的「黑边」现象一次性梳理清楚——。以后无论用 ExoPlayer、MediaCodec 还是第三方 SDK,直接按这张“排查表”打钩即可。
2025-09-18 11:41:27
487
原创 RK平台GPIO控制说明
GPIO是General Purpose I/O的缩写,即通用输入输出端口,简单来说就是MCU/CPU可控制的引脚, 这些引脚通常有多种功能,最基本的是高低电平输入检测和输出,部分引脚还会与主控器的片上外设绑定, 如作为串口、I2C、网络、电压检测的通讯引脚。Linux提供了GPIO子系统驱动框架,使用该驱动框架即可灵活地控制板子上的GPIO。
2025-09-17 17:56:59
961
原创 Android 点屏流程与类型 LVDS/eDP/MIPI 优缺点对比
接口全称物理层信号内容主要应用LVDS低压差分对(≈350 mV)RGB 数据 + 同步 + 时钟车载、工控、中大屏eDP高速差分对(2.7/5.4/8.1 Gbps/lane)微封包化视频/音频/控制笔记本、平板、一体机MIPI-DSI低压差分对(D-PHY: ≤2.5 Gbps/lane)视频流 + 控制命令手机、智能穿戴、小尺寸平板MIPI是移动低功耗王者;eDP是高分辨率轻薄设备未来;LVDS在工业与中低端大屏上继续发挥余热。
2025-09-17 11:51:51
805
原创 Android创建新的自定义系统分区实现OTA内容修改
在 Android 12 源码中新增一个名为private的系统分区,用于存放差分升级包、OTA 脚本或其他私有数据。
2025-09-16 20:30:22
571
原创 Android「Global / Secure / System」三大命名空间全局设置项总结
Android「Global / Secure / System」三大命名空间下常见的可写设置项(如动画缩放、屏幕亮度、安装未知来源、输入法、定位、音量、飞行模式、锁屏、字体、DPI、NTP、Wi-Fi 休眠策略等),但尚未找到一份的「所有全局可设置项」清单。由于 Android 版本碎片化严重,OEM 厂商还会自定义键名,想一次性“全部”列全必须拿到各版本系统源码中的与,再与运行时快照交叉对比,才能确保无遗漏。
2025-09-12 19:47:52
1252
原创 android定制系统完全解除应用安装限制
在Android开发过程中,应用安装功能是很常见的,但随着sdk版本变高,限制也越来越严格。除了用户可见的【未知来源】安装限制,还是开发中对文件Uri读取的限制,需要权限。OTA 升级会覆盖掉你的 patch,需要重新打补丁。普通 App 想用“免授权”手段安装,五、如果只想“自己 App 静默装”而不改系统。下面给出完整思路与关键源码位置,按需取用。稍微“温柔”一点(只让安装流程放行)最小改动(暴力版,开发调试可用)三、把“未知来源”弹窗也干掉。,普通 App 无法持有。结论先行(给忙人看的)
2025-09-09 20:20:45
716
原创 Android焦点窗口变化导致遥控键值监听失效问题分析
下面给出一份从应用侧到系统侧的「Android 焦点窗口变化」完整链路梳理,覆盖触发时机、WMS/SurfaceFlinger/InputDispatcher 三大核心模块的协作过程,并补充常被忽略的细节(多屏、IME、无焦点 ANR 等)。正常这个逻辑是没问题的,但实际使用中发现,只要是通过语音指令模拟发送的键值,目标应用都无法监听到,而通过遥控器直接操作或者adb命令操作都没问题,这个就很奇怪了?④ 若 newFocus==mCurrentFocus,直接返回;
2025-08-21 19:33:11
787
原创 通过机器学习框架实现Android手写识别输入功能
中,我们介绍了传统的手写识别输入方案,但是有一个很大的缺陷就是通过一些厂商的动态so库来识别的,但是只支持32位的,现在Android版本更新很快,在Android14之后就强制不再兼容32位的应用了,没有64位的动态库,这个方案就只能在较Android低版本上使用。这就大大限制了产品迭代,好在这几年机器学习发展迅猛,几经周折终于找到了一个可以通过机器学习框架来实现手写识别了。源码学习可查看:Android实现手写输入https://note.youdao.com/s/Br8ilw2C。
2025-08-14 18:49:56
227
原创 GitHub上优秀的开源播放器项目介绍及优劣对比
DKVideoPlayer 是一个用于 Android 平台的视频播放器库,封装了多种视频播放核心,包括 Android 原生的 MediaPlayer、Google 的 ExoPlayer 和 Bilibili 的 IjkPlayer。它模仿了抖音的播放效果,支持预加载、列表播放、悬浮播放、广告播放、弹幕、视频水印和视频滤镜等功能。项目地址(示例项目,实际SDK需从阿里云官网获取)特点阿里云视频播放SDK,支持Android和iOS平台。提供丰富的云服务集成,如视频点播、直播、视频转码等。
2025-07-10 14:12:40
2665
原创 Android 自定义TextView实现K歌场景文字描边效果
这种效果该如何实现呢?为了更好的显示效果,这里的文字显示都是带描边的,其中歌名【搀扶】是白边紫红色填充,歌手等信息是黑边白色填充。实现方法:自定义StrokeTextView。
2025-07-07 09:53:13
360
原创 自定义View实现K歌开始前歌词上方圆点倒计时动画效果
在K歌场景中,一些歌曲前奏很长,用户不知道什么时候开始唱,这时一般在歌词上方会有一个圆点倒计时的效果来提醒用户开始时间,如下图:开始唱之前,圆点会逐个减少,直至圆点全部消失即开始正式演唱了。自定义View的话,可以通过继承View类,重写onDraw方法来绘制圆点。属性方面,可能需要自定义属性,比如圆点半径、颜色、间距等,这样在XML中方便调整。然后,倒计时的控制。测试的话,用户需要在布局文件中添加这个自定义View,设置合适的属性,然后在Activity中调用startCountdown方法开始倒计时。
2025-06-13 11:12:26
637
原创 KRC歌词解析原理及Android实现K歌动态歌词效果
**元数据部分** :包含歌曲的基本信息,如 `[ar:歌手名]` 表示演唱者,`[ti:歌曲名]` 表示歌曲标题,`[by:歌词作者]` 表示歌词作者,`[hash:哈希值]` 用于验证文件完整性,`[total:总时长]` 表示歌曲总时长,`[offset:偏移量]` 用于调整歌词显示时间偏移等。* **歌词内容部分** :每行歌词的格式为 `[起始时间, 结束时间]<音符信息>歌词内容`,其中音符信息格式为 `<起始时间, 持续时间, 音符索引>`,用于控制歌词显示效果。
2025-05-15 17:32:09
791
原创 Android Exoplayer多路不同时长音视频混合播放
还有就是切换音轨的时候需要注意,由于音视频分开处理了,切换音轨的时候只处理音频播放器即可,切换分辨率的时候只处理视频播放器即可,这时媒体轨道数会比音视频混合一起的情况要少一些,因为只有视频或只有音频轨道,切换时轨道索引值参数肯定要小些了。一直没有找到很好的方法解决,最后采取了一个笨办法,启用两个播放器,一个专门播放视频,一个专门播放音频,这样视频任意混合或循环播放都与音频互不干扰,就可用规避时序错乱问题。中我们提到一个问题,如果视频和音频时长不一致,特别是想混合多个音频和多个视频时就会出问题,无法播放。
2025-05-13 17:56:55
795
原创 Android Exoplayer 实现多个音视频文件混合播放以及音轨切换
中介绍了Exoplayer中各种子MediaSource的使用场景,这篇我们着重详细介绍下实现多路流混合播放的用法。常见的使用场景有:视频文件+电影字幕、正片视频+广告视频、背景视频+背景音乐等。上面是1个视频+1个音频,当然也可以支持1个视频+多个音频,比如电影中有多个不同语言的音轨。这样就可以实现一个视频混合多个音轨文件的播放了,那么如何动态切换不同音轨呢?这个主要是播放时长不一致,无法同步时序导致,下一篇再讨论如何解决此类情况。这样就能让两个视频按顺序播放且无缝衔接,若还想它两循环播放,可用。
2025-05-12 15:06:27
1113
原创 Android TextView实现跑马灯效果性能优化
在生活中经常见到文字滚动显示场景,比如电子屏幕信息提示、KTV电视上显示播放歌曲信息等,俗称跑马灯。性能优化就是要积少成多,每个小功能细节上节省一点,应用整体上就会流畅很多。android:marqueeRepeatLimit="marquee_forever" //无限循环滚动。但是以上滚动效果只有在TextView获取焦点时才会触发,所以需要通过代码设置TextView焦点。实践发现效果不明显,性能消耗还是偏高。android:ellipsize="marquee" //显示长度不够时滚动显示。
2025-03-25 16:49:46
557
原创 AndroidStudio中build.gradle脚本和业务代码共用全局变量实现方案BuildConfig类
在app的build.gradle文件的buildTypes或productFlavors闭包中,使用buildConfigField添加自定义字段。
2025-03-13 18:51:10
927
原创 海思高安主控芯片兼容编译fastboot流程
华为海思主控芯片有高安和非高安之分,主要是安全性上区别,启动程序不同,一般无法共用。但实际生产中可能出现混料或者同一款产品不同批次一个是高安的一个是非高安的,这时就需要软件上做兼容,实际是高安固件是可以做到兼容非高安的,反之则不行。
2025-03-12 20:32:41
616
原创 ExoPlayer中常见MediaSource子类的区别和使用场景
Exoplayer作为谷歌官方推出的替代MediaPlayer播放器,功能强大,可拓展性强,被广泛用于各种音视频使用场景,支持各种常见的格式和场景。Exoplayer支持多种资源读取方式,以MediaSource 的子类开放给开发者使用。我们常用的有ProgressiveMediaSource、DashMediaSource、HlsMediaSource、ClippingMediaSoutce (片段流)、RtspMediaSource、MergingMediaSource等。
2025-02-28 16:03:47
1139
原创 Android双屏异显副屏实现PIP效果小窗口同步显示主屏播放画面
而主屏是VGA输出的,而且主要是显示操作界面的,跟电视上的画面并不完全一样,也就是双屏异显,只是小窗口画面一样,这就需要软件上来处理了。方式二:独立普通应用实现,不依赖底层,Exoplayer+TextureView实现,textureView.getBitmap()方法就可以直接得到当前播放帧的位图,在主屏MainActivity通过ImageView进行显示即可。在KTV应用开发中一个常见的场景需求就是一台设备要接多个显示屏,其中一个主屏一般都是触摸屏,通过VGA线连接,支持手点击操作点歌切歌等。
2025-02-27 15:22:02
1124
原创 最新版本Exoplayer(MediaX)实现K歌原伴唱包括单音轨和双音轨
使用Exoplayer实现原伴唱切换功能,对于双音轨歌曲很简单,有现成的接口调用进行音轨切换就可以了,对于单音轨歌曲要切换左右声道Exoplayer并没有提供现成的接口,网上也有一些方法实现,但基本上都用不了了,要么是接口被舍弃了,要么就是达不到想要的效果。至于哪个音轨或声道是原唱还是伴唱由制作歌曲的时候觉得,不同的文件可能是反的,所以一般的做法是人工对歌曲列表做标识,标明该歌曲哪一个音轨或者声道是原唱,在切换原伴唱时先获取该标识就可以知道该使用哪个音轨或者声道了。1.双音轨:音轨一是原唱,音轨二是伴唱。
2025-02-21 12:44:31
1351
原创 最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程
android设备系统自带的mp3解码器报错[OMX.google.mp3.decoder],在不同的平台上测试结果都报一样的错, 硬解码不行那就只能想办法进行软解了。decoder_ffmpeg模块最终会被编译打包成aar文件供Android调用,由于依赖FFmpeg,先要下载FFmpeg源码进行编译得到所依赖的库才能成功打包aar。下面详细介绍整个流程:参考该文章。ExoPlayer 是一个开源的 Android 媒体播放库,由 Google 开发和维护,用于替代 Android 系统自带的。
2025-02-21 10:50:14
2490
原创 android ROM开发网络下载速度缓慢问题解决方案
我们主要关注/proc/sys/net/ipv4/tcp_rmem和/proc/sys/net/ipv4/tcp_wmem配置文件,决定了tcp收发数据缓冲区大小。注意:如果只是通过shell命令中途修改配置,在网络变化或者设备重启后就会恢复系统默认配置,所以想要永久改变配置还是要通过修改源码实现,或者在应用层每次开机或网络变化时修改一次。关于tcp缓冲区大小默认值配置,可修改内核源码:kernel/linux3.18/net/ipv4/tcp.c中的tcp_init()函数。
2025-01-08 18:53:23
908
原创 Android多张图片融合组合成一张新图片
在Android平台上,图像融合通常涉及到像素级别的操作,即根据一定的规则计算每个像素点的颜色值,从而得到融合后的图像。有一张大的半透底图bmp_bg和一张小的半透上层图bmp_top,现需要用小图覆盖大图的左上角部分,从而实现替换一些由第三方提供的不可控内容,由于都是半透图,直接叠加的话无法实现完全遮挡,所以需要将被覆盖的底图部分掏空成全透明的。在Android开发中,图像融合是一项常见且重要的技术,它能够将多张图像按照一定的规则组合成一张新的图像,广泛应用于图像处理、摄影后期、
2024-11-29 12:06:23
1063
原创 RK3568 Android12跳过认证 预置谷歌服务GMS
谷歌全家桶中有三个是必现安装的:Google Services Framework 【gsf】、Google Play Services 【gms】、Google Play Store【Playstore】,其他应用根据需要预装即可,先去APK Mirror平台下载与设备环境匹配的apk,比如我的环境是android12 arm64,没有匹配的就下载通用版本。未获得Play保护机制认证的设备可能无法正常使用Google Play商店,下载或更新应用时可能会遇到问题。此设备未获得Play保护机制认证。
2024-11-06 19:07:03
3683
1
原创 Android实现可选区域全局屏幕截屏和应用内截屏
这个交互效果不太理想,选择区域是一次性的,不显示选择区域,也不能对现象区域进行拖拽或者放大缩小。从这可以看出默认执行的截屏类型是TAKE_SCREENSHOT_FULLSCREEN,即全屏的,若想进行区域截屏,将类型改成TAKE_SCREENSHOT_SELECTED_REGION即可。但这个方法是无法对非本应用画面进行截图的,比如当前Activity是一个半屏弹窗,那么弹窗之外的区域是无法截取到的。优化:自定义显示一个区域框,可以对区域框进行拖拽、放大、缩小,点击确认按钮后进行选定区域的截屏。
2024-09-14 14:46:04
1906
原创 关于Android12第三方应用左右两侧有黑边问题
后来无意中发现把以前开发的厂测工具应用安装在这上面也有黑边,而这个厂测在之前的平台上是正常的,不同的是之前平台是Android7.0的,APP的targetSdk=23,也是7.0,所以猜测是跟sdk版本有关。这是android12开始支持了多窗口和分屏等功能,对一些低版本sdk的应用兼容性有了调整,如果不想改变targetsdk到更高,也可以为Activity增加resizeableActivity属性,同样可以达到去除黑边效果。这样就可以从系统层面解决所有应用显示黑边问题,包括安装的第三方应用。
2024-09-06 19:04:45
927
1
原创 Android强制设置所有应用显示方向,忽略应用本身的设置
在ROM定制系统开发过程中经常会遇到需要改变第三方应用显示方向的需求,比如抖音这种手机APP都是强制竖屏的,不会跟随屏幕旋转。方法就是处理应用中的显示方向设置的,第一个参数orientation就是应用设置的方向,在此方法中进行拦截重写即可。:应用可以注册方向监听器来监听设备的方向变化,通过 Sensor Service 获取传感器数据,并计算设备的方向。:屏幕旋转后,系统请求重新绘制界面以适应新的方向,应用的布局会根据新的配置进行重新计算和绘制。方法设置屏幕方向,此方法等同于在。
2024-08-30 18:46:56
1404
原创 Android12一行代码实现系统截图效果
那么也就是说在任何第三方应用开发时,只需发送一条android.intent.action.SCREENSHOT即可触发系统截图功能。继续搜索截图任务mHandler.post(mScreenshotRunnable);一般android手机都可以通过“电源键+音量键”组合触发系统截图功能,那么自己开发通过代码如何实现呢?interceptKeyBeforeDispatching()先接收到截屏按键KEYCODE_SYSRQ。结果成功触发了系统截图,所以实现系统截图功能一行代码,发送个广播就可以了。
2024-08-16 11:21:37
675
原创 RK平台如何 将第三方资源文件和代码编译到系统内
在定制系统开发中经常遇到需要将一下第三方资源或代码集成编译到系统固件包中,比如预装apk、预置特定目录文件、开源项目代码或者自己新建的项目代码。1.编辑项目Android.mk为系统文件,比如系统apk。目录(可以彻底卸载,恢复出厂操作后无法恢复)目录(可以卸载,恢复出厂操作后能恢复)三、编译新增的项目代码到系统img中。二、预添加自定义目录和文件。编译 android。
2024-08-09 19:17:55
636
原创 android 支持通过外接4G模块联网
后来在全志A40平台上无论怎么调都无法自动拨号,但是通过linux方式用pppd命令可以拨号成功拿到IP和DNS信息,但是由于没有走android系统的网络切换流程,系统网络信息不会更新,导致无法上网。动态更新网络IP和dns是在ConnectivityService.java中进行,因为所有形式网络路由信息获取到后都要进行网络信息注册:registerNetworkAgent,注册成功后相关会自动进行相关信息更新,所以动态调用registerNetworkAgent()就可以了。: 网络句柄,这里是。
2024-07-30 21:02:42
1401
原创 Android实现手写输入
转换成正确字符,这块是各个输入法厂家的核心功能,一般不对外开源,都是通过调用so库形式实现,而库和调用方法也鲜有介绍。之前扣过某狗输入法的手写库可以使用,大致实现是通过上层抓取画点轨迹的坐标数组传给so库的识别函数得到返回结果。android应用开发中有时会有手写输入需求,非通过系统键盘手写功能,比如自定义键盘,这时就需要自己来实现,一般有两种场景:一种是类似手写签名保存;二、真正的手写输入,需要将笔迹识别成正确的字符,这个比较困难,主要是需要将画点轨迹。
2024-07-01 20:25:48
1568
2
原创 关于音乐播放器与系统功能联动功能梳理
三、与其他播放器状态同步:本应用播放时暂停其他应用播放,进入其他应用播放时,暂停本应用的后台播放。通过MediaSession + MediaMetadata + PlaybackState实现。通过AudioManager监听onAudioFocusChange音频焦点变化实现。通知栏整体点击跳转到播放界面:注册全局监听广播。二、系统下拉栏中播放模块显示同步。一、通知栏播放显示和控制。与其他应用播放器状态同步。
2024-06-08 17:32:42
391
超级好用的串口调试工具
2023-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅