自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android多媒体——解码器数据处理(十六)

从上层来看,MediaCodec 就是一个黑盒,只需要是如何驱动它的,而不需要关心它内部是如何实现解码的,对于这个黑盒,它有一个 input port,一个 output port,buffer 是如何运转就会非常重要,所以在这里关注的就是 NuPlayerDecoder 和 MediaCodec 的交互关系。

2025-05-15 10:23:11 439

原创 Android多媒体——媒体解码器初始化(十五)

通过上一篇文章我们了解了媒体解码器的创建过程,并且可以看到,在媒体解码器创建成功后,分别调用了 configure()、setCallback() 和 start() 函数来对解码器进行配置、回调和启动。这里我们就来详细看一下这几个过程。

2025-05-15 10:22:57 564

原创 Android多媒体——媒体解码流程分析(十四)

NuPlayer 的解码模块相对比较简单,统一使用了一个基类 NuPlayerDecoderBase 管理,该类中包含了一个 MediaCodec 的对象,实际解码工作全靠 MediaCodec。

2025-05-14 09:19:39 935

原创 Android多媒体——媒体start流程分析(十三)

当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。

2025-05-14 09:19:15 669

原创 Android多媒体——媒体文件合成与解析(十二)

MediaMuxer 和 MediaExtractor 是 Android 多媒体框架中的两个重要类,MediaMuxer 类主要用于将音频和视频数据进行混合生成多媒体文件(如:mp4 文件),而 MediaExtractor 则刚好相反,主要用于多媒体文件的音视频数据的分离解析,即解封装。

2025-05-13 09:34:15 872

原创 Android多媒体——播放准备完成(十一)

在前面的文章多媒体播放准备阶段回调函数 onPrepareAsync() 执行完数据初始化(即调用 initFromDataSource 函数)后,紧接着通过调用 finishPrepareAsync() 接口结束数据的准备工作。

2025-05-13 09:34:03 420

原创 Android多媒体——提取器初始化流程(十)

在 Android 的多媒体处理流程中,提取器(MediaExtractor 或其底层实现)扮演着至关重要的角色,它负责从媒体文件或流中解析出音频、视频轨道以及元数据信息。作用:提取器用于读取媒体文件的内容,并将其分离成不同的轨道(如音频轨道、视频轨道等),以便进一步解码和播放。接口:通常通过 MediaExtractor 类对外提供服务,但在内部可能使用了不同的具体实现(例如 NuMediaExtractor)来支持不同格式的媒体文件。功能解析媒体文件头,获取媒体格式信息。

2025-05-12 09:19:22 561

原创 Android多媒体——播放准备阶段分析(九)

MediaPlayer 播放视频时,先通过 setDataSource() 接口设置视频源,然后再开始播放。而对于 NuPlayer 来说,拿到数据只是第一步,后续需要经过解复用,解码,渲染和音视频同步等一系列复杂的过程,最终完成视频的播放。

2025-05-12 09:19:04 568

原创 Android多媒体——NuPlayer消息处理(八)

NuPlayer 基于 Stagefright 的基础类构建,使用了Android native 层的 ALooper-AHandler-AMessage 机制来异步处理消息。在这个机制中所有的处理都是异步的,将变量封装到一个消息 AMessage 结构体中,然后放到队列中去,后台专门有一个线程会从这个队列中取出消息然后执行,执行函数就是 onMessageReceived,在 NuPlayer 中就是使用了该消息机制。:消息载体,用于构造消息,通过 post 方法投递出去给 ALooper;

2025-05-09 09:19:39 596

原创 Android多媒体——NuPlayer播放器(七)

NuPlayer‌ 是 Android 平台上的一个媒体播放器框架,主要用于处理音视频数据的解码、渲染和控制。NuPlayer 的设计旨在提供高效、灵活的媒体播放解决方案,支持多种媒体格式和编码方式。

2025-05-09 09:19:25 606

原创 Android多媒体——播放器数据源设置(六)

