自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(420)
  • 资源 (35)
  • 收藏
  • 关注

原创 Android 车联网——汽车系统介绍(附2)

汽车系统指的是由多个模块或组件组成的系统,如发动机系统、制动系统、空调系统等,这些系统通常由多个 ECU 协同工作来完成特定的任务。

2024-09-13 09:17:35 628

原创 Android 车联网——汽车模块介绍(附1)

汽车模块指的是车辆中独立的电子控制单元(ECUs),如发动机控制单元(ECU)、车身控制模块(BCM)等,它们负责特定的功能或系统。

2024-09-13 09:17:05 622

原创 Android 车联网——CarProperty使用实例(二十三)

在熟悉了 Car 下的相关 Manager 和 Service 后,这里我们通过需求来实现 CarProperty 的使用实例。

2024-09-12 08:55:58 623

原创 Android Radio2.0——有效电台扫描(八)

上一篇文章在我们拿到了电台动态列表,接下来我们继续按照最初的思路执行 scan() 进行电台搜索操作。1)通过 getDynamicProgramList() 方法获取动态列表。2)按照动态列表的内容,循环调用 scan() 方法执行向上调台,直到列表中的内容搜索完成。3)根据 RadioManager.ProgramInfo.getSignalStrength() 判断信号质量,生成一个有效电台列表。4)回调监听扫描状态及有效电台列表的变化。

2024-09-12 08:55:39 764

原创 Android Radio2.0——动态列表回调(七)

上一篇文章我们主要介绍了电台动态列表的获取流程,这里我们主要处理对应的回调流程以及扫描流程。1)通过 getDynamicProgramList() 方法获取动态列表。2)按照动态列表的内容,循环调用 scan() 方法执行向上调台,直到列表中的内容搜索完成。3)根据 RadioManager.ProgramInfo.getSignalStrength() 判断信号质量,生成一个有效电台列表。4)回调监听扫描状态及有效电台列表的变化。

2024-09-11 09:10:18 953

原创 Android Radio2.0——电台动态列表(六)

通过前面的文章分析,这个动态列表我认为就是生产厂商配置的一个该区域所有电台的列表,我们调台的过程就是一个个的查看对应列表中的电台频率是否可以正常播放。

2024-09-11 09:09:59 438

原创 Android Radio2.0——广播中的PI码(五)

在 Android Radio 中,PI 码(Program Identifier)是 RDS 系统的一部分,用于标识广播电台。PI 码是 RDS 数据流中的一个重要组成部分,它帮助接收设备识别正在接收的广播电台,并且可以用于实现各种高级功能。

2024-09-10 17:23:53 408

原创 Android Radio2.0——公告监听设置(四)

上一篇文章我们介绍了广播公告的注册及监听设置,这里我们来看一下广播公告添加监听的调用流程。

2024-09-10 17:23:25 538

原创 Android Radio2.0——公告注册及监听(三)

定义:交通公告是指在广播中插入的特别信息,通常是关于交通状况的重要通知,比如交通事故、道路封闭、交通拥堵等。目的:目的是让驾驶者及时了解道路上的情况,以便调整行驶路线,避免拥堵或事故区域。触发机制:交通公告可以通过手动触发(例如,广播员决定播放一条交通信息),也可以通过自动化系统触发(例如,交通监控系统检测到事故后自动发送信息)。技术实现:在RDS广播中,TA标志用来标记包含交通信息的广播。当接收设备设置了接收TA信息时,会优先播放这些信息,即使打断了当前正在播放的节目。

2024-09-05 09:03:52 519

原创 Android Radio2.0——交通公告状态设置(二)

定义:交通公告是指在广播中插入的特别信息,通常是关于交通状况的重要通知,比如交通事故、道路封闭、交通拥堵等。目的:目的是让驾驶者及时了解道路上的情况,以便调整行驶路线,避免拥堵或事故区域。触发机制:交通公告可以通过手动触发(例如,广播员决定播放一条交通信息),也可以通过自动化系统触发(例如,交通监控系统检测到事故后自动发送信息)。技术实现:在RDS广播中,TA标志用来标记包含交通信息的广播。当接收设备设置了接收TA信息时,会优先播放这些信息,即使打断了当前正在播放的节目。

2024-09-05 09:03:32 873

原创 Android Radio2.0——设置广播配置标志(一)

在 Android Radio 中,RDS (Radio Data System) 是一种在调频(FM)广播信号中嵌入数字信息的技术,它可以携带额外的数据信息,如电台名称、节目信息等。

2024-09-04 08:56:43 653

原创 Android Audio分区——设置关联用户(六)

