自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android GB∕T 19056-2021 汽车行驶记录仪-定位性能测试

Android GB∕T 19056-2021 汽车行驶记录仪-定位性能测试 (android版本)

2022-12-22 21:11:43 1651 5

原创 Android 编译IJKPlayer源码

目前在做音视频相关的工作,在项目中用到了播放相关的问题,使用的框架是GSYVideoPlayer,使用它的原因是可以很方便的切换播放器内核,系统内核、IJKPlayer内核亦或是exo2Player内核,视频播放的格式不统一,使用这种方式能够更大程度的方便开发工作。

2022-04-27 15:00:17 2260

原创 GSYVideoPlayer 播放m3u8格式视频遇到的坑

GSYVideoPlayer 播放m3u8格式视频遇到的坑,ijkplayer内核会对重定向的地址做解析

2022-04-07 10:13:27 4480

原创 Android 使用singleInstance启动Activity遇到的坑

Android 使用singleInstance启动Activity遇到的坑

2022-02-18 17:38:31 2500

原创 安卓逆向笔记-IDA动态调试so

年底了,在进行技术梳理,发现对于动态调试so方面还不太会,每年都说要学习,结果两年了还没学会,近期也是进行了补课,做一个笔记记录一下。

2022-01-12 16:55:46 4653

原创 Kotlin 基础学习笔记(三)

1. 面向对象 1.1 创建一个类 + 构造方法说明 class TestCons constructor() { } kotlin采用constructor 关键字来代表构造方法,其中的 constructor 可以省略,但是如果加上权限修饰符就不能省略了: class TestCons constructor() { } // 有参构造 class TestCons constructor(age:Int, name:String) { } // 如果加上权限 private 修饰...

2021-08-06 18:05:30 611

原创 Kotlin 基础学习笔记(二)

1.函数 和 函数表达式 1.1 函数 fun add(x : Int, y : Int) : Int { return x + y } ==>如果函数语句只有一句,变形: fun add(x: Int, y: Int): Int = x + y 1.2 函数表达式 ==>将一个函数表达式赋值给一个变量,然后调用: // 将一个函数表达式 赋 给了i var i = { x: Int, y: Int -> x + y } // 调用声明好的 函数表达式.

2021-07-26 17:01:16 299

原创 Kotlin 基础学习笔记(一)