前面的几篇文章大都是以数据源设置方法为例进行分析的,更是在一文最终调用到 MediaPlayerService 中 Client 对应的 setDataSource() 函数,在这里确定了播放器类型,创建了对应的播放器,并最终将数据源设置到新建的播放器中,我们继续分析对播放器的相关设置进行详细分析。

2025-05-08 09:11:19 796

原创 Android多媒体——MediaPlayer中Binder通信(五)

上一篇文章通过 setDataSource() 函数的调用流程分析了 MediaPlayer 中的 C/S 架构,这里我们继续来分析 MediaPlayer 中的 Binder 通信机制。

2025-05-08 09:10:40 577

原创 Android多媒体——MediaPlayer的C/S架构(四)

在 Android 中大量使用到了 C/S 架构来实现应用层和底层服务交互,而 Binder 机制无处不在。同样 MediaPlayer 也使用了这种机制,MediaPlayer 在运行的时候,同样可以分为 Client/Server 两个部分,他们分别在不同的进程中行,不同进程间的通信使用 Binder 机制,我们这里就以 setDataSource() 为例进行分析。

2025-05-07 09:17:14 697

原创 Android多媒体——MediaPlayer创建流程(三)

Android 平台通过其内置的 MediaPlayer 类为开发者提供了强大的多媒体处理能力,使得集成音频和视频播放变得简单直接。这里我们就来看一下 MediaPlayer 的创建流程。

2025-05-07 09:16:54 924

原创 Android多媒体——MediaServer启动流程(二)

Android 中的多媒体服务的覆盖范围很广,主要包括为 App 提供音视频格式解析、播放显示功能、编解码、音频混音、相机拍摄和录制等。在 Android 7.0 以前,整体的多媒体服务均由单一的进程 MediaServer 提供,该进程包含众多的权限(相机访问权限、音频访问权限、视频驱动程序访问权限、文件访问权限、网络访问权限等)。在 Android 7.0 之后,MediaServer 被拆分成多个进程,所需要的权限也因此被划分到各个进程。

2025-05-06 09:22:34 945

原创 Android多媒体——基础框架介绍(一)

Android 多媒体框架为开发者提供了一系列强大的工具和 API,用于处理音频、视频以及图像等多种媒体类型。这个框架允许应用程序轻松地播放、录制和操作媒体内容,并支持多种格式和编码解码器(codec)。

2025-05-06 09:21:14 749

原创 Android Input——输入事件ANR执行(十六)

上一篇文章我们介绍了输入事件 ANR 的触发流程,这里我们再来看一下输入事件 ANR的执行流程。

2025-04-17 09:19:08 587

原创 Android Input——输入事件ANR分析(十五)

在 Android 系统中,ANR(Application Not Responding)是一种常见的性能问题,通常发生在应用未能及时响应用户输入或其他系统事件时。输入事件的 ANR 是其中一种典型场景,主要与 InputDispatcher 和客户端(应用层)之间的交互有关。

2025-04-17 09:18:46 576

原创 Android Input——输入事件回调完成(十四)

前面几篇文章介绍了事件回调的相关流程,以及回调事件处理函数的相关内容,最后我们再来看一下事件处理完后,如何通知 InputDispatcher 去回调 Callback。

2025-04-16 09:10:16 690

原创 Android Input——事件处理函数介绍(十三)

在 Android 的事件分发机制中,dispatchTouchEvent、onInterceptTouchEvent 和 onTouchEvent 是三个非常重要的方法,它们分别负责事件的分发、拦截和处理。下面我们就对这些事件处理函数进行详细介绍。

2025-04-16 09:10:00 1065

原创 Android Input——ViewRootImpl处理事件(十二)

前面的文章介绍到 ViewRootImpl 接收了输入事件,以及 InputStage 链式结构处理输入事件的基本流程,这里我们就继续深入分析一下 ViewRootImpl 对输入事件的处理流程。

2025-04-15 09:11:41 890

原创 Android Input——InputStage链式结构(十一)

上一篇文章介绍到 ViewRootImpl 接收了输入事件后,交给 InputStage 进行处理,下一步就是 ViewRootImpl 对输入事件的处理,但是在介绍 ViewRootImpl 对输入事件的处理之前,我们先来了解一下 InputStage 链式结构的实现流程。