在音频分区的相关 API 接口中有一个比较重要的功能,就是设置关联用户。在介绍设置关联用户之前我们先来看两个比较重要的概念,设备亲和性和音频混合策略。

2024-09-04 08:56:03 348

原创 Android Audio分区——API接口详解(五)

上一篇文章介绍了音频分区的相关 API 接口,这里我们来看一下 CarAudioManager 中对应接口的实现。通过前面的文章我们知道,对应 CarAudioManager 中接口的实现都是在 CarAudioService 完成的。

2024-09-03 09:01:52 385

原创 Android Audio分区——音频分区相关API(四)

上一篇文章我们介绍了车载多区音频的相关基础内容以及相关配置文件,这里我们看进一步看一下音频分区的相关代码,想要快速了解音频分区相关功能,首先从其相关接口开始。

2024-09-03 09:00:13 522

原创 Android Audio分区——音频分区加载流程(三)

上一篇文章介绍了车载多区音频基础,并且知道每个音频区都在 car_audio_configuration.xml 文件中进行配置的,这里我们就来看一下音频分区的解析过程。

2024-09-02 09:02:22 884

原创 Android Audio分区——音频分区管理(二)

对于前面介绍的关联用户的相关功能,其实就是相当于 Audio 模块的多用户开发,这里我们再来看一下音频分区的管理工作。

2024-09-02 09:01:45 354

原创 Android Audio分区——车载多区音频基础(一)

汽车音频服务使用 Core Audio 动态音频政策来为车载使用场景提供协助。为每位乘客单独播放音频(称为多区音频),其中每个音频区允许并发播放声音。动态音频区配置。乘客主区音频投放。乘客的音频镜。在每个用例中,车载音频服务都使用动态音频政策自动将音频路由到指定的输出设备。

2024-08-29 09:21:09 618

原创 Android Audio实战——自适应音量值适配(三)

上一篇文章《音频配置资源定制》介绍了通过车型 Code 的不同,加载不通的 Audio 配置文件,而在《自适应音量值修改》又使用了 overlay 的方式定制不同车型的自适应音量。那么问题来了,通过修改车辆的配置字无法修改 overlay 中的资源,因为 overlay 依赖编译的时候 lunch 项目实现的,所以在实现自适应音量的时候也需要通过车辆的配置自适应不同的音量值。 参考前面两篇文章,首先定义一个车型与配置字的映射关系。文件位置:/device/xxx/audio/sa8155_xx

2024-08-29 09:19:50 516

原创 Android Audio基础——音频模式设置(十九)

​在《音频属性设是置》中介绍使用 setParameters 设置音频属性时,就是以设置音频模式及为例进行讲解的,其实在 AudioManager 中同样存在一个接口用来设置音频模式的,这里我们就来看一下。

2024-08-28 22:02:18 1008

原创 Android Audio音量——硬按键调节音量(七)

前面的文章已经介绍了音量调整及静音设置的相关调用,这里我们来梳理一下通过硬按键来调节音量及静音的相关调用流程。

2024-08-28 22:01:40 665

原创 Android Radio实战——收藏/有效电台保存(二十二)

前面的文章介绍了 Radio 相关操作,但是对于 RadioManager 并没有提供电台收藏和有效电台列表的相关保存/获取功能,所以这里我们可以使用本地数据库来完善对应功能。

2024-08-27 09:13:48 551

原创 Android Radio实战——有效电台列表(十六)

对于有效电台列表对应的其实就是前面文章中的自动搜索功能,由于系统并未提供自动搜索功能,所以这里的有效电台列表其实也是一个自定义的功能。

2024-08-27 09:09:39 499

原创 Android SurfaceFlinger——共享内存读写流程(五十五)

通过上一篇文章的介绍,我们知道了应用进程与 SurfaceFlinger 进程之间的跨进程通信最终选择匿名共享内存的方式实现。并了解了共享内存基本使用方法,这里我们继续了解一下共享内存的粗写操作。

2024-08-26 09:40:04 413

原创 Android SurfaceFlinger——SF跨进程通信(五十四)

在 Android 系统中,由于每个应用程序默认运行在自己的进程中,为了实现不同应用或同一应用的不同组件之间的交互,就需要跨进程通信(IPC)。而 Socket 通信、Binder 通信和共享内存都是实现进程间通信(IPC)的方式,但它们各有特点和适用场景。

2024-08-26 09:39:41 347

原创 Android SurfaceFlinger——Vsync监听逻辑(五十三)

