自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 AudioRecord

AudioRecord是Android平台上的一个类,用于实时录制音频数据。它提供了一种方便的方式来捕获和处理音频流。以下是关于AudioRecord的一些介绍:音频源:Record可以从多种音频源中录制音频数据例如麦克风、电话线路、语音识别等。音频格式:可以选择不同的音频格式来录制音频数据,如PCM(脉冲编码调制)、AAC(级音频编码)等。缓冲区AudioRecord使用一个缓冲区来存储录制的音频数据。开发者可以指定缓冲区的大小,以适应不同的录制需求。

2024-09-13 10:07:15 825

原创 AudioTrack

AudioTrack是Android平台上的一个类,用于播放音频数据.它允许PCM音频缓冲区流式传输到音频接收器进行播放.创建AudioTrack对象:可以通过构造函数创建AudioTrack对象,需要指定音频流类型、采样率、音频通道配置和音频格式等参数。写入音频数据:可以使用write()方法将音频数据写入AudioTrack对象。写入的数据可以是PCM格式的原始音频数据,也可以是压缩格式的音频数据(如MP3、AAC等)。播放音频数据:在写入音频数据后,可以调用play()方法开始播放音频数据。

2024-09-13 09:58:39 1144

原创 音频基础知识学习(二)

在需要播放音频的地方,可以使用 AudioController 请求音频焦点,开始播放音频。这样,我们的应用就可以与其他应用协调音频的使用,解决音频竞争问题。AudioEffect 是 Android 提供的用于处理音频的基类,它包含了一些预定义的音频效果,如均衡器(Equalizer)、混响(Reverb)、压缩器(Compressor)等。注意处理音频权限:在进行音频录制或读取外部存储中的音频文件时,我们需要在 Manifest 文件中声明相应的权限,并在运行时请求这些权限。

2024-09-12 11:17:31 730

原创 音频基础知识学习(一)

音频至此,我们经过了:创建 Media codec->配置 Media codec->启动 Media codec->向 Media codec申请可用的输入Buffer块 -> 对 Buffer块填充需要编码的数据 ->提交 Buffer块 ->申请完成编码的Buffer块->处理原始的编码块->返回处理完的编码块等一系列的步骤,完成了编码的工作,工作步骤虽然不少,但是理解了其原理还是比较简单的。

2024-09-12 11:07:35 1215

原创 Systrace使用分析流程

Trace 文件是 Android Studio 提供的用于记录应用执行周期的一种工具。它详细记录了应用中各个方法的执行时间、调用栈信息等,有助于开发者发现并解决性能问题。systrace 是 android 4.1 中新增的性能数据采集和分析工具,它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger、WindowManagerService、Framework 关键模块、服务、View 系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。

2024-09-12 10:23:19 823

原创 Smali 简介与JVM指令

Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址Smali支持注解、调试信息、行数信息等基本Java的基本特性,可以说是很接近Java编译在JVM上的中间语言了,一般用来做Android程序的逆向工程。Smali是用于做反汇编的一种语言实现,如果可以,自己也能定义一套这样的语言,实现反汇编的效果JVM指令助记符。

2024-09-12 10:16:55 933

原创 Android逆向分析

Android 逆向开发是指对已发布的 Android 应用进行分析和破解,以了解应用程序的内部工作原理,获取应用程序的敏感信息,或者修改应用程序的行为。Android应用 Java编写的,利用Android SDK编译代码,并并且把所有的数据和资源文件打包成一个APK(Android Package)文件这是一个后缀名为.apk的压缩文件,apk文件中包含了一个Anddroid应用程序的所有内容,是Android平台用于安装应用程序的文件。

2024-09-12 10:11:27 1594

原创 ANR原理及案例分析

ANR (Application Not responding),是指应用程序未响应,Android 系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间未能得到有效响应或者响应时间过长,都会造成 ANRANR问题即使应用响应超时问题,它根据发生的原因不同,主要分为KeyDispatchTimeout、BroadcastTimeout、ContentProviderTimeout、ServiceTimeout四类。

