avatar
文章
98
标签
33
分类
13
首页
归档
标签
分类
友链
关于
Fleming's Blog
搜索
首页
归档
标签
分类
友链
关于

Fleming's Blog

开发方向之音视频
发表于2025-06-04|系统
开发方向之音视频音视频开发在Android平台上是一个复杂的领域,涉及到多媒体数据的处理、传输和播放等多个方面。以下是针对音视频开发更详细的介绍,包括关键组件、常用框架与库以及一些具体的实现细节。 关键组件 MediaCodec: MediaCodec API允许开发者访问Android设备上的硬件加速编解码器。它支持音频和视频的编码和解码。 开发者可以使用此API来创建高效的媒体应用,如视频编辑器或实时视频通话应用。 MediaExtractor: MediaExtractor用于从媒体文件中提取轨道(音频或视频)。它可以解析多种格式,并提供对媒体数据的直接访问。 适用于需要对媒体内容进行分析或转换的应用场景。 MediaPlayer: MediaPlayer提供了播放本地或网络上的音频和视频的基本功能。它是Android中最简单的播放控制方法。 对于大多数基本的播放需求,MediaPlayer已经足够使用。 AudioTrack/AudioRecord: AudioTrack用于播放PCM格式的音频数据,而AudioRecord用于录制PCM格式...
EQ调节参数的意义
发表于2025-04-27|经验
EQ调节参数的意义在音频处理中,DSP(数字信号处理)调节是用于改善或修改声音特性的关键技术。其中提到的Gain、Q和Freq是均衡器(EQ)设置中的关键参数,它们各自有不同的含义和作用: Gain(增益): 含义:增益指的是对特定频率范围内的音量进行增加或减少的调整量,通常以分贝(dB)为单位。 作用:通过调整增益,可以增强或减弱某个特定频段的声音强度,从而改变音频的整体平衡。例如,增加低频的增益可以使音乐听起来更加丰满。 Q值(品质因数): 含义:Q值决定了均衡器在调整某一频点时影响的频率范围宽度。Q值越高,影响的频率范围越窄;反之,Q值越低,则影响的频率范围越宽。 作用:它允许用户精确地控制需要调整的具体频率范围。对于需要精细调整的场合,比如消除反馈噪音,使用高Q值来精确定位问题频率非常有用;而在希望平滑地调整较大范围的音频特性时,则会选择较低的Q值。 Freq(频率): 含义:Freq是指你想要调整的中心频率点,即你希望增强或削减的频率位置,通常以赫兹(Hz)为单位表示。 作用:通过选择不同的中心频率,你可以针对音频信号中的特定部分进行调整。例如,如果你发...
MonoBehaviour生命周期
发表于2025-04-03|Unity 3D
MonoBehaviour生命周期Unity 中的 MonoBehaviour 类提供了一系列的回调方法,这些方法按照一定的顺序被调用,形成了脚本的生命周期。了解这些生命周期方法对于控制游戏对象的行为非常重要。以下是 MonoBehaviour 的主要生命周期方法: Awake(): 当脚本实例被加载时调用。这个方法在整个游戏生命周期中只调用一次,通常用于初始化变量或游戏状态。 OnEnable(): 当对象变为可用或激活状态时调用。当一个对象从非激活状态转为激活状态(比如通过设置 gameObject.SetActive(true))时会调用此方法。每次对象变得可用时都会调用。 Start(): 在第一次帧更新之前调用。仅在启用状态下才会被调用,常用于需要等待所有初始化完成后再执行的操作。 FixedUpdate(): 固定物理更新频率调用。用于处理物理相关的计算,因为它的调用不受帧率的影响。 Update(): 每帧调用一次。这是使用最频繁的方法之一,适合用于处理与帧率同步的游戏逻辑。 LateUpdate(): 在每帧Update方法之后调用。主要用于处理跟随摄...
EdgeToEdge全屏状态和导航栏高度适配
发表于2024-11-06|Code
EdgeToEdge全屏状态和导航栏高度适配12345ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets}
scrcpy不重定向到电脑声卡
发表于2024-07-31|经验
scrcpy不重定向到电脑声卡1scrcpy --render-driver=software --no-audio
Android刷机
发表于2024-07-07|经验
Android刷机对于安卓设备的刷机过程,通常会涉及到使用ADB(Android Debug Bridge)和Fastboot工具。以下是基于命令行操作的刷机步骤及对应指令: 准备工作 确保已安装ADB和Fastboot:你需要在电脑上安装ADB和Fastboot工具。 解锁Bootloader(如果需要):不同的制造商有不同的解锁方法,请查阅官方文档或社区指南。 刷机步骤及对应指令 连接设备并启用调试模式 在设备上进入“设置”->“关于手机”,连续点击版本号激活开发者选项。 返回设置主菜单,进入开发者选项,启用USB调试。 使用USB线将设备连接到电脑。 检查设备是否正确连接 1adb devices 确认可以看到你的设备。 重启设备进入Bootloader模式 1adb reboot bootloader 确认设备处于Fastboot模式 1fastboot devices 解锁Bootloader(如果尚未解锁) 注意:这一步会清除设备上的所有数据。1fastboot oem unlock 具体指令可能因设备而异,请参照设备制造商提供的说明。 刷入...
关于Gradle版本配置
发表于2024-02-13|经验
关于Gradle版本配置✅ 项目里“真正被 Gradle 选中参与构建”的所有依赖👉 都会被下载到 .gradle/caches 下 ✅ 这些依赖的“具体版本”👉 最终来自:第三方库自身的版本声明 + Gradle 的依赖解析结果 老项目 AGP -> 最高7.4.2, gradle-7.5-bin JVM -> 11及以下 新项目 AGP -> 8.0.0及以上, 最低gradle-8.0-bin推荐:2024 AGP:8.3.2 gradle:8.4-bin以上 kotlin:1.9.20 JVM -> 17及以上 需要配置namespace 关于Kotlin AGP 推荐 Kotlin 7.4.x 1.7.20 8.0.x 1.8.10 8.1.x 1.8.20 8.2.x 1.9.0 8.3.x 1.9.20
如何设置菜单
发表于2024-02-10|Code
为了优化 onActivityCreated 和 onCreateOptionsMenu 并避免使用过期方法,建议采用以下现代 Android 开发实践: 移除 onActivityCreated:该方法已弃用。原本在其中调用的 setHasOptionsMenu(true) 也可以移除。 使用 MenuProvider API:这是替代 onCreateOptionsMenu 和 onOptionsItemSelected 的推荐方式,它能更好地与生命周期结合。 123456789101112131415161718192021222324252627282930313233private fun setupMenu() { val menuHost: MenuHost = requireActivity() menuHost.addMenuProvider(object : MenuProvider { override fun onCreateMenu( menu: Menu, ...
调节对比度
发表于2024-02-08|Code
调节对比度要通过代码调整Android屏幕对比度,您可以使用以下方法: 使用WindowManager.LayoutParams设置屏幕亮度和对比度: 1234WindowManager.LayoutParams layoutParams = getWindow().getAttributes();layoutParams.screenBrightness = 1.0f; //设置屏幕亮度layoutParams.contrast = 1.5f; //设置对比度getWindow().setAttributes(layoutParams); 通过Settings.System类使用ContentResolver设置系统对比度: 123ContentResolver cr = getContentResolver();Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); //设置手动调节屏幕亮度Setti...
查询本地图片资源
发表于2024-02-08|Code
查询本地图片资源12345678910111213141516171819202122232425262728293031val mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URIval mContentResolver = contentResolverval cursor: Cursor?val projection = arrayOf( MediaStore.MediaColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME, MediaStore.MediaColumns.DATE_MODIFIED)//只查询jpeg和png的图片cursor = mContentResolver.query( mImageUri, projection, MediaStore.MediaColumns.MIME_TYPE + "=? or " + MediaStore....
123…10
avatar
Fleming Chen
不积跬步无以至千里,不积小流无以成江海。——《荀子·劝学》
文章
98
标签
33
分类
13
Follow Me
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!
最新文章
音频流处理过程
音频流处理过程2026-01-16
AOIP和VOIP
AOIP和VOIP2026-01-06
AudioFlinger的基本概念
AudioFlinger的基本概念2025-08-28
音频领域基本概念
音频领域基本概念2025-08-20
Unicast、Multicast、Broadcast的含义及关系
Unicast、Multicast、Broadcast的含义及关系2025-08-19
分类
  • ADB9
  • Code19
  • Flutter1
  • Git10
  • Grep1
  • Linux3
  • Repo2
  • Unity 3D1
标签
Handler BroadcastReceiver 缓存 经验 linux Android Studio 代码 MVP Dialog git flutter Message LruCache UI EditText 扩展 学习路线 数据库 架构 系统广播 Markdown SQLite 系统 unity AlertDialog 自学 日常 IDE adb 音频 Android 开发工具 AsyncTask
归档
  • 一月 2026 2
  • 八月 2025 3
  • 七月 2025 5
  • 六月 2025 1
  • 四月 2025 2
  • 十一月 2024 1
  • 七月 2024 2
  • 二月 2024 4
网站信息
文章数目 :
98
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2016 - 2026 By Fleming Chen框架 Hexo 6.1.0|主题 Butterfly 5.5.4
搜索
数据加载中