- 博客(277)
- 资源 (2)
- 收藏
- 关注

原创 Android 10 Q版本 activity 冷启动流程
由于工作原因需要了解activity启动流程,在网上已经有很多相关文章,不过为了记忆深刻还是自己无脑跑一遍流程,接下来是Android 10 Q Android api 29 的无脑跟流程。这次流程跟踪是activity冷启动,也就是相当于一个A端APP通过intent启动另外一个B端APP的首次启动流程。
2023-03-22 17:00:24
547

原创 Android 使用ffmpeg软编码 将摄像头采集视频编码成视频文件
Android 适用ffmpeg软编码 将摄像头采集视频编码成视频文件。这次代码实现的是视频采集的功能,Android 通过jni 调用ffmpeg 编码yuv数据变成视频文件。先上代码://编码器上下文保存的实体struct EnCodeBean { FILE *f; AVFrame *frame; AVPacket *pkt; AVCodecContext *c = NULL; int width=0; int height=0;};EnC
2021-08-23 19:30:12
1160

原创 android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议
最近做了一个支持onvif标准的摄像头管理程序,主要就是在局域网中通过程序控制摄像头获取摄像头视频流分发给广域网中的客户端设备;这里面用了onvif协议相关知识和ffmpeg视频流处理的相关知识。onvif相关的以后有机会再分享,今天主要是把android ffmpeg相关的东西分享一下。视频播放流程:解封装:常见封装格式有mp4、3gp、AVI等,这些封装格式包含了音视频流相关信息。每种封装格式都有自己的规则那么解封装就是按照规则分离出音视频数据。例如:mp4格式MP4(MPEG-4 Par
2020-09-11 16:02:03
1698
2

原创 opencv features2d对象识别
对象识别代码: const Ptr<AKAZE> &detetor = AKAZE::create(); vector<KeyPoint> oneKeyPoint; vector<KeyPoint> twoKeyPoint; Mat oneDes, twoDes; //角点查找和特征向量计算描述 detetor->detectAndCompute(oneMat,
2020-08-11 11:06:49
866

原创 android 插件式apk换肤 字体大小切换 框架ThemeManger
由于公司需要使用换肤功能,市面上一些框架代码都是比较低版本的,而且有些功能不能够满足,所以就自己写了一款基于apk插件式无刷新换肤框架-CXThemeManger ,代码版本使用 android api 28 开发。CXThemeManager 特点和功能 支持apk插件式换肤 支持属性替换 更新主题不需要刷新 支持扩展替换属性 支持字体大小切换 最低兼容...
2018-07-19 14:35:45
1119

原创 android架构设计之插件化、组件化
原文地址:http://blog.csdn.net/mhhyoucom/article/details/79000072 如今移动app市场已经是百花齐放,其中有不乏有很多大型公司、巨型公司都是通过app创业发展起来的;app类型更加丰富,有电子商务、有视频、有社交、有工具等等,基本上涵盖了各行各业每个角落,为了更加具有竞争力app不仅功能上有创性,内容也更加多元化,更加饱满,所以出现了巨大的工...
2018-01-08 10:21:50
40048
12

原创 《android framework常用api源码分析》之Activity启动流程
Activity的启动流程是一个源码分析非常重要的一个知识点,其实通过这篇学习你可以对android内部源码有个大致的了解,应为他耐括基本上最重要的几处只是,有binder机制、handler机制、antivity strack、context等重要内容。Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder
2017-12-14 12:03:20
1884

原创 Android插件化框架SpeedTools
插件化这个词在移动开发当中已经被提了很久了,市场上插件化框架也是多如牛毛,但是现在插件化更多是用在Android端,iOS端估计没戏了,因为苹果公司开始在限制这种app上架。其实iOS在现在插件化Android以后也会限制,至少已经开有动作了,例如resource对象创建在Android n之后进入了废弃的行业。插件化其实如果对权限没有限制他就是病毒,你想想如果你的app可
2017-05-18 15:24:41
580
原创 adb调试系统app
要通过 adb 替换 systemui app 来测试新功能,你需要首先确保你的设备已经获取了 root 权限,因为 systemui app 是系统级别的应用,替换它需要 root 权限。替换 SystemUI 应用:首先,你需要将你的新 SystemUI APK 文件推送到你的设备上。连接你的设备:使用 USB 线将你的设备连接到你的电脑,并确保你的电脑已经安装了 adb 工具。重启你的设备:在 adb shell 中,输入 reboot 命令来重启你的设备。
2023-10-21 14:30:30
431
原创 android pcm播放器:有进度条同步、快进、快退、倍速功能
采样率:PCM 文件中的音频数据以一定的采样率(Samples Per Second,通常以Hz表示)进行采样。位深度:PCM 数据以一定的位深度来表示每个样本的值,通常以位数表示。较高的位深度可以提供更好的音频质量,因为它可以更准确地表示音频振幅,但也会占用更多的存储空间。总之,PCM 是一种直观的音频编码格式,它以原始的数字形式表示音频数据,没有压缩,因此在需要高音质的应用中很常见,如音乐制作和专业音频处理。PCM(脉冲编码调制)是一种常见的数字音频编码格式,它代表原始音频数据的一种无损编码方式。
2023-09-18 17:52:20
499
原创 android audiotrack
AudioTrack 是 Android 中用于音频播放的类,其主要作用是允许你将音频数据传输到设备的音频输出,以进行音频播放。音频效果处理:AudioTrack 可以与音频效果处理库一起使用,例如 Android 提供的音频效果处理器或自定义效果处理器。这样,你可以实现音频均衡、重低音、混响等效果。实时音频传输:你可以使用 AudioTrack 来实现实时音频传输,如音频聊天、语音会议等应用。音频数据播放控制:AudioTrack 允许你控制音频播放的速度、音量、平衡等参数,以满足不同场景的需求。
2023-09-16 10:52:44
356
原创 android AudioRecord
AudioRecord是Android中用于音频录制的类,它的主要作用是捕获来自设备麦克风或其他音频源的音频数据,并将其保存为PCM格式的音频流,以供后续处理或存储。音频录制:AudioRecord可以用于录制来自麦克风、耳机麦克风或其他音频输入源的音频。实时音频处理:你可以将录制的音频数据传递给其他音频处理库或自定义算法,以进行实时音频处理,如降噪、回声消除、音频效果等。声音分析:通过捕获音频数据,你可以进行声音分析,如检测音频的频谱、音量、音调等特征,用于声音处理和分析应用。
2023-09-16 10:50:17
351
原创 android frida
Frida 是一个用于动态分析、调试和修改 Android 应用程序的强大工具。它的主要作用包括:代码注入和Hooking: Frida 允许您在运行时修改和监视应用程序的行为。您可以通过Frida注入JavaScript代码到目标应用程序中,然后使用该代码来Hook(钩住)并修改应用程序的函数和方法。这对于进行应用程序的反调试、破解或逆向工程非常有用。动态分析: Frida 提供了实时访问目标应用程序的内存和运行状态的能力。这使得您可以在应用程序运行时查看和修改内存中的数据,以进行调试和分析。
2023-08-22 16:05:08
378
原创 android 屏幕适配(亲测最兼容方便)
1、设置屏幕固定尺寸适配,例如适配1280x720,只适合少量固定屏幕的设备。在程序中调用makesize 就可以在app file 目录中得到标尺。3、通过密度值px转dp来适配,方便兼容,基本准确。2、百分比布局,开发中多了很多代码。
2023-08-16 10:05:49
192
原创 android jetpack room 数据库工具使用
创建实体类:创建一个用@Entity注解的类来表示数据库中的表,其中每个字段都应该用@ColumnInfo注解进行注释。创建数据库:创建一个继承自RoomDatabase的抽象类,并在其中声明数据库的实例和具体的DAO接口。创建DAO接口:创建一个带有对数据库执行操作的接口。使用@Dao注解标记该接口,使用@Query、@Insert、@Update和@Delete等注解定义具体的操作。初始化数据库:在您的应用程序中的某个地方,通过调用Room.databaseBuilder()方法来构建数据库的实例。
2023-08-11 10:45:42
502
原创 android webview 显示灰度网页
这样就可以在WebView中显示灰度网页了。根据系统版本的不同,使用了不同的滤镜方法来实现灰度效果。请注意,这种方法可能会影响WebView的性能和渲染速度,因此请确保在使用之前进行足够的测试。使用的原理两种方式,一种使用画笔,一种是js css注入。都能够实现黑白色灰度网页。
2023-08-10 13:49:19
643
原创 Android Navigation 导航切换fragment用法
现在,您可以在您的代码中使用导航控制器来进行导航。例如,在Fragment中使用findNavController()方法获取导航控制器,并使用navigate()方法导航到其他Fragment。这样就可以通过使用导航组件实现在Fragment之间的导航了。您可以根据自己的需求在导航图中定义多个Fragment,以及在代码中设置不同的导航操作。在你的res目录下的navigation文件夹中创建一个nav_graph.xml文件,并定义您的导航图。在您的Activity中,设置导航控制器并处理导航事件。
2023-08-10 13:45:23
817
原创 android nv21数据用mediacodec编解码
上述代码中的变量和参数需要根据你的实际情况进行调整。此外,NV21 格式的数据需要根据具体需要进行分割和处理传入编码器和解码器。
2023-08-07 11:23:35
573
原创 给apk手动签名
jarsigner -verbose -keystore 签名文件.jks -storepass 密码 -keypass 密码 需要签名的应用.apk 别名。
2023-08-05 10:06:30
51
原创 android adb模仿遥控器上下左右等操作常用命令
通过运行这些命令,ADB将会在已连接的设备上调整音量大小。请确保设备已连接并且ADB已正确配置。请注意,不同的设备厂商可能会有不同的键盘代码,所以某些命令可能不能适用于所有设备。要使用ADB模拟遥控器动作,你需要连接一台安卓设备并在计算机上安装ADB(Android Debug Bridge)工具。通过运行这些命令,ADB将会在已连接的设备上模拟遥控器动作。请确保设备已连接并且ADB已正确配置。
2023-07-24 18:04:29
527
原创 Android使用OpenCV来实现bitmap独立设置每个圆角
Android使用OpenCV来实现bitmap独立设置每个圆角,关于opencv集成请参考我的其他文章,这里方便起见已经封装成java方法供大家调用:代码如下: public static Bitmap drawCircleRadius(int w, int h, int circleR, boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight, Bitmap bitmap) { if
2021-08-24 10:28:43
268
原创 flutter CustomMultiChildLayout 自定义控件实现图片瀑布流效果
CustomMultiChildLayout允许我们通过delegate自定义子组件的布局约束、位置以及父组件的大小(父组件大小不依赖于子组件的情况下),和CustomSingleChildLayout基本一样,区别就是CustomSingleChildLayout包裹一个子控件,而CustomMultiChildLayout包裹多个。接下来我会用CustomMultiChildLayout 控件实现一个图片瀑布流墙的效果,效果如下:图片瀑布流 imgCustomMultiChildLayout控件
2021-06-09 14:21:05
671
2
原创 Android camera2 api 相机 预览 拍照
从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2 api。现在主流机型基本上都在5.0,所以可以完全不用考虑camera1 api 兼容问题。Camera1 那寥寥无几的 API 和极差的灵活性早已不能满足日益复杂的相机功能开发。Camera2 的出现给相机应用程序带来了巨大的变革,因为它的目的是为了给应用层提供更多的相机控制权限,从而构建出更高质量的相机应用程序。camera2 api 优势:1、可以获取更多的帧(预览/拍照)信息以及手动控制每一帧的参数2、
2021-06-08 16:51:14
1059
3
原创 Android 使用JS注入获取网页视频链接
Android 使用JS注入获取网页视频链接思路:1、通过js注入获取整个网页html。2、通过jsoup分析获取video播放器的数据源。一、开启webviewjs功能,注入js回调mWebView.addJavascriptInterface(new LocalAndroidObj(), "local_android_obj");// js 注入回调二、通过jsoup 分析网页,使用方法类似jQuery语法。 private class LocalAndroidObj{
2021-02-24 09:37:21
1929
1
原创 通过图片哈希值计算汉明距离来匹配人脸
opencv通过图片哈希值计算汉明距离来匹配人脸string xmlPath = "/data/data/org.opencv.samples.tutorial2/cache/lbpcascade_frontalface.xml";//识别并截取人脸Mat detectAndDisplay(Mat image) { CascadeClassifier ccf; ccf.load(xmlPath); vector<Rect> faces; Mat gray;
2020-08-13 15:39:33
940
原创 opencv中使用Caffe框架
Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel
2020-08-13 10:52:50
668
原创 opencv PCA主成分分析的使用
简介主成分分析(PCA)是提取数据集最重要特征的统计程序。PCA(Principal Components Analysis,中文名叫主成分分析,是数据降维很常用的算法。按照书上的说法是:寻找最小均方意义下,最能代表原始数据的投影方法。PCA的一个经典应用就是人脸识别,感兴趣的可以在网上搜eigenface。PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就可以是降维的过程。使用//绘制向量轴void
2020-08-12 14:20:46
1092
原创 SVM 简介和使用
简介Support Vector Machines(SVM)是由分离超平面正式定义的鉴别分类器。如何计算最佳超平面?我们来介绍用于定义超平面的符号:SVM简介其中β被称为权重向量,而β0称为偏差。也可以看看这和超平面更深入的描述,你可以在4.5节(发现分隔条件超平面书的):统计学习的要素通过 T. Hastie, R. Tibshirani和JH Friedman([172])。通过缩放β和可以以无限数量的不同方式表示最优超平面β0。作为惯例,在超平面的所有可能的表示中,选择的是SVM其
2020-08-12 10:32:02
962
原创 k-Nearest 最近邻分类算法
概述kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小;主要考虑因素:距离与相似度。opencv中使用 Mat img = oneMat; Mat gray;
2020-08-12 09:14:40
1030
原创 opencv_createsamples和opencv_traincascade命令
opencv_createsamples和opencv_traincascade命令opencv_traincascade -data dstBuild -vec new_vec.vec -bg sample_neg.dat -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 100 -numNeg 700 -w 20 -h 20 -mode ALL -precalcValBufSize 1024 -precalcIdx
2020-08-10 17:47:22
448
原创 goodFeaturesToTrack和cornerSubPix使用
goodFeaturesToTrack和cornerSubPix使用?函数说明void cv::goodFeaturesToTrack(cv::InputArray image, // 输入图像(CV_8UC1 CV_32FC1)cv::OutputArray corners, // 输出角点vectorint maxCorners, // 最大角点数目double qualityLevel, // 质量水平系数(小于1.0的正数,一般在0.01-0.1之间)double minDistanc
2020-08-04 17:36:07
343
原创 cornerEigenValsAndVecs和cornerMinEigenVal角点检测
概念cornerEigenValsAndVecs和cornerMinEigenVal用于焦点检测cornerMinEigenVal函数作用计算梯度矩阵的最小特征值,用于角点检测void cornerMinEigenVal( InputArray src, OutputArray dst,int blockSize, int ksize = 3,int borderType = BORDER_DEFAULT );CornerEigenValsAndVecs作用计算图像块的特征值和特征向量,用于
2020-08-04 15:55:50
553
原创 opencv 相机标定获取去畸变矫正图像
opencv 相机标定获取去畸变图像 private void calcBoardCornerPositions(Mat corners,int mCornersSize, Size mPatternSize,double mSquareSize) { final int cn = 3; float positions[] = new float[mCornersSize * cn]; for (int i = 0; i < mPatternS
2020-07-29 13:49:42
1205
原创 opencv 棋盘查找findChessboardCorners函数使用
opencv 棋盘查找findChessboardCorners函数使用 Size size=new Size(6,9); MatOfPoint2f pos=new MatOfPoint2f(); boolean chessboardCorners = Calib3d.findChessboardCorners(mat, size, pos, Calib3d.CALIB_CB_ADAPTIVE_THRESH|Calib3d.CALIB_CB_NORMALIZE
2020-07-24 14:22:41
1532
1
exoplayer 编译出来的ffmpeg扩展库aar
2023-07-24
FFmpegVideoPlayer.rar
2020-09-11
android 插件式无刷新换肤和字体大小切换 兼容android 8.1
2018-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人