2024-09-12 09:55:31 787

原创 应用进程闪退

内存不足:应用在运行过程中消耗了过多的内存,导致系统无法分配足够的内存给其他应用或系统服务。堆栈溢出:应用代码中存在递归调用或循环引用,导致堆栈空间耗尽。线程阻塞:线程在执行过程中被阻塞,导致其他线程无法正常执行。线程同步问题:多个线程同时访问同一资源,导致数据不一致或程序崩溃。CPU 资源限制:应用在运行过程中占用过多的 CPU 资源,导致系统无法处理其他任务。网络资源限制:应用在访问网络资源时,由于网络不稳定或资源限制,导致数据加载失败。

2024-09-12 09:40:02 343

原创 应用进程kill

杀死进程:当目标进程没有子进程或者子进程已经结束时,系统会向目标进程发送SIGKILL信号,强制杀死进程,此时,目标进程无法进行任何清理工作,可能会导致数据丢失或其他问题。在Android系统中,进程有五种状态:创建、就绪、运行、阻塞和死亡,进程的生命周期包括创建、运行、暂停、终止等阶段,当一个进程不再需要时,系统会将其杀死以回收资源。信号的方式来完成的。文件中定义了所有的系统中断号,用户态程序通过不同的系统调用号来调用不同的内核服务,通过系统调用号从系统调用表中查看到相应的内核服务。

2024-09-12 09:38:53 874

原创 应用进程启动

在Android操作系统中,Zygote进程是一个非常重要的系统进程,它是所有Android应用进程的父进程,负责为新的应用进程提供预加载的环境和资源。Zygote进程在系统启动时由init进程创建,它会预加载Android框架类和资源,包括常用的Java类库、Android框架类、系统服务和资源等。这些预加载的环境和资源在新的应用进程创建时被复制(通过fork操作),从而避免了重复加载和初始化,提高了应用启动速度。

2024-09-12 09:18:09 838

原创 NE触发原理及案例分析

Native Crash 是发生在 Android 系统中 C/C++ 层面的 Crash。从 Android 系统全局来说,Crash 通常分为 App/Framework Crash,Native Crash,以及 Kernel Crash。对于 App 层或者 Framework 层的 Crash(即 Java 层面 Crash),那么往往是通过抛出未捕获异常而导致的 Crash。在 Kernel Crash,很多情况是发生 Kernel panic,对于内核崩溃往往是驱动或者硬件出现故障。

2024-09-11 19:27:35 1122

原创 JE触发原理及案例分析

App Crash全称Application crash, 对于Crash可分为Java Crash和NativeCrash。在应用启动及运行中,出现闪退(崩溃),屏幕提示当前程序停止运行的弹窗,类似于windows的应用程序崩溃。小结:Crash是由于代码异常而导致App非正常退出现象,也就是我们常说的崩溃为什么会出现崩溃?概括来讲,就是程序运行中有未捕获的异常,未被 try-catch,导致进程被杀。

2024-09-11 19:17:53 1155

原创 Android日志系统

主日志使用打印,主要被应用使用。系统日志使用打印。许多android框架层的模块使用该工具打印日志,这样可以与应用日志区分开,避免其他日志干扰。事件日志使用打印,输出二进制格式的日志。日志入口包含二进制tag code,后面跟二进制参数。二进制tag code存储在。

2024-09-11 17:41:16 1686

原创 Git/Gerrit/代码提交

比如你新增了一行,这就是一个修改, 删除了一行,也是一个修改, 更改了某些字符,也是一个修改, 删了一些又加了一些,也是一个修改, 甚至创建一个新文件,也算一个修改。

2024-09-11 17:28:20 1226

原创 服务器配置、代码拉取(repo)、编译、刷机流程