1. Kotlin 语言特点 var 类型推断 var 显示指定数据类型 val 声明常量 2.Kotlin 函数加强 2.1 函数格式 fun 函数名(参数名:参数类型):返回值类型 { } 3.字符串模板 fun writeDairy(placeName: String): String { var story = """ 你好,我要去 ${placeName...

2021-07-22 10:31:59 576 2

原创 Android 关于模拟点击和Hook框架的杂谈

1. 背景 就跟我们以前玩页游挂机一样,Android端也有游戏,而且样式繁多,如果重复的操作每次都要自己重复一遍操作,那不得烦死,所以就有了这篇文章,本文仅探讨方案,大家可以尝试。而且现在的模拟器(比如MuMu,Nox)都提供录制脚本,然后在重复执行的功能,也很方便。 2. 技术选型 从技术这方便看,大概需要三种技术,Android的模拟点击技术、Android设备支撑以及便于切换设备参数时用到的Hook框架。 2.1Android的模拟点击技术 2.1.1 使用模拟器自带的录...

2021-07-01 10:30:09 1437

原创 Android tv应用 Recylerview 删除元素,焦点乱跳

1. 背景 开发tv应用时,需要用到焦点,如果此时在Recylerview中删除元素,然后刷新列表,会导致焦点跳出Recylerview之外

2021-06-17 20:03:20 418 1

原创 Android 优化 透明Activity展示loading关闭时闪烁

1. 背景 之前设计了一个支付SDK,因为需要展示loading以及支付页面,也为了不需要用户传入Activity引用,设计了一个透明得Activity,但是发现在实践得时候,关闭这个Activity会有闪烁一下的问题。本来觉得并不是什么大问题,产品硬是要说这是个bug,这是强行让我涨姿势啊,太难了,想了想还是把手中的扳????给放下了。 2. 现实 2.1 Activity采用对话框样式 <style name="ActivityDialogStyle" parent="@an

2021-05-19 15:19:28 1281 1

原创 Android TV使用gsyVideoPlayer快进操作视频会回退

1. 背景 今天TV产品优化,发现一个难以修改的问题,使用gsyVideoPlayer的时候,切换的是系统内核播放视频,然后遥控器在控制快进快退的时候会有进度条回退的问题,这对用户就不友好了啊。 2. 原因探究 调查了之后发现,是因为关键帧的问题,快进的时候是按照视频的关键帧来进行快进的,如果视频背压缩的过于严重会导致视频的关键帧比较少,那么就会出现以下这种情况: 现在播放到8秒,你要快进到18秒,但是视频的关键帧在第15秒,那么进度条就会从18退到15,因为进度条是按照真实的视频进...

2021-05-19 12:03:41 3158 4

原创 Android 我的第一个Jetpack Compose应用

目录 1. 背景 2. Jetpack Compose 是什么? 3. 开始前的准备 4. 创建DEMO 4.1 New Project 4.2 项目配置 5. 项目整体变化 5.1 布局部分 5.2依赖的变化 5.3包体大小的变化 5.4 代码编写的变化 6. 遇到的问题 6.1 EditText 数据不会变化 6.2 导入其他人写的一个项目,在mumu模拟器报错 "Snapshot is not open" 7. 资料 1. 背景 最近看了很多郭神公众号推荐...

2021-03-23 10:54:48 4490 13

原创 Android ImageView.setImageResource 出现 栈溢出问题 StackOverflowError

1. 背景 今天在测试应用的时候出现一个问题,分析之后,我觉得特别奇怪,可以看下面的报错: E/AndroidRuntime(29778): java.lang.StackOverflowError E/AndroidRuntime(29778): at android.graphics.drawable.BitmapDrawable.computeBitmapSize(BitmapDrawable.java:189) E/AndroidRuntime(29778): at a...

2021-03-18 10:34:49 932

原创 Android 自定义View之MarqueeText,实现跑马灯效果

1. 背景 需要做一个跑马灯效果的文字展示,本方案更适用于开发机顶盒应用的同学们。 2. 需求 2.1 展示书籍的页面,文字过多的时候需要折叠 2.2 当焦点在此书籍上的时候,需要将折叠的文字滚动起来 3. 需求剖析 3.1 正常情况下使用跑马灯,只需要设置Textview的以下属性即可 android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scr...

2021-02-23 20:14:46 1871 5

原创 Android 面试笔记之Binder详解

Android 面试笔记之Binder详解 Binder 八问 1.为什么面试要问Biner? 1.1 Binder是什么? Activity, Service等组件都需要和AMS 进行交互,这些跨进程的通信都是 通过 Binder来完成的。 三种角度看待Binder: 机制:一种跨进程通信的机制 驱动:虚拟物理设备驱动 应用层:Binder是一个能发起通信的Java类 1.2 为什么要使用多进程? 1.2.1 因为虚拟机分配给各个进程的内存是有限制的,可以突破 内存限制 为什么现在的机器

2020-09-23 10:33:48 1566

原创 Android 面试笔记之Handler详解

Android 面试之Handler详解 Handler八个问题 1:一个线程有几个Handler? 可以有多个Handler 发送消息 2:一个线程有几个Looper?如何保证? 2.1: 只能有一个,在创建Handler的时候指定Looper,该Looper创建的线程,就是处理消息的线程 2.2:如何保证? 每一个线程 都有一个ThreadLocal ( 运用了HashMap),用来保存 线程的 状态,标志位等 上下文环境 (大量的key-value 键值对) 如何保证一个key,只有一个value

2020-09-23 10:11:38 651 1

原创 Android 适配7.0及以上的安装更新

近期准备给APP增加一个下载更新的功能,原以为很简单,自己测试也通过了,但是发给测试后,发现apk下载完成,安装的页面弹不出来,郁闷了。 原来的方法是这么写的: /** * android1.x-6.x * * @param path 文件的路径 */ public void startInstall(Context context, String path) { Intent install = new Inte...

2020-06-29 10:27:50 537

原创 Android 7.0 之 FileProvider运用:拍照获取头像并设置

FileProvider 是android 7.0 之后才有的一个东西,其目的也是加强管理碎片化严重的android文件夹,避免其内的应用随意使用手机的内存。 使用一个例子,拍照获取图片,并设置到ImageView中: 把大象放到冰箱需要几个步骤? 步骤一:打开相机: // 相机 public static final int CAMERA_REQUEST_CODE = 1004; SimpleDateFormat simpleDateFormat = new Si...

2020-05-14 18:12:46 2144

原创 Android Fragment 优化与切换

Fragment三个包 1.android.app.Fragment 2.android.app.v4.Fragment 向下兼容 3.androidx.fragment.app.Fragment Fragment 关键类 1.FragmentManager 碎片化的管理类 2.FragmentTransation 操作Fragment做一些事务 FragMent 切换方式 1.replace 会重新走生命周期 用的较少 2.show/...

2020-05-13 15:41:18 689

原创 Android APP启动优化知识点

APP启动优化 启动类型 1.冷启动 第一次开始 或是 重装启动 2.热启动 第二次或之后启动 3.温启动 退到后台,由于某些原因被杀死,但整体数据还保存 Shell命令 检测启动时间 1. shell命令 adb shell am start -S -W [packageName]/[packageName.MainActivity] 1. thisTime 最后一个Act的启动耗时 2. TotalTime 启动一连串...

2020-05-13 11:22:36 317

原创 Android 封装Okhttp3 + RxJava 工具类(包含下载)

参考链接:https://blog.csdn.net/fxjzzyo/article/details/78761373?utm_source=blogxgwz1 implementation 'com.squareup.okhttp3:okhttp:3.12.0' 同步请求: 需要自己处理,UI异步的更新,以及Thread的创建 package com.liboshuai.framework.manager; import android.content.Context; import.

2020-05-11 15:59:29 655

原创 Android adb安装后提示INSTALL_FAILED_TEST_ONLY

参考:https://blog.csdn.net/vfush/article/details/80320596 原因: Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnly="true" 解决:将此标签去掉即可,或者改为false

2020-05-08 18:11:42 327

原创 Android 笔记 沉浸式状态栏设置及效果说明

使用: implementation 'com.gyf.immersionbar:immersionbar:3.0.0' 常用方法: ImmersionBar.with(this) //.barColor(R.color.color_tab_normal) // 设置导航栏背景色 //.hideBar(BarHide.FLAG_HIDE_BAR) //隐藏状...

2020-05-08 17:18:41 789

原创 Android 倒计时(支持小时,分钟)

参考:https://www.jianshu.com/p/4e5c0d58c90c 1.背景 需要做一个考试时间的倒计时,自己也有想法,但还是不想重复造轮子,直到发现除了timer之外,android还有一个 CountDownTimer。 2.效果图 3.代码 package mvp.study.skymobile.com.testandroidmethod.vie...

2020-04-21 18:18:25 1900 3

原创 Android 常用时间工具类总结

1.背景 总会遇到各种各样的时间计算,或是时间millis与String的转换,或是将播放音乐,视频的时长转换成字符串的操作,至今也没找到一个称心如意的工具类,所以记录一下自己常用的,避免以后无头苍蝇一样的乱找。 2.代码 这是我以下固定格式的DateFormat,以及固定的常量 private static final DateFormat DEFAULT_FORMAT...

2020-04-20 11:49:08 820

原创 Android 设置TabLayout的下划线宽度

1.背景 由于最近需要实现一个功能,需要用到TabLayout作为标题,切换标题时,底下填充不同的frament。但是UI设计对下划线有要求,需要设置下划线的宽度和高度。最终实现的效果图如下: 2.TabLayout介绍 TabLayout大概分为三个时代,刚开始的时候: 2.1 TabLayout继承自LinearLayout,在android.widget包...

2020-04-17 17:12:24 1612

原创 Android 图片压缩并保存的方法

参考: 1.https://blog.csdn.net/pbm863521/article/details/74391787 2.https://www.jianshu.com/p/871f0c1f0006 1.背景: 最近一个项目的开发,需要用到相机拍照,裁剪,保存,上传图片到七牛云的操作,并在上传的过程中遇到了图片过大,服务器返回溢出的错误,难搞哦。在其中发现,...

2020-04-16 18:20:31 1138

原创 Android Toast改变文字大小颜色和显示位置

参考:https://www.cnblogs.com/dmrbell/p/11647945.html 不多说直接上代码,测试可用 // 修改Toast弹出的字体大小 Toast mToast = Toast.makeText(getApplicationContext(), getResources().getString(R.string.pay_succ), ...

2020-02-27 09:23:42 3634

原创 Android studio 打包报错:Could not find groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.12)

在app的build.gradle中的android标签添加如下代码块 lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the b...

2019-11-18 15:22:11 1283 2

原创 一个Android开发对JVM的认识

近期,博主的公司进行了一次JVM的分享,由于篇幅太大,分成了两次,每次差不多一个半小时,我一个Android开发,其实对于JVM的认识还处于小白,虽然那本《深入理解JVM》也看过很多次,但是每次都以失败告北,我想着无聊也是无聊,不如写一篇自己对JVM的认识,由于自己对手写比较钟爱,所以会以图片的形式将笔记上传。 我的理解方式比较奇怪,每次以问题的方式开始,会比较让我有求知欲。这里...

2019-10-18 16:38:45 607

原创 Android开发之ProgressBar及其style样式的使用

背景 很多时候要用到loading的展示,近期发现自己对于进度条的知识掌握的不是那么牢固,所以来进行一次复习。众所周知,进度条就是展示进度的;或者用来等待某些事件的完成,例如加载资源,下载资源等等。那么一个进度条应该如何写呢。 基本使用 首先在layout中定义控件 <ProgressBar android:id="@+id/ver_bann...

2019-09-11 15:57:23 5203

原创 使用AndroidStudio进行SDK开发

SDK就是软件开发工具包(SoftwareDevelopmentKit)的缩写,在开发app的过程中我们肯定不可避免的要用到第三方的开源工具包,比如熟悉的recyclerview、support-v4、okhttp等等。在AndroidStudio中我们可以使用这种: implementation 'com.android.support:recyclerview-v7:27.1....

2019-09-10 10:49:08 2350

原创 Android 实现应用程序前台和后台之间转换的监听的两种

android中会使用很多监听本应用是处于前台还是后台的场景,接下来我介绍两种,不需要权限申请的。 第一种:使用ActivityManager,获取手机应用的所有进程,筛选出自己本应用的,根据importance来判断是否处于后台。 /** * 判断当前程序是否在前台 * * @param context * @return */ public static bool...

2019-08-02 09:46:42 949

原创 xposed目前不兼容Android SDK版本 22 或处理器(armeadi-v7a)

最近测试,xposed,发现有出现: xposed目前不兼容Android SDK版本 22 或处理器(armeadi-v7a) 这种错误。 可尝试使用3.x版本的Installer

2019-07-31 15:49:50 9496

原创 Android项目混淆问题 Unknown verification type [48] in stack map frame

近期在打包Android工程的时候遇到了混淆问题,不混淆的情况下怎么样都是好的,混淆时候打包就有问题,报错如下: [2018-09-19 13:14:49 - zplugin] Caused by: java.lang.RuntimeException: Unknown verification type [48] in stack map frame [2018-09-19 13:14:49...

2018-09-25 16:50:47 586

原创 Androidstudio NDK Gradle3.0 以上使用外部工具的so编译之旅

近期在学习so相关的编程,发现每次写了新方法之后,还需要到相对应的java文件目录下执行一些java脚本,帮助我们生成在jni中会用到的一些C++的头文件。后来觉得每次这么写太麻烦,有没有简单点的处理办法呢,后来发现AndroidStudio有一个叫External Tools的东西,可以帮助我们实现。 1.首先,如果想要学习NDK的话,那么相关的NDK的环境肯定要先配置好的。如果你...

2018-07-15 16:36:22 871 2

原创 TransactionTooLargeException导致的Package manager has died源码分析

问题:try {         pakinfo = pm.getPackageInfo("com.tencent.mm", PackageManager.GET_ACTIVITIES); PLog.i("isWXCanPay pakinfo = " + pakinfo); if (pakinfo != null) { versionName = pakinfo.versionName.t...

2018-05-03 11:54:26 682

原创 算法导论 中文 第三版 第2-25章部分课后习题答案

由于最近在学习算法相关的东西,发现课后的习题没有答案,给我造成很大困扰,以下分享了从网上找到的答案链接: https://pan.baidu.com/s/1Vy2LjDxTOgYz5gdc0Cjrzg 密码: nijb...

2018-04-20 09:36:25 17335 7

原创 修改TortoiseSVN设置比较工具为BeyondCompare

    TortoiseSVN原有的比较工具,比较单一简单,在有些时候不那么容易看出来不同,特别是进行大量的文件对比时,尤为麻烦,今天发现,其实TortoiseSVN给我们提供了使用外部比较工具的接口,那么下面我们看下具体的设置。    首先进入TortoiseSVN的设置界面        接下来进入Diff Viewer的设置页面,将比较工具设置为外部的即可,如下图        使用后的效果...

2018-04-11 14:28:08 5767

ForegroundCallbacks.java

监听前后台应用是我们在移动开发中经常会用到的技术,谨以此跟大家做交流,谢谢

2019-08-02

ToastUtil.java

封装好的Toast工具类,支持字符串id,字符串以及指定Toast位置,方便快捷,用到的应该就这些了,改变文字大小的可以去看我的博客

2020-04-17

VC6CN开发工具

VC6.0,是微软的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。

2018-07-25

Android开发之ProgressBar及其style样式的使用.zip

Android开发之ProgressBar及其style样式的使用一些相关的代码,由于是用kotlin来实现的,所以可能会有不适应,不过代码大同小异,问题不大

2019-09-11

获取本地相册Demo

获取本地相册的Demo,进入页面直接展示相册中的内容,可再次基础上进行二次开发,很好用

2018-09-26

空空如也

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

TA关注的人

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