自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 Android输入系统(一)事件读取

该函数传入三个参数,超时时间、存放事件的Buffer、Buffer的大小,返回读取到的事件个数。看完上面的代码后EventHub最核心的功能已经基本了解了,相信事件的产生和监听到EventHub这层已经有了比较明确的概念,接下来看下。目录下的变化就可以了解输入设备的插拔,监听相应的设备文件就可以了解该设备的输入事件变化。其中屏幕,鼠标等称为。我们知道Linux万物皆文件,输入设备在Linux上也体现为文件,存在相应的输入设备时。目录下便会生成相应的文件,输入设备产生相应事件时相应的设备文件就会发生变化。

2024-02-19 13:24:14 819

原创 Android(Gradle) 库依赖版本统一管理

依赖版本统一管理主要用于多模块的项目,表现为在一个地方定义使用到的依赖库的版本,在各个模块内引用该版本。主要好处一个是统一各个模块之间依赖的版本,降低发生依赖冲突的概率,一个是升级依赖库时只需要在一个地方修改,所有模块都生效,不用去各个模块内部手动修改。

2023-07-27 21:20:16 1126

原创 YUV数据格式记录

YUV是一种图像(色彩)表示方法。RGB用三原色(红,绿,蓝)来表示所有的颜色,YUV类似RGB,用Y,U,V来表示各种颜色,YUV格式和RGB格式之间可以互相转换。此外还有一种叫*CMYK*的颜色表示方式,感兴趣的自行了解。 研究表明,人类视觉系统(HVS)对光的感知程度可以用两个属性描述:**亮度(luminance)**和**色度(chrominance)**,其中色度又可以细分为**色调**和**色饱和度**。色调是由光波的峰值定义的,描述的是光的颜色。色饱和度是由光波的谱宽定义的,描述的是光的

2023-06-04 15:47:50 234

原创 Android Watchdog 原理记录

Watchdog用于检查系统重要服务或线程是否堵塞,防止系统卡死(发现系统卡死就干掉自己重启系统进程),是一个针对系统的”ANR“检测工具,同时有接受来自系统服务重启广播进行系统重启的作用。

2023-02-19 21:55:10 322

原创 Android定位简记

GPS定位使用LocationManager.GPS_PROVIDER 需要android.permission.ACCESS_FINE_LOCATION权限网络定位(CellID, WiFi MACID)网络定位模式(基站、wifi网络)、精度较低(1000米)、无海拔高度、初始定位速度快、耗电低。使用LocationManager.NETWORK_PROVIDER 需要android.permission.ACCESS_COARSE_LOCATION权限被动定位被动定位方式,精度取决于定位信

2022-08-14 23:27:47 1686

原创 Android 12 SplashScreen(闪屏页)适配

Android12闪屏适配

2022-06-08 23:48:01 5176 3

原创 音视频系列九 使用soundTouch实现音视频变速

soundTouch和TSM算法

2022-05-06 16:25:39 1374 4

原创 Retrofit总结

文章目录使用gradle配置使用官方源码gradle配置 implementation 'com.squareup.retrofit2:retrofit:2.9.0'ConverterFactory和CallAdapterFactory基本都是需要另外导包的,而我们一般都会用到GsonConverterFactory,所以需要导入GsonConverterFactory依赖示例如下。 implementation 'com.squareup.retrofit2:converter-

2022-04-25 18:19:43 400

原创 音视频系列八 ffmpeg使用mediacodec硬解码

文章目录重新编译ffmpeg配置JavaVM替换AVCodec重新编译ffmpegffmpeg默认是没有开启mediacodec的,所以需要在配置文件上增加配置--enable-mediacodec默认就会增加mediacodec支持的解码器,但是如果你禁用了所有的解码器,那根据自己需要手动打开,参考以下配置--enable-decoder=h264_mediacodec--enable-decoder=hevc_mediacodec--enable-decoder=mpeg4_mediac

2022-04-09 21:33:25 4976

原创 Android GC(垃圾回收)总结

文章目录前言一、回收哪里的垃圾程序计数器虚拟机栈本地方法栈堆方法区二、确定哪些是垃圾引用计数法可达性分析法(根搜索算法)三、怎么回收垃圾分代回收标记清除算法标记复制算法标记压缩算法四、主要垃圾回收器五、参考博文前言垃圾回收一般需要暂停所有线程的执行,叫stop-the-world。GC优化基本就是减少暂停次数和暂停时间。一、回收哪里的垃圾JVM的内存大致分为5个区,程序计数器,虚拟机栈,本地方法栈,堆,方法区。程序计数器顾名思义跟PC寄存器作用类似,每个线程独立存在,生命周期与线程一致。指示当前

