Android 进阶
文章平均质量分 85
放大的EZ
本人郑重声明,本博客所编文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。
展开
-
Android Mediacodec H.265文件播放
/hevc的nal包结构与h264有明显的不同,hevc加入了nal所在的时间层的ID,取去除了nal_ref_idc,此信息合并到了naltype中,//00 00 00 01 26 01 的nuh_unit_type的值为 19, 语义为可能有RADL图像的IDR图像的SS编码数据 IDR。//00 00 00 01 02 01 的nuh_unit_type的值为1, 语义为被参考的后置图像,且非TSA、非STSA的SS编码数据。// 计算csd buffer的长度。//-1表示一直等待;转载 2024-09-06 23:30:00 · 67 阅读 · 0 评论 -
android selinux报avc denied权限和编译报neverallow解决方案
直接打开编译报错中那个domain.te,路径:system/sepolicy/public/domain.te,找到和我们添加的部分,搜索“device:chr_file”,可以找到如下内容了,看一下就明白了,不允许我们这样修改了。报错原因是Google在Android Q上增强了对ioctl的审查,除保持对ioctl的审查/授权之外,对具体的ioctlcmd也需要进一步地审查/授权。1、先查看一下是哪些相关的代码申请的这个权限,主要是判断一下是申请的属性还是device节点访问权限等。转载 2024-07-06 20:00:00 · 600 阅读 · 0 评论 -
Android 抓取app进程 hprof 文件 内存泄漏 oom
抓取的hprof后,可以使用用hprof-conv 命令将DVM 格式的hprof 转换成标准的java 命令的hprof,这样即可在代码中直接将这个process 的hprof 保存到相对应的文件中,注意这个只能抓取当时的process.在DDMS 中选择对应的process, 然后在Devices 按钮栏中选择。如果想抓其他的process 的hprof, 那么就必须通过AMS 了。提示我们用/data/local/tmp/ 下面。Hprof file, 保存即可。进入adb shell。转载 2024-01-10 22:30:00 · 996 阅读 · 0 评论 -
Android mk 引用 jar 包、so 库、aar 包,系统签名
Android.mk文件用来告知 NDK Build 系统关于 Source 的信息。它是GNU Makefile的一部分,且将被 Build System 解析一次或多次。转载 2023-11-06 21:00:00 · 558 阅读 · 0 评论 -
Android使用MQTT订阅及发布消息((一)初步了解Mqtt以及实现Android操作mqtt服务)
MQTT协议。转载 2023-10-27 23:45:00 · 5477 阅读 · 0 评论 -
android 集成第三方静态库的编译方法
* 红色这一句在android2.3上是没有的,不过如果没有这一句,这种方式是用不了的,它始终会提示你这个模块没有定义LOCAL_MODULE_TAGS,提示说你必须定义它再能继续编译,optional是所有编译模式都会编译的关键字。下面的图片列出了所有相关文件,可以看到引用静态库的文件是com_xxx.cpp文件,而.a文件是放在lib目录下的libHWRecog.a,而库提供出来的头文件在include下的两个.h文件。如果某一个库既有动态库又有静态库,那么在默认情况下是链接的动态库而非静态库。转载 2023-10-16 20:30:00 · 646 阅读 · 0 评论 -
Android App开发教程——使用Chaquopy轻松结合Python
然而,如果要将Python结合到Android App(应用程式)中,需要进行一些复杂的设置和调整。使用Chaquopy,各位可以轻松地将Python代码整合至你的Android App中,从而实现更复杂的功能。如果你是一个Android App开发者,建议你试试Chaquopy,体验它带来的好处,有问题的看官们欢迎联系我,我们一同讨论。e. 配置python环境,此教学使用windows环境进行建置,因此需要依照个人电脑中python配置路径进行修改,如果没有安装python,请自行安装。转载 2023-09-07 21:30:00 · 702 阅读 · 0 评论 -
获取当前连接的蓝牙设备的名称
而且要遍历各种 类型的额蓝牙设备 ,比如 音响 ,头戴,耳机,常用,等。//使用反射调用被隐藏的方法。* @hide (注意这个,已隐藏)//得到已匹配的蓝牙设备列表。-- 蓝牙权限 -->具体不显示 ,问 GPT。转载 2023-09-07 21:00:00 · 633 阅读 · 0 评论 -
Android 自定义开机引导最强篇 provision
设置相关标记位可以让其他服务知道设备可用,如锁屏服务可用,启用Home键功能等,将该Activity禁用可以让下次开机时我们的应用不会再起来而直接启动桌面,finish就不用做解释,开机引导走完了就该销毁自己了。属性的Launcher,在Pixel手机上,作为开机向导的应用是Google的。应用,这是谷歌的应用,代码不在AOSP中,在AOSP中有一个包名为。的代码移到自己的项目,走完我们自己的引导流程后设置相关属性,然后把。具体代码实现,让自己的应用比Launcher先起来的方式,转载 2023-07-25 21:45:00 · 1616 阅读 · 0 评论 -
两个独立 APP 通过 AIDL 进行通讯的简单例子
需要在服务端增加一个实现了 Parcelable接口的对象(只支持Parcelable,不支持Serializable)。in:服务端可以接收参数,不可修改。在 AIDLClient 项目中,我们需要把 AIDLServer 中 aidl 生成的java文件(图7)拷贝到项目中(图8)来,注意包名也要一致。MyService 中的代码如下,此时服务端 APPService 项目的代码就完成了。此时点击对应的按钮,我们可以把 mNumber 自增后的数据设置到服务端,然后又从服务端拿回数据。转载 2023-07-14 21:45:00 · 167 阅读 · 0 评论 -
Android 9.0 WiFi 扫描结果上报和获取流程
本文是对wifi扫描结果上报和获取过程的java层代码流程梳理总结。我们先分析扫描成功的上报和获取过程。转载 2023-07-01 12:15:00 · 372 阅读 · 0 评论 -
播放器色觉辅助功能开发,助力提升色觉障碍用户的视频观看体验
本文同时发布于团队博客:https://blog.csdn.net/avlabs/article/details/80470370本文包含以下内容1.简单介绍人眼彩色视觉的基本原理2.介绍如何利用算法模拟色觉障碍用户所看到的画面3.基于色觉障碍模拟算法,介绍几种色觉障碍辅助方法,这些方法可以帮助色觉障碍用户更好地分辨本来难以分清的颜色4.介绍如何在Android播放器中集成色觉障碍辅助功能以及我们提供的示例库所谓色觉辅助功能,就是帮助色盲、色弱人群更好的观看视频。转载 2023-05-10 00:30:00 · 1875 阅读 · 1 评论 -
android L 关机流程图
do_msm_poweroff()与do_msm_restart()都设置了dload,PMIC,唯一不同的是do_msm_restart()里多了一个__raw_writel的动作,即reason写入IMEM,目的在于重启进入sbl1时判断应该进入那种模式,如我们开发用的bootloader模式,恢复出厂设置的recovery模式等。//也是用bootanim进程,跟开关动画一样的方式。转载 2023-04-17 22:00:00 · 579 阅读 · 0 评论 -
Android 系统中WatchDog 日志分析
Android 系统中的 WatchDog 详解一文中通过source code详细的分析了 WatchDog 的软件设计原理和监测过程,这一篇结合实例对WatchDog 做进一步的分析。转载 2023-04-14 22:30:00 · 518 阅读 · 0 评论 -
SEAndroid流程分析
init会解析/file_context文件的内容,将相关信息填充到入参rec的data成员中。与设置app文件安全上下文的selinux_android_setfilecon不同的是,设置app进程安全上下文的函数selinux_android_setcontext会根据符合的规则的domain去设置进程的domain,而selinux_android_setfilecon会根据符合的规则的type去设置文件的type,安全上下文其他部分user,role,level的设置差别不大。转载 2023-04-14 21:00:00 · 587 阅读 · 0 评论 -
Android 系统中的 WatchDog 详解
Android 中的WatchDog 主要是监测系统中重要服务,例如AMS、WMS 等,当注册的monitor 无法通过检测,或者是消息处理超时的时候就会触发WatchDog,最后可能会引起系统的重启。转载 2023-04-14 22:45:00 · 2577 阅读 · 0 评论 -
OTA A/B 分区升级 update_engine简介
现将其主要逻辑做简单整理归纳。cmd参数就是一开始传过来的command,这里用到了brillo/process.cc来执行命令,这里不再继续跟进了,update_engine大致的升级流程到这里就完成了,但还是有很多方面暂时没有涉及,一些详细的过程也没有去更进一步的去分析跟进,留待以后有时间或者遇到相关问题再去做进一步分析。整个升级的执行过程都在ApplyPayload方法中进行了,先是检查了参数和当前升级状态,然后构建了install_plan_,它的作用就是打印信息,将。原创 2023-04-12 22:00:00 · 3937 阅读 · 0 评论 -
SELinux策略实施的可视化操作指南
当libvirt即将启动虚拟机时,它会挑选出像S0:C1,C2这样的随机MCS标签,然后将SVIRT_IMAGE_T:S0:C1,C2标签分配给虚拟机将需要管理的所有内容。我们将Apache Process的标记为HTTPD_T,并将Apache内容标记为HTTPD_SYS_CONTENT_T和HTTPD_SYS_CONTENT_RW_T。我们编写规则,以控制流程标签到像文件之类的对象标签的访问。我们想把灰狗标记为狗:灰狗和它的狗粮标记为狗粮:灰狗,把吉娃娃标记为狗:吉娃娃和它的食物标记为狗粮:吉娃娃。翻译 2023-02-14 23:45:00 · 146 阅读 · 0 评论 -
Android databinding xml中处理数据与控件绑定
xml中加载图片编译时会爆出警告,xml中设置数据有几种情况没有提示,编译时xml中出现错误并不会定位到错误的位置,等一些问题。大家看到这是用布尔类型来判断,但是实际项目中不可能全是这么简单的判断条件,可能需要通过一个int类型或者string类型来判断,加入现在我们的判断规则是,根据年龄来控制按钮的显隐性,年龄大于五十岁的隐藏,小于五十岁的显示,实际项目中也可能给你的不是个路径,而是根据类型加载不同的图片,也可能是本地图片,那么下面看下。app:testState="@{"图片路径"}"/>转载 2022-11-08 21:45:00 · 918 阅读 · 0 评论 -
Android ViewModel与LiveData组件组合使用详解
LiveData是一个可被观察的数据容器类,具体来说,可以将LiveData理解为一个数据的容器,它将数据包装起来,使数据成为被观察者,当该数据发生变化的时候,观察者就能获得通知,我们不需要自己去实现观察者模式,LiveData内部已经默认实现好了,我们只要使用就可以了。//通过LiveData.observe()观察ViewModel中数据的变化。二、将上面的案例,结合LiveData组件一起使用,这样会更方便,减少代码的冗余。//完成对ViewModel中数据的更新。//收到回调更新UI界面。转载 2022-11-04 23:45:00 · 373 阅读 · 0 评论 -
Android架构组件ViewModel和LiveData介绍及使用
/ 创建LiveData}}}// 当MyActivity被销毁时,Framework会调用ViewModel的onCleared()}}转载 2022-11-04 22:00:00 · 1482 阅读 · 0 评论 -
AppbarLayout的简单用法
(4) enterAlwaysCollapsed:是enterAlways的附加选项,一般跟enterAlways一起使用,它是指,View在往下“出现”的时候,首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束。(4)视差滚动子View(Parallax scrolling children): 子View可以选择在当前的布局当时是否以“视差”的方式来跟随滚动。转载 2022-10-13 20:00:00 · 2097 阅读 · 0 评论 -
MotionLayout MotionScene 动画从未如此简单!
将升级到2.0或以上。将布局转化为创建文件并在的属性中指明。在文件中编辑分别设置动画开始和结束时控件的状态。编辑元素指明动画开始和结束对应的是哪个。预览和运行程序文章中的动画效果算是个入门,MotionLayout还有些更复杂更不好理解的属性。还有MotionScene要怎样复用?代码如何控制动画?等等。那下次就和大家分享这些进阶一点的东西吧。MotionLayout 动画从未如此简单!转载 2022-10-09 19:45:00 · 1083 阅读 · 0 评论 -
Qualcomm平台下基于QSEE的指纹识别方案移植之三hal层CA移植
Android8.0 将相关的库文件放到vendor 下,编译的时候直接编译到系统。转载 2022-09-06 20:00:00 · 804 阅读 · 0 评论 -
用addr2line分析tombstones
当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址(在哪个地址上发生了 Crash),死亡时的现场是什么样的(记录了一系列的堆栈调用信息)等等。我这边只看到了JNI_OnLoad,没有看到具体的行数。转载 2022-09-05 23:15:00 · 792 阅读 · 1 评论 -
Miracast技术详解(五):Permission 问题处理
由于Android上的Miracast功能强依赖Wi-Fi P2P,因此这个过程中也会依赖其相应的权限。经过调试及踩坑,主要会涉及到以下几个权限问题。以下分析过程中涉及到的源码版本为自Android 8.0及以后,官方已经限制了对接口的调用(这个接口本来也是@hide的,因此官方在高版本中对其进行限制也是理所当然),普通app已经没有权限进行调用了,也就是第三方app已经不能实现Sink端了。所以市面上的一些投屏软件,如:AirScreen,在高版本中会弹窗提示功能已被Google禁用。除非你是系统应用或者转载 2022-07-12 20:45:00 · 1235 阅读 · 0 评论 -
Miracast技术详解(四):Sink源码解析
Miracast Sink端源码最早出现在上,通过可以很方便的查看:https://android.googlesource.com/platform/frameworks/av/+/android-4.2.2_r1.2/media/libstagefright/wifi-display/sink/ 但是在以后,Google却移除掉了这部分源码,详细的commit记录在:https://android.googlesource.com/platform/frameworks/av/+/c4bd06130转载 2022-07-06 23:45:00 · 2767 阅读 · 1 评论 -
Miracast技术详解(三):RTP & MPEG2-TS
在上一篇文章中,我们已经成功完成RTSP能力协商与会话的建立,并准备开始音视频流的传输阶段。那么下一步,就是对音视频流进行解析,并将音视频展示给用户的过程。这样整个Miracast的流程就算分析完毕了。先简单来总结下,在Miracast底层的实现中,是采用RTP协议对MPEG2-TS数据包进行封装,其中MPEG2-TS又同时封装了Audio和Video两种ES(Elementary Stream)。其中Audio格式一般为AAC,Video则为H.264。那么只要将RTP数据包解析成对应Audio和Vide转载 2022-07-05 22:45:00 · 1687 阅读 · 0 评论 -
Miracast技术详解(二):RTSP协议
在上一篇博客中我们已经通过Wi-Fi P2P建立好了Source和Sink端的TCP连接,在Miracast后续的音视频传输过程中,将采用RTSP协议来对流媒体进行控制。因此接下来的步骤就到了RTSP协商、会话建立及流媒体传输的阶段。首先,什么是RTSP协议呢?实时流协议是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体转载 2022-07-05 21:45:00 · 2233 阅读 · 0 评论 -
Miracast技术详解(一):Wi-Fi Display
Miracast概述Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如手机可透过Miracast将影片或照片直接在电视或其他设备播放而无需任何连接线,也不需透过无线热点(AP,Access Point)。Wi-Fi直连(英语:Wi-Fi Direct),之前曾被称为Wi-Fi点对点(Wi-Fi Peer-to-Peer),是一套无线网络互连协议,让wifi设备可以不转载 2022-06-30 23:45:00 · 4662 阅读 · 4 评论 -
MQTT断开重连
问题最近开发项目需要用到MQTT,开发完成测试的时候发现经常连接断开。由于没有报错信息,在万能的百度搜索看看有没有遇到同样问题的网友,结果发现可能是客户端ID的问题,我每次启动都是一样的客户端ID,之前的客户端ID在MQTT服务器上还保存着没有清理掉,再次启动客户端就连接不上。解决方法使用随机数生存客户端ID,重新启动,问题得到解决,不会一直连接断开。项目运行了几天发现又出现一个新问题,长时间没有操作连接还是会断开,无法发送和接收消息。在网上查阅MQTT相关文章,详细了解MQTT,发现MQTT有个自动重连功转载 2022-06-24 22:15:00 · 4825 阅读 · 1 评论 -
杜比全景音效简介
杜比官网:杜比 - Dolby杜比开发者官网:Developer Tools for Dolby Technology | Dolby Developer待续····原创 2022-06-22 22:30:00 · 304 阅读 · 0 评论 -
AWS Device Shadow使用
AWS Device shadow 是AWS 官方推荐管理控制IOT设备的方式。Device:aws iot device sdk(nodejs)client端:aws sdk(nodejs)关于更多AWS IOT内容可参考:AWS IoT Device Shadow 服务 - AWS IoT Core如需要了解device端 C语言操作影子可参考后续文章:设备的影子是用于存储和检索设备的当前状态信息的 JSON 文档。(存储在AWS IOT cloud内)Device Shadow 服务可以为您连接到转载 2022-06-16 19:30:00 · 1096 阅读 · 0 评论 -
[Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货
建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容。基于Android L版本源码环境进行开发时,根据项目需求,APP层需要操作sys/xxx 或 proc/xxx下面的文件结点,但是会报出以下权限异常,无法直接操作这些结点L edLightFileUtil( 4671): java.io.FileNotFoundException: /sys/class/leds/green/bri转载 2022-06-07 22:45:00 · 1296 阅读 · 1 评论 -
[Android L]SEAndroid增强Androd安全性背景概要及带来的影响
Android对于操作系统安全性方面的增强一直沿用Linux内核所提供的MAC强制访问控制套件SELinux,对权限进行了更为深度的管理,有效地控制着进程对资源的访问。2012年才问世的SE Android将SELinux移植到Android平台上,以降低恶意应用程序攻击带来的损害,提供Android系统的防御能力。 SE Android(Secutity-Enhanced Android)是Android与SE Linux的结合,由美国NSA在2012年推出的Android操作系统的安全强化套件,转载 2022-06-07 20:15:00 · 457 阅读 · 0 评论 -
android 辅助功能(无障碍) AccessibilityService 实战入门详解
本君初入辅助功能也是一头雾水,各种百度结果还是一知半解,得到的大多都是对辅助功能类的翻译,仅仅是理论层面上,到实战上确是千差万别,在此记之。一、原理:大致简述一下,谷歌已经在View、ViewGroup、TextView等控件的文字改变、滑动、UI变化埋下了接口,当这些状态变化时控件会回调系统API,API系统然后对这些对象的数据进行组装,为了数据的安全性,系统会重新创建一些对象(AccessibilityEvent、AccessibilityNodeInfo)来间接保存这些数据,然后通过跨进程将这些数据转载 2022-04-23 15:34:37 · 6468 阅读 · 1 评论 -
使用 AudioTrack 播放音频轨道
01 前言大家好,本文是 iOS/Android 音视频开发专题 的第七篇,该专题中 AVPlayer 项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址。在上篇文章 OpenGL ES 实现播放视频帧 中我们已经知道如何使用 GLSurfaceView 将解码后的视频渲染到屏幕上,但是,我们的播放器还不具备音频播放的功能,在本篇文章中我们将使用 AudioTrack 播放解码后的音频数据(PCM)。本期内容:PCM 介绍 AudioTra转载 2022-02-28 21:45:00 · 826 阅读 · 0 评论 -
Android 耳机插拔流程源码跟踪浅析
Android 开发过程中,使用耳机控制拍照,控制音乐播放,控制打电话等,线控在到蓝牙控制···耳机也在不断升级,耳机拔插的程序这一块也在不断完善。因此,在定制开发过程中,阅读这部分代码流程是必修的功课,至少首先要搞清楚程序走的线路流程。下面结合我在实际工作中遇到的 bug ,需求定制等做一个简单的总结。第一节,插拔耳机时,事件上报抓取事件命令:查看有哪些事件可以getPS C:\Users\xxxx> adb shell getevent -ladd device 1: /转载 2022-02-25 22:45:00 · 1963 阅读 · 1 评论 -
Androird app 引用framwork.jar 使用系统接口
有的时候我们开发app 会用到系统的一些接口,然而这些接口在sdk 里面可能不存在,但是在android 源码中存在,于是我们可以调用android 编译之后的 jar 包,然后再app 中进行调用。1、首先编译 整个 android 源码目录,然后找到 framwork.jar 文件如果编译debug版本:out/target/product/projectXX/system/framewor framework.jar如果是user版本:out/target/common/obj/J原创 2022-02-25 20:00:00 · 514 阅读 · 1 评论 -
HAL 层简介
简介:HAL层又称硬件抽象层,HAL层在Android体系中有着深远的意义,因为Android究竟是完全开源还是完全不开源的秘密就在这一层·Google将硬件厂商的驱动程序放在这一层,正是因为这一层的代码没有开源,所以Android被Linux家族删除.本章将详细介绍HAL层的基本知识,为本书后面的驱动开发和移植打下坚实的基础1、认识 HAL 层HAL层(硬件抽象层)是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬.原创 2022-01-26 21:30:00 · 21215 阅读 · 1 评论