上一篇文章我们介绍了 SurfaceFlinger 发送 Vsync 信号的流程以及信号的相关处理,这里我们来看一下 Vsync 信号的监听回调逻辑。

2024-08-08 08:58:04 692

原创 Android SurfaceFlinger——Vsync信号发送(五十二)

通过上一篇文章我们创建了一个 EventThread 线程,并且它持有了 SurfaceFlinger 中 resyncWithRateLimit() 方法的指针。这里我们主要来看一下 EventThread 对信号的处理。

2024-08-08 08:57:43 1043

原创 Android SurfaceFlinger——信号同步原理(五十一)

垂直同步(Vertical Synchronization,简称 VSync)是一种用于同步视频信号和显示设备刷新率的技术,以确保视频帧的显示与屏幕的刷新周期相匹配。VSync 对于防止屏幕撕裂(tearing)、保证图像的连贯性和减少输入延迟非常重要。

2024-08-07 09:13:19 524

原创 Android SurfaceFlinger——Fence流转状态(五十)

fence 本质上对应上内核中一个文件描述符 sync_file,sync_file 中有一个核心的 fence 结构体,用于预计释放的时间点。所有的 fence 都是以 sync_timeline 为基准进行递增的。sync_timeline 作为内核记录已经渲染屏幕多少个时间点,每一次通过 hwc_set 都会递增一个时间点,并且会尝试的唤醒关联在 sync_timeline 中 active_list 中 sync_pt 的 fence 的阻塞。

2024-08-07 09:13:03 546

原创 Android SurfaceFlinger——同步围栏Fence(四十九)

在 Android 的 SurfaceFlinger 组件中,围栏(Fence)是一种用于同步不同系统组件间操作完成的机制。围栏的概念来源于硬件图形加速器(如 GPU)和其他系统服务(如 SurfaceFlinger)之间的同步需求。在图形渲染和显示的过程中,多个组件可能会并发地访问共享资源(如缓冲区),为了确保数据的一致性和操作的正确顺序,就需要一种机制来协调这些操作,这就是围栏的作用。

2024-08-06 09:17:21 629

原创 Android SurfaceFlinger——渲染完成帧显示(四十八)

帧渲染完成后下一步就是将帧缓冲区(framebuffer)的内容发送到显示设备进行显示,也是 SurfaceFlinger 处理渲染合成的最后一步。1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异步方式)8.准备帧数据以进行显示(同步方式)9.处理显示输出设备的可选重绘闪烁10.结束帧11.将渲染完成的帧缓冲发布到显示设备12.进行渲染缓存设置。

2024-08-06 09:16:54 678

原创 Android SurfaceFlinger——渲染结束帧(四十七)

介绍完屏幕重绘闪烁问题处理后,下面就到了整个图像合成的第 10 步,结束帧渲染操作,这里我们就继续分析该流程。1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异步方式)8.准备帧数据以进行显示(同步方式)9.处理显示输出设备的可选重绘闪烁10.结束帧11.将渲染完成的帧缓冲发布到显示设备12.进行渲染缓存设置。

2024-08-05 09:57:27 495

原创 Android SurfaceFlinger——重绘闪烁处理(四十六)

直接重绘到屏幕:在某些情况下,应用程序直接在屏幕缓冲区上进行绘制,当绘制完成时,新内容立即显示出来,如果绘制速度不够快,用户可能会看到屏幕内容的瞬间变化。双缓冲机制不完善:双缓冲是一种常用的技术,用于减少重绘闪屏。在这种机制下,应用在一个独立的后台缓冲区进行绘制,绘制完成后,后台缓冲区的内容被交换到前台显示。但如果双缓冲的实现不完全,例如在缓冲区交换时出现延迟,或者在绘制过程中部分区域未能正确遮挡,仍然可能导致闪屏。

2024-08-05 09:57:03 528

原创 Android SurfaceFlinger——帧数据准备完成(四十五)

上一节我们介绍了准数据准备过程中选择合成策略的同步和异步操作,在选择合成策略完成后还会调用以下两个函数:applyCompositionStrategy:应用合成策略。finishPrepareFrame:完成帧的准备过程。

2024-08-01 08:53:48 451

原创 Android SurfaceFlinger——准备帧数据(四十四)

通过前面的文章我们介绍了 SurfaceFlinger 图层合成的整体流程,并且上一篇已经介绍了帧渲染流程的第一步,这里我们继续介绍帧渲染的准备工作——准备帧数据。1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异步方式)8.准备帧数据以进行显示(同步方式)9.处理显示输出设备的可选重绘闪烁10.结束帧11.将渲染完成的帧缓冲发布到显示设备12.进行渲染缓存设置。