2022-04-09 15:27:47 7030

原创 音视频系列七 使用libyuv提高转换性能

文章目录编译libyuv库下载ndk-build编译AndroidStudio引入so库yuv转RGBAlibyuv库就不多介绍了,谷歌开源的处理YUV数据的库。听说性能比ffmpeg好,就尝试一下替换ffmpeg的scale功能。经过的测试确实好233编译libyuv库下载git clone https://chromium.googlesource.com/libyuv/libyuv谷歌的东西如果网速不太好可以在github导入镜像仓库然后从github下(也可以试试导入gitee,不过我试

2022-04-01 00:21:39 1366

原创 FFmpeg m3u8文件返回Invalid data found when processing input错误

Activity->Window->ViewGroup->View

2022-02-23 15:14:40 6536

原创 Room基本使用

文章目录官方教程一、配置依赖二、创建表三、定义表操作(增删改查)四、创建数据库官方教程一、配置依赖dependencies { def room_version = "2.3.0" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // 可选 - RxJava2 suppor

2021-10-12 22:33:57 1671

原创 gradle查看依赖树

./gradlew :app:dependencies --configuration releaseCompileClasspath(c ) - dependency constraint 表示选择的版本(* ) - dependencies omitted (listed previously)表示省略了他的依赖,因为前面列出来了。

2021-10-12 17:45:17 1487

原创 音视频系列六 Linux 编译ffmpeg链接openssl

BIPPlayerin project build.gradleallprojects { repositories { jcenter() maven { url "https://jitpack.io" } }}in module build.gradledependencies { implementation 'com.github.jitpack:android-example:1.0.1'}

2021-09-27 22:04:39 901

原创 音视频系列五 音视频同步

文章目录简述音频时钟视频同步音频简述音频时钟视频同步音频

2021-09-03 14:47:23 99

原创 音视频系列四 ffmpeg配合opensl es播放音频

文章目录一 解码成PCM二 opensl es创建引擎,混音器一 解码成PCM流程其实和视频差不多,参考播放视频的代码,稍作增改先定义后面需要用到的全局变量//音频解码上下文AVCodecContext *audioCodecContext;//音频重采样上下文SwrContext *audioSwrContext;//音频重采样缓冲区uint8_t *audioBuffer;//音频重采样声道uint64_t outChLayout = AV_CH_LAYOUT_STEREO;//

2021-08-27 16:25:40 163

原创 音视频系列三 使用ffmpeg播放视频

文章目录一 打开输入流二 找到视频流三 打开解码器四 申请AVPacket和AVFrame存放解析前后视频数据四 配置ANativeWindow五 解码六 释放资源配套代码简单说明文章参考一 打开输入流创建一个native方法,从java层传入视频地址,例如下面代码jint native_play(JNIEnv *env, jobject instance, jstring inputPath_)然后使用下面代码打开输入流 //打开输入流 AVFormatContext *avF

2021-08-20 18:17:18 234

原创 音视频系列二 Android Studio配置ffmpeg(jni使用so库)

文章目录一 复制文件二 修改CMakeLists.txt三 测试运行一 复制文件android studio 创建jni工程,然后将ffmpeg编译后在android子目录下生成的so库和头文件拷到libs目录下,如下图注意,如果是放在其他目录下或者gradle版本低于4的需要在module的build.gradle文件中配置sourceSets,在defaultConfig这个范围中,如下图:libs改成你自己的位置二 修改CMakeLists.txt样例如下cmake_minimum_r

2021-08-15 15:05:17 325

原创 音视频系列一 Linux 编译ffmpeg4.2.4

参考文章一 下载解压ndk使用的是ndk21(编译器是clang的应该都一样,低版本gcc的配置会有不同)二 下载解压ffmpegffmpeg下载地址选4.2.4主要考虑既不太新又不太旧三 编写编译脚本#!/bin/bashNDK=/PublicData/LinuxAndroidSdk/ndk/21.3.6528147TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64SYSROOT="$TOOLCHAIN/sysroot"API=

2021-08-13 23:50:26 276

原创 让某个应用以指定时间运行

windows 有个RunAsDate软件可以以指定时间运行某个应用下载链接linux或者mac可以使用一个开源库设置单个应用时间github地址参考: git clone https://github.com/wolfcw/libfaketime.git cd libfaketime && make install然后在你需要运行的程序或者脚本前面加上#fake timeexport LD_PRELOAD=/usr/local/lib/faketi

2021-06-25 12:34:29 802

原创 重装Linux后系统配置(个人使用)

1、解决adb无法连接设备在/etc/udev/rules.d目录下创建90-android.rules文件,输入SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"2、vscode在makefile中的tab无法被make识别在settings.json中添加这一项 "editor.insertSpaces": false,...

2021-04-22 14:52:54 132

原创 Android (内置)预装应用

Android (内置)预装应用参考Android 系统如何预装第三方应用以及常见问题汇集.系统开机时会进行应用的加载(或者说安装),所以我们只需要把要内置的apk放到指定目录就行。最常见的应该是下面四个1.system/app/ :该目录下存放的是一些系统级的应用,该目录下的应用能获取到比较高的权限,应用不可卸载,如Phone、Contacts等2.system/priv-app/ :该目录是从Android 4.4开始出现的目录,它存放的是一些系统核心应用,能获取到比system/app/下应用

2021-03-07 22:34:30 7585 8

原创 Android修改默认输入法

Android系统修改默认输入法代码是lineageos17.1(lavender)一、内置输入法进系统这个百度很多资料,暂时留空,因为还没搞定内置可卸载应用二、修改内置输入法在frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件后面追加下面代码 <string name="def_input_method" translatable="false">com.iflytek.inputmetho

2021-02-13 16:24:53 1308

原创 Android编译跳过生成userdata.img和ota包

跳过生成OTA包参考链接简书博客.详细的分析上面的博客说的很清楚了具体操作就是在所选用的device中BoardConfig.mk文件,修改或者增加一行TARGET_SKIP_OTA_PACKAGE := true 即可在构建时不生成ota更新包。跳过生成userdata.img在build/make/core/main.mk文件里定义了userdataimage的伪目标,代码如下.PHONY: userdataimageuserdataimage: $(INSTALLED_USERDATAI

2021-01-31 23:59:27 695

原创 Android编译ota包移除compatibility.zip

简介Android有个Treble项目,详细的情况感兴趣的自行百度,简单的来说就是编译一个系统镜像能够在很多手机上运行。也就涉及到了兼容性问题,compatibility.zip里面有四个文件,分别说明,设备提供了什么,设备需要什么,框架提供了什么,框架需要什么。如果ota包,也就是卡刷包里面有这个压缩包,那么recovery会去校验,如果不匹配的话无法安装。相关链接:谷歌文档.操作顺着make otapackage 这个命令找,最后定位到了build/make/tools/releasetools/

2021-01-31 00:35:12 738

原创 Android startAnimation无法循环

Android startAnimation无法循环 Animation animation = AnimationUtils.loadAnimation(this, R.anim.left_in_repeat);看看xml里面的动画是不是set,AnimationSet无法设置循环

2021-01-14 14:46:18 360

原创 Android签名修改

Android签名修改参考文章签名文件存放目录参考文件示例代码参考文章简书链接签名文件存放目录/build/target/product/security参考文件/build/target/product/security/README示例代码./development/tools/make_key build/target/product/security/shared '/C=CN/ST=ShenZhen/L=ShenZhen/O=momxmo/OU=mo/CN=www.momxmo.c

2021-01-11 11:28:38 909

原创 ByteBuffer详解(大概2333)

ByteBuffer详解ByteBuffer详解概述ByteBuffer属性capacitylimitpositionMarkByteBuffer方法allocate()order()put()flip()array()get()wrap()clear()rewind()campact()最后概述ByteBuffer顾名思...

2018-04-10 23:24:45 1893

原创 SpringMVC前端控制器细节简记

一开始因为静态资源会被拦截的缘故误以为配置了/的DispatcherServlet会拦截所有的请求。可是今天在一个原生项目上使用springmvc发现原来写的那些servlet还是能正常访问。然后去百度了一下~ 前端控制器本质上是一个Servlet。所谓的拦截所有请求是因为配置了/ url时所有请求都能匹配,所以所有请求都可能会被tomcat派发给前端控制器。但是tomcat的url匹配规

2018-01-06 17:04:53 1016

原创 java 编译运行记录~

java 编译运行记录~java 编译运行记录摘要编译运行总结摘要主要是讲讲java编译运行过程(操作过程,不是原理过程),记录一下遇到的问题。编译编译是对文件的编译,所以参数那里是文件名(要.java后缀),同时编译时对类名和位置没有要求,即不管你有没有package, 参数都是你看到的实实在在的文件名,而且你可以在任意地方编译。windows系统一般都是gbk编码,Linux一般是UT

2017-12-24 16:04:28 304

原创 java拼图3x3

java课程设计拼图(简单版233)

2017-12-21 23:35:13 1302

java语言程序设计(第2版)沈泽刚_秦玉平课后答案

java语言程序设计(第2版)沈泽刚 秦玉平 课后习题选择题答案跟解析

2017-12-26

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

TA关注的人

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