2025-04-15 09:11:20 681

原创 Android Input——ViewRootImpl接收事件(十)

上一篇介绍了 InputChannel 的通信流程,我们知道在 Android 输入事件处理机制中,客户端(应用程序)与服务端(InputDispatcher 在 system_server 中)之间的通信确实通过 Unix 域套接字(socket pair)实现。这里我们再来看一下 ViewRootImpl 接收输入事件的流程。

2025-04-14 09:07:48 567

原创 Android Input——InputChannel通信(九)

前面的文章我们介绍了 InputDispatcher 通过 publishKeyEvent 把 input 事件发送给客户端,而 InputDispatcher 是属于 system_server 进程,而客户端属于应用进程,两种通信属于跨进程通信,那么我们就来看一下 system_server 与应用建立通信的过程。

2025-04-14 09:07:10 668

原创 Android Input——分发流程回调(八)

前面两篇文章介绍了 InputDispatcher 在 Android 输入系统中的事件分发流程,这里我们继续看来看一下分发完成后的回调流程。

2025-04-10 09:10:09 431

原创 Android Input——查找并添加目标窗口(七)

在 Android 输入系统中,InputDispatcher 的核心职责之一是将输入事件正确地传递到目标窗口。上一篇文章我们介绍到 InputDispatcher 事件分发调用到 findFocusedWindowTargetsLocked() 函数查找焦点窗口,并将焦点窗口添加到目标窗口,这里我们继续往下看。

2025-04-10 09:09:52 741

原创 Android Input——InputDispatcher分发事件(六)

在上一篇中,我们详细探讨了 InputReader 如何从底层硬件获取输入事件,并通过解析和处理将这些事件传递给 InputDispatcher,最终放入 InputDispatcher 的 mInboundQueue 中并唤醒 InputDispatcher。本篇我们将深入分析 InputDispatcher 的事件分发过程,了解它是如何高效地将这些事件分发到正确的应用程序或窗口进行处理的。

2025-04-09 08:54:23 1128

原创 Android Input——InputReader传递事件(五)

在上一篇中,我们详细探讨了 InputReader 如何获取和处理来自各种输入设备的原始事件。现在我们将继续深入了解 InputReader 的事件传递流程。

2025-04-09 08:53:20 665

原创 Android Input——InputReader获取事件(四)

在上一篇中,我们简单介绍了 Android 输入子系统以及 EventHub 如何监听和管理来自各种输入设备的事件。本篇我们将深入探讨 InputReader 组件,了解它如何从 EventHub 获取原始输入事件,并将这些事件解析为更高层次的输入事件(如按键、触摸等),以便 Android 系统进一步处理。

2025-04-08 09:07:45 549

原创 Android Input——输入子系统(三)

Android 设备可以同时连接多个输入设备,如触摸屏、键盘、鼠标等。每当用户在任何一个设备上产生输入操作时,都会触发一个中断。这些中断经过 Linux 内核的中断处理机制以及相应的设备驱动程序转换为事件(Event),并最终传递给用户空间的应用程序进行处理。同时,每个输入设备都有其特定的驱动程序,数据接口也各不相同。要在单个线程(例如 InputReader Thread)中捕获所有用户的输入,Linux 内核的输入子系统发挥了关键作用。

2025-04-08 09:07:20 940

原创 Android Input——IMS启动流程(二)

InputManagerService(IMS)作为 Android 系统中的一个关键服务,在系统的启动过程中由 SystemServer 进程启动。SystemServer 负责启动和管理系统中几乎所有的核心服务,包括AM、PMS、WMS 和 IMS 等。

2025-04-07 11:10:07 753

原创 Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

2025-04-07 11:09:47 912

原创 Android实战——修改系统默认输入法

对于 Android 设备开发来说,内置输入法的安装及默认输入法的设置是一个很常见的功能,下面我们就来看一下系统输入法的相关配置流程。

2025-03-05 10:21:43 1065

原创 从记录到分享:我的创作之旅