代码的gerrit服务器网页,如gerrit-os.transsion.com、gerrit-share.transsion.com、gerrit-wx.transsion.com、gerrit-old.transsion.com、gerrit-cq.transsion.com等等)创建目录以存放代码,如mkdir AE11_code和mkdir AE11_vendor_ccode,cd AE11_code或AE11_vendor_code进入目录(注意使用Tab进行代码补全,简便)

2024-09-11 17:23:13 659

原创 熟练操作Linux环境基本命令

说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。上面的两个指令,touch和mkdir,一个床架目录,一个创建文件,目录和文件的差别在哪呢?

2024-09-11 17:11:48 996

原创 Android应用常见各个组件的开发

4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见,从而也就不可用。而broadcast receiver广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。

2024-09-11 17:00:59 887

原创 Android App 创建、编码、打包、安装、启动流程

zygote意为“受精卵“。Android是基于Linux系统的,而在Linux中,所有的进程都是由init进程直接或者是间接fork出来的,zygote进程也不例外。Android系统zygote是一个进程的名字。Android是基于Linux System的,当你的手机开机的时候,Linux的内核加载完成之后就会启动一个叫“init“的进程。在Linux System里面,所有的进程都是由init进程fork出来的,我们的zygote进程也不例外。

2024-09-11 16:56:12 1101

原创 ANR原理

即:启动一个App,首先经过App的生命周期变化,在App端完成我on_resumed后,会进行绘制步骤,经过WMS,WMS调用至SurfaceFlinger端,最终由SurfaceFlinger端调用至IrnputDispatcher,保存新的焦点窗口信息。每个WindowState都有一个对应的WindowStateAnimator,主要负责责:计算窗口动画的帧,管理窗口的Surface(一个提供屏幕绘制区域的概念),与SurfaceFlinger交流,以便正确显示窗口的动画。

2024-09-11 16:47:38 778

原创 Android跨进程通信(AIDL、Binder

Binder通信采用C/S架构,从组件视角来说,包含Client、Server、ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务;从流程的角度:Binder分为三大基础流程,分别是:注册服务(addService)获取服务(getService)使用服务。

2024-09-11 16:45:45 1222

原创 Android 多线程使用及原理(Handler、线程池)

线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象;@Overridevolatile:保证变量的可见性,但不保证操作的原子性。:确保代码块或方法在同一时刻只能被一个线程执行,保证互斥访问。:在特定对象上加锁,保证特定对象的互斥访问。:提供了更灵活的锁机制,包括尝试加锁、超时加锁等。

2024-09-11 16:42:23 1415

原创 Android Studio 四大组件之ContentProvider

重写其方法,query、insert、update、delete、onCreate、getType。

2024-09-11 16:27:54 883

原创 Android Studio 四大组件之Broadcast

int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。和 ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。String DATA_ACTIVITY_STATE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。

2024-09-11 16:23:37 1339

原创 Android Studio 四大组件之Service

Handler是Android中用于线程间通信的一种机制,它可以将一个Runnable对象或者一个Message对象发送到与之关联的线程的MessageQueue中,然后这个线程就可以在合适的时机处理这些消息。

2024-09-11 16:17:45 1019

原创 Android Studio 四大组件之Activity

Activity是构建用户界面的基础组件,方便用户实现应用交互。可以看作单一的屏幕。

2024-09-11 16:10:23 1290

原创 学习测试题

1.测试某条UTP用例时,根据操作步骤测试出应用报停,但期望结果不需要看应用是否报停,所以提单时不用填写TCID,选择FreeT Test。8.对于偶现低概率问题,在复现的时候,如果步骤有小许的偏差,或者基本一致,先跟研发沟通确认是否同一问题再确认是否要Reopen处理。D.提交单机问题时,Jira上的概率选择为Must,描述中概率为5/5,Bug等级表概率选择为must。///////////////////////////////////////////跃哥题。

2024-08-09 15:17:42 246

空空如也

空空如也

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

TA关注的人

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