<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Welcome_Word的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Welcome_Word</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Welcome_Word]]></copyright><item><title><![CDATA[Android输入系统（一）事件读取]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/136168253</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/136168253</guid><author>Welcome_Word</author><pubDate>Mon, 19 Feb 2024 13:24:14 +0800</pubDate><description><![CDATA[该函数传入三个参数，超时时间、存放事件的Buffer、Buffer的大小，返回读取到的事件个数。看完上面的代码后EventHub最核心的功能已经基本了解了，相信事件的产生和监听到EventHub这层已经有了比较明确的概念，接下来看下。目录下的变化就可以了解输入设备的插拔，监听相应的设备文件就可以了解该设备的输入事件变化。其中屏幕，鼠标等称为。我们知道Linux万物皆文件，输入设备在Linux上也体现为文件，存在相应的输入设备时。目录下便会生成相应的文件，输入设备产生相应事件时相应的设备文件就会发生变化。]]></description><category></category></item><item><title><![CDATA[Android(Gradle) 库依赖版本统一管理]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/131968778</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/131968778</guid><author>Welcome_Word</author><pubDate>Thu, 27 Jul 2023 21:20:16 +0800</pubDate><description><![CDATA[依赖版本统一管理主要用于多模块的项目，表现为在一个地方定义使用到的依赖库的版本，在各个模块内引用该版本。主要好处一个是统一各个模块之间依赖的版本，降低发生依赖冲突的概率，一个是升级依赖库时只需要在一个地方修改，所有模块都生效，不用去各个模块内部手动修改。]]></description><category></category></item><item><title><![CDATA[YUV数据格式记录]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/130917748</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/130917748</guid><author>Welcome_Word</author><pubDate>Sun, 04 Jun 2023 15:47:50 +0800</pubDate><description><![CDATA[YUV是一种图像（色彩）表示方法。RGB用三原色（红，绿，蓝）来表示所有的颜色，YUV类似RGB，用Y,U,V来表示各种颜色，YUV格式和RGB格式之间可以互相转换。此外还有一种叫*CMYK*的颜色表示方式，感兴趣的自行了解。  
研究表明，人类视觉系统(HVS)对光的感知程度可以用两个属性描述：**亮度(luminance)**和**色度(chrominance)**，其中色度又可以细分为**色调**和**色饱和度**。色调是由光波的峰值定义的，描述的是光的颜色。色饱和度是由光波的谱宽定义的，描述的是光的]]></description><category></category></item><item><title><![CDATA[Android Watchdog 原理记录]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/129072750</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/129072750</guid><author>Welcome_Word</author><pubDate>Sun, 19 Feb 2023 21:55:10 +0800</pubDate><description><![CDATA[Watchdog用于检查系统重要服务或线程是否堵塞，防止系统卡死（发现系统卡死就干掉自己重启系统进程）,是一个针对系统的”ANR“检测工具，同时有接受来自系统服务重启广播进行系统重启的作用。]]></description><category></category></item><item><title><![CDATA[Android定位简记]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/124616034</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/124616034</guid><author>Welcome_Word</author><pubDate>Sun, 14 Aug 2022 23:27:47 +0800</pubDate><description><![CDATA[GPS定位
使用LocationManager.GPS_PROVIDER 需要android.permission.ACCESS_FINE_LOCATION权限
网络定位（CellID, WiFi MACID）
网络定位模式（基站、wifi网络）、精度较低（1000米）、无海拔高度、初始定位速度快、耗电低。
使用LocationManager.NETWORK_PROVIDER 需要android.permission.ACCESS_COARSE_LOCATION权限
被动定位
被动定位方式，精度取决于定位信]]></description><category></category></item><item><title><![CDATA[Android 12 SplashScreen（闪屏页）适配]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/125130571</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/125130571</guid><author>Welcome_Word</author><pubDate>Wed, 08 Jun 2022 23:48:01 +0800</pubDate><description><![CDATA[Android12闪屏适配]]></description><category></category></item><item><title><![CDATA[音视频系列九 使用soundTouch实现音视频变速]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/124434675</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/124434675</guid><author>Welcome_Word</author><pubDate>Fri, 06 May 2022 16:25:39 +0800</pubDate><description><![CDATA[soundTouch和TSM算法

]]></description><category></category></item><item><title><![CDATA[Retrofit总结]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/124194402</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/124194402</guid><author>Welcome_Word</author><pubDate>Mon, 25 Apr 2022 18:19:43 +0800</pubDate><description><![CDATA[文章目录使用gradle配置
使用
官方源码
gradle配置
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'

ConverterFactory和CallAdapterFactory基本都是需要另外导包的，而我们一般都会用到GsonConverterFactory，所以需要导入GsonConverterFactory依赖示例如下。
    implementation 'com.squareup.retrofit2:converter-]]></description><category></category></item><item><title><![CDATA[音视频系列八 ffmpeg使用mediacodec硬解码]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/124068162</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/124068162</guid><author>Welcome_Word</author><pubDate>Sat, 09 Apr 2022 21:33:25 +0800</pubDate><description><![CDATA[文章目录重新编译ffmpeg配置JavaVM替换AVCodec
重新编译ffmpeg
ffmpeg默认是没有开启mediacodec的，所以需要在配置文件上增加配置
--enable-mediacodec

默认就会增加mediacodec支持的解码器，但是如果你禁用了所有的解码器，那根据自己需要手动打开，参考以下配置
--enable-decoder=h264_mediacodec
--enable-decoder=hevc_mediacodec
--enable-decoder=mpeg4_mediac]]></description><category></category></item><item><title><![CDATA[Android GC（垃圾回收）总结]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/124051691</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/124051691</guid><author>Welcome_Word</author><pubDate>Sat, 09 Apr 2022 15:27:47 +0800</pubDate><description><![CDATA[文章目录前言一、回收哪里的垃圾程序计数器虚拟机栈本地方法栈堆方法区二、确定哪些是垃圾引用计数法可达性分析法（根搜索算法）三、怎么回收垃圾分代回收标记清除算法标记复制算法标记压缩算法四、主要垃圾回收器五、参考博文
前言
垃圾回收一般需要暂停所有线程的执行，叫stop-the-world。GC优化基本就是减少暂停次数和暂停时间。
一、回收哪里的垃圾
JVM的内存大致分为5个区，程序计数器，虚拟机栈，本地方法栈，堆，方法区。
程序计数器
顾名思义跟PC寄存器作用类似，每个线程独立存在，生命周期与线程一致。指示当前]]></description><category></category></item><item><title><![CDATA[音视频系列七 使用libyuv提高转换性能]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/123818485</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/123818485</guid><author>Welcome_Word</author><pubDate>Fri, 01 Apr 2022 00:21:39 +0800</pubDate><description><![CDATA[文章目录编译libyuv库下载ndk-build编译AndroidStudio引入so库yuv转RGBA
libyuv库就不多介绍了，谷歌开源的处理YUV数据的库。听说性能比ffmpeg好，就尝试一下替换ffmpeg的scale功能。经过的测试确实好233
编译libyuv库
下载
git clone https://chromium.googlesource.com/libyuv/libyuv

谷歌的东西如果网速不太好可以在github导入镜像仓库然后从github下（也可以试试导入gitee，不过我试]]></description><category></category></item><item><title><![CDATA[FFmpeg m3u8文件返回Invalid data found when processing input错误]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/121229169</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/121229169</guid><author>Welcome_Word</author><pubDate>Wed, 23 Feb 2022 15:14:40 +0800</pubDate><description><![CDATA[Activity-&gt;Window-&gt;ViewGroup-&gt;View

]]></description><category></category></item><item><title><![CDATA[Room基本使用]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/120725889</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/120725889</guid><author>Welcome_Word</author><pubDate>Tue, 12 Oct 2021 22:33:57 +0800</pubDate><description><![CDATA[文章目录官方教程一、配置依赖二、创建表三、定义表操作（增删改查）四、创建数据库
官方教程
一、配置依赖
dependencies {
    def room_version = "2.3.0"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // 可选 - RxJava2 suppor]]></description><category></category></item><item><title><![CDATA[gradle查看依赖树]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/120728506</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/120728506</guid><author>Welcome_Word</author><pubDate>Tue, 12 Oct 2021 17:45:17 +0800</pubDate><description><![CDATA[./gradlew :app:dependencies --configuration releaseCompileClasspath

(c ) - dependency constraint 表示选择的版本
(* ) - dependencies omitted (listed previously)表示省略了他的依赖，因为前面列出来了。

]]></description><category></category></item><item><title><![CDATA[音视频系列六 Linux 编译ffmpeg链接openssl]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/120460999</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/120460999</guid><author>Welcome_Word</author><pubDate>Mon, 27 Sep 2021 22:04:39 +0800</pubDate><description><![CDATA[BIPPlayer
in project build.gradle
allprojects {
 repositories {
    jcenter()
    maven { url "https://jitpack.io" }
 }
}

in module build.gradle
dependencies {
  implementation 'com.github.jitpack:android-example:1.0.1'
}


]]></description><category></category></item><item><title><![CDATA[音视频系列五 音视频同步]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/120051643</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/120051643</guid><author>Welcome_Word</author><pubDate>Fri, 03 Sep 2021 14:47:23 +0800</pubDate><description><![CDATA[文章目录简述音频时钟视频同步音频
简述
音频时钟
视频同步音频

]]></description><category></category></item><item><title><![CDATA[音视频系列四 ffmpeg配合opensl es播放音频]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/119920268</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/119920268</guid><author>Welcome_Word</author><pubDate>Fri, 27 Aug 2021 16:25:40 +0800</pubDate><description><![CDATA[文章目录一 解码成PCM二 opensl es创建引擎，混音器
一 解码成PCM
流程其实和视频差不多，参考播放视频的代码，稍作增改
先定义后面需要用到的全局变量
//音频解码上下文
AVCodecContext *audioCodecContext;
//音频重采样上下文
SwrContext *audioSwrContext;
//音频重采样缓冲区
uint8_t *audioBuffer;
//音频重采样声道
uint64_t outChLayout = AV_CH_LAYOUT_STEREO;
//]]></description><category></category></item><item><title><![CDATA[音视频系列三 使用ffmpeg播放视频]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/119828744</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/119828744</guid><author>Welcome_Word</author><pubDate>Fri, 20 Aug 2021 18:17:18 +0800</pubDate><description><![CDATA[文章目录一 打开输入流二 找到视频流三 打开解码器四 申请AVPacket和AVFrame存放解析前后视频数据四 配置ANativeWindow五 解码六 释放资源配套代码简单说明
文章参考
一 打开输入流
创建一个native方法，从java层传入视频地址，例如下面代码
jint native_play(JNIEnv *env, jobject instance, jstring inputPath_)

然后使用下面代码打开输入流
    //打开输入流
    AVFormatContext *avF]]></description><category></category></item><item><title><![CDATA[音视频系列二 Android Studio配置ffmpeg(jni使用so库)]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/119713594</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/119713594</guid><author>Welcome_Word</author><pubDate>Sun, 15 Aug 2021 15:05:17 +0800</pubDate><description><![CDATA[文章目录一 复制文件二 修改CMakeLists.txt三 测试运行
一 复制文件
android studio 创建jni工程，然后将ffmpeg编译后在android子目录下生成的so库和头文件拷到libs目录下,如下图
注意，如果是放在其他目录下或者gradle版本低于4的需要在module的build.gradle文件中配置sourceSets，在defaultConfig这个范围中，如下图：

libs改成你自己的位置
二 修改CMakeLists.txt
样例如下
cmake_minimum_r]]></description><category></category></item><item><title><![CDATA[音视频系列一 Linux 编译ffmpeg4.2.4]]></title><link>https://blog.youkuaiyun.com/Welcome_Word/article/details/119685754</link><guid>https://blog.youkuaiyun.com/Welcome_Word/article/details/119685754</guid><author>Welcome_Word</author><pubDate>Fri, 13 Aug 2021 23:50:26 +0800</pubDate><description><![CDATA[参考文章
一 下载解压ndk
使用的是ndk21(编译器是clang的应该都一样，低版本gcc的配置会有不同)
二 下载解压ffmpeg
ffmpeg下载地址
选4.2.4主要考虑既不太新又不太旧
三 编写编译脚本
#!/bin/bash

NDK=/PublicData/LinuxAndroidSdk/ndk/21.3.6528147
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT="$TOOLCHAIN/sysroot"
API=]]></description><category></category></item></channel></rss>