而我也从职场小白成长为领域精英,并且在 2024 年,我获得了 CSDN 移动开发领域新星创作者和博客专家的头衔,并且还参与了 CSDN 博客之星的评选,最终获得了 88 名的成绩。更重要的是,我重新找到了一份自己理想的工作,这份工作不仅满足了我的职业发展需求,也提供了更多的机会去探索前沿技术。尤其是在AI爆发的时代背景下,我们的见识和积累可以更好地帮助我们解决遇到的各种问题,也为我的职业生涯开辟了新的方向。在有限的精力下,我尝试找到创作与工作学习之间的平衡点,确保每一方面都能得到应有的重视。

2025-03-05 10:09:38 440

原创 Android Audio其他——数字音频接口(附)

数字音频接口 DAI,即 Digital Audio Interfaces,顾名思义,DAI 表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI 在音频电路设计中得到越来越广泛的应用。

2025-02-24 11:37:06 758 2

原创 Android Audio实战——音频相关基础概念(附)

Android Audio 开发其实就是媒体源数字化的过程,通过将声波波形信号通过 ADC 转换成计算机支持的二进制的过程叫做音频采样 (Audio Sampling)。采样 (Sampling) 的核心是把连续的模拟信号转换成离散的数字信号。

2025-02-24 11:36:40 896 1

原创 Android多语言开发自动化生成工具

在做 Android 开发的过程中,经常会遇到多语言开发的场景,尤其在车载项目中,多语言开发更为常见。对应多语言开发,通常都是在中文版本的基础上开发其他国家语言,这里我们会拿到中-外语言对照表,这里的工作难度其实并不高,但是工作量却是非常的大,而且都是复制/粘贴的无聊操作,如何能快速的完成这种简单重复的操作呢?这里我们就来简单实现一下。

2025-01-23 08:55:13 1727 1

原创 Android SystemUI——最近任务列表启动(十八)

前面分析了初始化涉及到的关键类,系统启动后会启动 SystemUI 进程,然后进行一系列初始化,接下来看一下进入 Recents 的流程。我们主要分析最近任务应用列表的启动与显示。

2025-01-23 08:54:07 1136 1

原创 Android SystemUI——最近任务应用列表(十七)

对于最近任务应用列表来说,在 Android 原生 SystemUI 中是一个单独的组件。但对于 Android 源码的 CarSystemUI 最近任务应用列表组件有是一个移除的组件(代码参考确实,在某些版本的 Android 源码中,特别是针对 CarSystemUI(车载系统的用户界面),最近任务应用列表组件可能被移除或者其功能被限制。这种改动通常是为了优化用户体验或遵守特定的安全法规和设计指南。

2025-01-22 08:42:17 1153 1

原创 Android SystemUI——通知栏构建流程(十六)

如果说 StatusBar 是代码最多最重要的一个,那 Notification 是使用最多,最广泛的一个。对于通知栏的构建与前面快捷设置面板相似,都是在状态栏(StatusBar)中完成的,这里我们就看看一下通知栏的相关内容。

2025-01-22 08:42:04 625 1

断点续传下载

主要实现文件下载的暂停和继续下载功能。 用到的知识点: 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

页面跳转与数据回传

页面跳转与数据回传,跳转方法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

jdk-24-windows-x64-bin

Java Jdk

2025-05-23

MemoryAnalyzer-1.16.1

.hprof 文件解析工具

2025-05-23

Systrace抓取工具

适用实用高版本Android Studio无法找到Systrace工具。

2025-05-21

python-2.7.13版本

python-2.7.13版本

2025-05-21

Android多语言strings.xml生成工具

在做 Android 开发的过程中,经常会遇到多语言开发的场景,尤其在车载项目中,多语言开发更为常见。对应多语言开发,通常都是在中文版本的基础上开发其他国家语言,这里我们会拿到中-外语言对照表,该工具就是可以将这里的 xls 文件生成 AndroidStudio 中直接使用的 strings.xml 工具。 参考文章:https://xiaoxu.blog.csdn.net/article/details/145152764

2025-04-09

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

空空如也

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

TA关注的人

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