2024-08-01 08:53:31 1063

原创 Android SurfaceFlinger——渲染开始帧(四十三)

开始帧通过前面的文章我们介绍了 SurfaceFlinger 图层合成的整体流程,已经对应步骤的前五步,这里我们开始介绍帧渲染流程的第一步——开始帧。1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异步方式)8.准备帧数据以进行显示(同步方式)9.处理显示输出设备的可选重绘闪烁10.结束帧11.将渲染完成的帧缓冲发布到显示设备12.进行渲染缓存设置。

2024-07-31 08:51:28 946

原创 Android SurfaceFlinger——合成预测与状态写入(四十二)

计划合成预测前一篇文章我们介绍了 SurfaceFlinger 图层合成的整体流程,并对前两个流程更新色彩配置和更新合成状态进行了介绍,这里我们接着解析下面的流程。1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异步方式)8.准备帧数据以进行显示(同步方式)9.处理显示输出设备的可选重绘闪烁10.结束帧11.将渲染完成的帧缓冲发布到显示设备12.进行渲染缓存设置。

2024-07-31 08:50:40 418

原创 Android SurfaceFlinger——SF图层合成(四十一)

上一节我们简单介绍了 SurfaceFlinger 中的图层预的流程,这里我们继续往下看,SurfaceFlinger 的真正核心——图层合成。output->present:进行 Layer 合成。

2024-07-30 09:07:45 652

原创 Android SurfaceFlinger——SF图层预合成(四十)

为了便于理解,我们假设有一个简单的场景,其中包含一个图层 L,该图层可能有透明、不透明、阴影以及被其他图层覆盖的部分。下面将逐步介绍这些区域是如何计算的。

2024-07-30 09:07:25 563

原创 Android SurfaceFlinger——SF图层合成准备(三十九)

SurfaceFlinger 是 Android 系统中负责窗口管理和图像合成的核心组件,它主要负责将多个应用程序的界面(称为图层或表面)合并成一个单一的图像,然后将这个图像输出到显示设备上。

2024-07-29 09:35:32 714

原创 Android SurfaceFlinger——缓冲区的消费流程(三十八)

前面介绍了 SurfaceFlinger 对提交帧的处理以及缓冲区的锁定等流程,这里我们看一下 SurfaceFlinger 对缓冲区的消费流程。

2024-07-29 09:35:08 297

页面跳转与数据回传

页面跳转与数据回传,跳转方法startActivityForResult的使用与返回数据的处理。

2015-02-16

Android控件的简单使用

Android控件简单使用,AoutCompleTextView、MultiAoutCompleTextView、ToggleButton、CheckBox、RadioGroup等控件

2015-02-16

通知Notification

这是一个Android中通知的简单使用源码,基本满足大多是用户的使用需求,其中的注释特别详细,适合初学者学习使用。

2015-01-28

布局优化Demo

布局界面中include、merge、ViewStub的使用实例。

2015-01-27

ScorollView简单使用

主要ScorollView简单使用方法,包括滑动监听、滑动加载、位置跳转等功能。适合初学者研究使用,注释非常详细。

2015-01-23

ViewFlipper简单使用

ViewFlipper实现图片轮播和图片滑动切换,原理和思路比较清晰,滑动切换效果不是很好,需要修改动画效果文件。

2015-01-21

ViewPager简单使用

主要介绍ViewPager的简单使用和三种Adapter的区别,适合初学者学习使用。

2015-01-21

Fragment使用

主要介绍Fragment的使用,包括动态加载、静态加载、生命周期、数据传递等,代码里注释比较详细,但代码中的结构和命名比较混乱,最好结合下面的问章看。http://blog.csdn.net/c19344881x/article/details/42876041

2015-01-20

进度条简单使用和自定义

进度条简单使用和自定义进度条显示风格,代码比较简单,注释详细,适合初学者。

2015-01-16

下拉列表使用

下拉列表的简单实用Demo,代码简单注释详细,适合初学者学习使用。

2015-01-16

日期时间选择

日期时间选择控件的使用,包括嵌入Activity中和弹出式两种情况,适合初学者,代码注释比较详细。

2015-01-16

广播使用Demo

主要包括三种类型的广播的简单实用及对比。

2015-01-14

ContentProvider测试Demo

ContentProvider的测试Demo,只有下载并运行http://download.csdn.net/detail/c19344881x/8360531下的应用才会看到效果。单独下载没有用处。

2015-01-14

ContentProvider使用

使用ContentProvider,实现应用程序的数据共享。

2015-01-14

添加查询联系人信息

