- 博客(288)
- 资源 (2)
- 收藏
- 关注
原创 Android 10 Q版本 activity 冷启动流程
由于工作原因需要了解activity启动流程,在网上已经有很多相关文章,不过为了记忆深刻还是自己无脑跑一遍流程,接下来是Android 10 Q Android api 29 的无脑跟流程。这次流程跟踪是activity冷启动,也就是相当于一个A端APP通过intent启动另外一个B端APP的首次启动流程。
2023-03-22 17:00:24 740
原创 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 1410 2
原创 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 2235 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 960
原创 android 插件式apk换肤 字体大小切换 框架ThemeManger
由于公司需要使用换肤功能,市面上一些框架代码都是比较低版本的,而且有些功能不能够满足,所以就自己写了一款基于apk插件式无刷新换肤框架-CXThemeManger ,代码版本使用 android api 28 开发。CXThemeManager 特点和功能 支持apk插件式换肤 支持属性替换 更新主题不需要刷新 支持扩展替换属性 支持字体大小切换 最低兼容...
2018-07-19 14:35:45 1255
原创 android架构设计之插件化、组件化
原文地址:http://blog.csdn.net/mhhyoucom/article/details/79000072 如今移动app市场已经是百花齐放,其中有不乏有很多大型公司、巨型公司都是通过app创业发展起来的;app类型更加丰富,有电子商务、有视频、有社交、有工具等等,基本上涵盖了各行各业每个角落,为了更加具有竞争力app不仅功能上有创性,内容也更加多元化,更加饱满,所以出现了巨大的工...
2018-01-08 10:21:50 40705 12
原创 《android framework常用api源码分析》之Activity启动流程
Activity的启动流程是一个源码分析非常重要的一个知识点,其实通过这篇学习你可以对android内部源码有个大致的了解,应为他耐括基本上最重要的几处只是,有binder机制、handler机制、antivity strack、context等重要内容。Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder
2017-12-14 12:03:20 1952
原创 Android插件化框架SpeedTools
插件化这个词在移动开发当中已经被提了很久了,市场上插件化框架也是多如牛毛,但是现在插件化更多是用在Android端,iOS端估计没戏了,因为苹果公司开始在限制这种app上架。其实iOS在现在插件化Android以后也会限制,至少已经开有动作了,例如resource对象创建在Android n之后进入了废弃的行业。插件化其实如果对权限没有限制他就是病毒,你想想如果你的app可
2017-05-18 15:24:41 625
原创 Android Compose实现一个文字跑马灯效果控件
传统布局动画优势:兼容性好、成熟稳定、灵活性高。劣势:代码复杂、性能问题、维护成本高。Jetpack Compose 动画优势:声明式编程、性能优化、集成性好、易用性强、可测试性高。劣势:兼容性限制、学习曲线陡峭、社区支持相对较少。选择哪种动画方案取决于你的项目需求、目标设备和团队的技术栈。如果你的项目需要广泛的兼容性和复杂的动画效果,传统布局动画可能是更好的选择。如果你追求代码简洁、高性能和易用性,Jetpack Compose 动画则是更佳的选择。) {
2024-11-22 17:08:29 982
原创 Android Jetpack Compose 现有Java老项目集成使用compose开发
有很多老的项目都没有使用Compose 布局;那么想进行项目重构就需要集成Compose开发能力;本文就是记录如何将一个普通Java工程集成Compose开发能力。!!Compose 是 Jetpack Compose 的简称,它是一个用于构建 Android 用户界面的现代工具包。它使用声明式编程范式,允许开发者通过描述 UI 的外观和行为来创建界面,而不是像传统的 Android 开发那样通过命令式地操作视图。在 Compose 中,UI 是由一系列函数构建的。
2024-10-28 16:32:58 1238 1
原创 使用 MediaCodec 在 Android 上进行硬解码
需要注意的是,硬解码的支持和性能可能因设备、Android 版本和视频编码格式的不同而有所差异。确保你的设备支持硬解码,并且适当处理解码器的输入和输出缓冲区。在上述代码中,你需要根据解码器输出的数据格式进行相应的转换,以获取 RGBA 数据。具体的转换流程和代码取决于解码器输出的数据格式和你的需求。
2024-04-24 09:15:37 607 1
原创 android wifi直连 wifip2pmanager
Android WiFi 直连(Wi-Fi Direct,也称为Wi-Fi P2P)是一种让两台或多台设备通过Wi-Fi技术直接进行点对点连接的技术,无需借助传统的无线路由器或接入点。在这个组中,一台设备会被选为“组主人”(Group Owner,GO),相当于小型网络的接入点,负责管理组内的连接和数据传输。设备发现:启用Wi-Fi Direct功能的设备可以通过广播信号搜索和发现附近的其他支持Wi-Fi Direct的设备。连接请求:用户在设备列表中选择要连接的目标设备后,发起连接请求。
2024-04-15 15:34:59 1004
原创 笔记 socket长连接工具类
框架与库支持: 虽然可以直接使用Java或Kotlin的原生Socket类来实现长连接,但为了简化开发和处理复杂性,往往会选择使用成熟的网络库或框架,如Apache MINA、Netty、OkHttp(配合WebSocket或HTTP/2的长轮询)等。连接持久性: 在长连接模式下,客户端与服务器在首次成功建立连接后,不会立即关闭连接,而是保持其有效直至应用程序明确关闭它,或者由于网络故障、超时或其他异常情况导致连接中断。这种持久连接减少了建立新连接所需的握手过程,有助于降低延迟,提高数据传输效率。
2024-03-27 15:42:59 350
原创 Android 长按网页选中文字的弹出菜单的自定义
在Android WebView中定制长按网页选择文字的菜单,需要使用到Android的ActionMode和ActionMode.Callback。创建一个自定义的WebView类,重写startActionMode方法。如果想定制Android 长按网页选中文字的弹出菜单;
2024-01-24 11:45:38 1522
原创 adb调试系统app
要通过 adb 替换 systemui app 来测试新功能,你需要首先确保你的设备已经获取了 root 权限,因为 systemui app 是系统级别的应用,替换它需要 root 权限。替换 SystemUI 应用:首先,你需要将你的新 SystemUI APK 文件推送到你的设备上。连接你的设备:使用 USB 线将你的设备连接到你的电脑,并确保你的电脑已经安装了 adb 工具。重启你的设备:在 adb shell 中,输入 reboot 命令来重启你的设备。
2023-10-21 14:30:30 761
原创 android pcm播放器:有进度条同步、快进、快退、倍速功能
采样率:PCM 文件中的音频数据以一定的采样率(Samples Per Second,通常以Hz表示)进行采样。位深度:PCM 数据以一定的位深度来表示每个样本的值,通常以位数表示。较高的位深度可以提供更好的音频质量,因为它可以更准确地表示音频振幅,但也会占用更多的存储空间。总之,PCM 是一种直观的音频编码格式,它以原始的数字形式表示音频数据,没有压缩,因此在需要高音质的应用中很常见,如音乐制作和专业音频处理。PCM(脉冲编码调制)是一种常见的数字音频编码格式,它代表原始音频数据的一种无损编码方式。
2023-09-18 17:52:20 1046
原创 android audiotrack
AudioTrack 是 Android 中用于音频播放的类,其主要作用是允许你将音频数据传输到设备的音频输出,以进行音频播放。音频效果处理:AudioTrack 可以与音频效果处理库一起使用,例如 Android 提供的音频效果处理器或自定义效果处理器。这样,你可以实现音频均衡、重低音、混响等效果。实时音频传输:你可以使用 AudioTrack 来实现实时音频传输,如音频聊天、语音会议等应用。音频数据播放控制:AudioTrack 允许你控制音频播放的速度、音量、平衡等参数,以满足不同场景的需求。
2023-09-16 10:52:44 541
原创 android AudioRecord
AudioRecord是Android中用于音频录制的类,它的主要作用是捕获来自设备麦克风或其他音频源的音频数据,并将其保存为PCM格式的音频流,以供后续处理或存储。音频录制:AudioRecord可以用于录制来自麦克风、耳机麦克风或其他音频输入源的音频。实时音频处理:你可以将录制的音频数据传递给其他音频处理库或自定义算法,以进行实时音频处理,如降噪、回声消除、音频效果等。声音分析:通过捕获音频数据,你可以进行声音分析,如检测音频的频谱、音量、音调等特征,用于声音处理和分析应用。
2023-09-16 10:50:17 461
原创 android frida
Frida 是一个用于动态分析、调试和修改 Android 应用程序的强大工具。它的主要作用包括:代码注入和Hooking: Frida 允许您在运行时修改和监视应用程序的行为。您可以通过Frida注入JavaScript代码到目标应用程序中,然后使用该代码来Hook(钩住)并修改应用程序的函数和方法。这对于进行应用程序的反调试、破解或逆向工程非常有用。动态分析: Frida 提供了实时访问目标应用程序的内存和运行状态的能力。这使得您可以在应用程序运行时查看和修改内存中的数据,以进行调试和分析。
2023-08-22 16:05:08 613
原创 android 屏幕适配(亲测最兼容方便)
1、设置屏幕固定尺寸适配,例如适配1280x720,只适合少量固定屏幕的设备。在程序中调用makesize 就可以在app file 目录中得到标尺。3、通过密度值px转dp来适配,方便兼容,基本准确。2、百分比布局,开发中多了很多代码。
2023-08-16 10:05:49 395
原创 android jetpack room 数据库工具使用
创建实体类:创建一个用@Entity注解的类来表示数据库中的表,其中每个字段都应该用@ColumnInfo注解进行注释。创建数据库:创建一个继承自RoomDatabase的抽象类,并在其中声明数据库的实例和具体的DAO接口。创建DAO接口:创建一个带有对数据库执行操作的接口。使用@Dao注解标记该接口,使用@Query、@Insert、@Update和@Delete等注解定义具体的操作。初始化数据库:在您的应用程序中的某个地方,通过调用Room.databaseBuilder()方法来构建数据库的实例。
2023-08-11 10:45:42 566
原创 android webview 显示灰度网页
这样就可以在WebView中显示灰度网页了。根据系统版本的不同,使用了不同的滤镜方法来实现灰度效果。请注意,这种方法可能会影响WebView的性能和渲染速度,因此请确保在使用之前进行足够的测试。使用的原理两种方式,一种使用画笔,一种是js css注入。都能够实现黑白色灰度网页。
2023-08-10 13:49:19 771
原创 Android Navigation 导航切换fragment用法
现在,您可以在您的代码中使用导航控制器来进行导航。例如,在Fragment中使用findNavController()方法获取导航控制器,并使用navigate()方法导航到其他Fragment。这样就可以通过使用导航组件实现在Fragment之间的导航了。您可以根据自己的需求在导航图中定义多个Fragment,以及在代码中设置不同的导航操作。在你的res目录下的navigation文件夹中创建一个nav_graph.xml文件,并定义您的导航图。在您的Activity中,设置导航控制器并处理导航事件。
2023-08-10 13:45:23 1373
原创 android nv21数据用mediacodec编解码
上述代码中的变量和参数需要根据你的实际情况进行调整。此外,NV21 格式的数据需要根据具体需要进行分割和处理传入编码器和解码器。
2023-08-07 11:23:35 980 1
原创 给apk手动签名
jarsigner -verbose -keystore 签名文件.jks -storepass 密码 -keypass 密码 需要签名的应用.apk 别名。
2023-08-05 10:06:30 186
原创 android adb模仿遥控器上下左右等操作常用命令
通过运行这些命令,ADB将会在已连接的设备上调整音量大小。请确保设备已连接并且ADB已正确配置。请注意,不同的设备厂商可能会有不同的键盘代码,所以某些命令可能不能适用于所有设备。要使用ADB模拟遥控器动作,你需要连接一台安卓设备并在计算机上安装ADB(Android Debug Bridge)工具。通过运行这些命令,ADB将会在已连接的设备上模拟遥控器动作。请确保设备已连接并且ADB已正确配置。
2023-07-24 18:04:29 1874
原创 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 317
原创 flutter CustomMultiChildLayout 自定义控件实现图片瀑布流效果
CustomMultiChildLayout允许我们通过delegate自定义子组件的布局约束、位置以及父组件的大小(父组件大小不依赖于子组件的情况下),和CustomSingleChildLayout基本一样,区别就是CustomSingleChildLayout包裹一个子控件,而CustomMultiChildLayout包裹多个。接下来我会用CustomMultiChildLayout 控件实现一个图片瀑布流墙的效果,效果如下:图片瀑布流 imgCustomMultiChildLayout控件
2021-06-09 14:21:05 783 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 1293 3
media3 ExoPlayer 扩展解码库aar decoder-vp9、decoder-av1、decoder-ffmpeg
2024-10-18
exoplayer 编译出来的ffmpeg扩展库aar
2023-07-24
FFmpegVideoPlayer.rar
2020-09-11
android 插件式无刷新换肤和字体大小切换 兼容android 8.1
2018-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人