实现手机联系人的添加和查询功能,没有积分的可以去http://blog.csdn.net/c19344881x/article/details/42679795,

2015-01-14

本地文件读写

主要实现本地文件的创建以及读写操作。没有积分的可以搜索《Android开发存储方式详解之本地文件读写实例》查看源码。

2015-01-13

自定义导航栏

代码中有详细的注释,功能比较简单,主要是学习使用,有积分的可以下载支持一下,如果实在没有积分可以查找我的《Android 自定义控件详解》这篇文章学习。

2015-01-09

WebView JS方法调用

在WebView页面上的按钮点击事件响应本地类中的方法。

2015-01-07

WebView文件下载

用于实现WebView页面中的文件下载功能。

2015-01-06

phonegap-2.9.1.zip

PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.

2014-11-24

HCI Log分析工具-CPAS-11

HCI Log分析工具-CPAS-11,使用参考:https://xiaoxu.blog.csdn.net/article/details/129261272

2024-04-17

Android Audio相关流程时序图

Android 11 Audio相关流程时序图,需要使用EA画图工具打开。包含Audio中音量获取/设置、焦点申请/放弃、属性设置等相关流程,从APP层到Hal层。 详细讲解相关文章参考:https://blog.csdn.net/c19344881x/category_12324194.html

2023-11-30

Android Radio相关流程时序图

Android 9.0 Radio相关流程时序图,需要使用EA画图工具打开。包含Radio暂停、播放、切换电台、获取电台信息、切换FM/AM、调频/调辐、搜索、取消搜索等相关流程,从APP层到Hal层。同时还包含类图等其他软件图。 详细讲解相关文章参考:https://blog.csdn.net/c19344881x/category_12312897.html

2023-09-01

Android 蓝牙开发相关知识总结

Android 蓝牙开发相关知识总结

2023-03-07

SurfaceFlinger学习笔记总结

SurfaceFlinger学习笔记总结

2023-03-07

MinGw 安装包,版本0.6.2

MinGw 安装包,版本0.6.2

2023-03-07

根据.h文件在自己的so库中调用三方so库

根据.h文件在自己的so库中调用三方so库

2023-01-06

Android Studio生成自己的so库

Android Studio生成自己的so库

2023-01-06

本地实现U盘扫描SDK部分代码

本地实现U盘扫描功能SDK,无法直接运行,需要自己编译成SDK在调用。 参考:https://blog.csdn.net/c19344881x/article/details/126161462

2022-10-28

开发调试所使用的各种格式音视频

视频格式:ts 264 avi wmv mkv mov rm 3gp flv gif mpg rmvb swf vob webm asf dat f4v h264_mp4 h265_mp4 音频格式:aac ac3 aiff amr au m4a mka mp2 ogg ra wav wma mp3

2022-07-20

jai-imageio和swingx.jar.zip

【图形处理相关的jar包】jai-imageio-1.1.jar和swingx-1.6.1.jar下载

2021-12-16

Android端Socket实现聊天功能

Android端Socket实现聊天功能,能够发送文字、图片、商品等信息,实现了消息本地存储。讲解:https://mp.csdn.net/mp_blog/creation/editor/120673184

2021-10-11

SocketDemo.zip

Android Socket通信简单实现源码下载:https://blog.csdn.net/c19344881x/article/details/120455491

2021-09-24

竖直滚动TextView

很简单的文本信息竖直滚动展示效果,没有积分的可以搜索“Android TextView竖直滚动文字广告效果”的博客。

2016-01-18

滚动选择控件

自定义日期滚动选择控件,代码使用方便,而且可以通过修改自定义Dialog中代码控制日期可选范围和添加时间选择功能等。

2015-08-25

断点续传下载

主要实现文件下载的暂停和继续下载功能。 用到的知识点: 1、Service的使用以及Service与Activity之间的数据交互; 2、SQLite数据库的简单使用; 3、文件下载与存储; 4、广播的简单使用。

2015-05-19

AsyncTask异步加载使用

AsyncTask异步加载使用Demo,详解可以参考《Android中AsyncTask的使用详解》,代码中的注释也比较详细,初学者可以参考。

2015-05-15

Android仿百度贴吧看帖滑动返回效果

实现百度贴吧看帖时的滑动返回效果和AutoCompleteTextView的使用。

2015-04-14

手势识别实现

文件中包含两种实现手势识别功能的工程,一种是使用GestureDetector实现手势识别,另一种是使用GestureOverlayView实现手势识别。

2015-02-26

Service使用

实现Service的启动、停止、绑定、解绑与Service中方法的调用。

2015-02-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除