
android
文章平均质量分 61
P.TAN
每篇文章的开头是个人笔记,之后才是原文
展开
-
MPAndroidChart3 - pieChart(饼状图)
【代码】MPAndroidChart3 - pieChart(饼状图)原创 2023-08-10 15:02:16 · 421 阅读 · 0 评论 -
Android 动态设置ListView高度
在主Activity中使用此Utility类来更改listview高度.转载 2022-12-22 09:50:23 · 1452 阅读 · 0 评论 -
Android开发判断一个app应用是否在运行的方法
对于有 Service 的 App,大多会有多个 Service ,且有可能都是 :remote 类型的,这样在判断上需要进行一定的处理,这里根据 App 的 uid 来判断,避免在一些特殊的情况下判断存活不准确的问题。注意:App 的 uid 对于系统内置 App 而言不是唯一的,Android 内置的应用会有共用 uid 的情况。对于没有 Service 的 App,程序一旦切换到后台,可能很快就被回收了,这里使用。,这里实现获取指定包名的 APP 是否还在后台运行,判断 APP 是否存活。转载 2022-12-22 09:48:50 · 4136 阅读 · 0 评论 -
Android:gradle 插件版本号与gradle 版本号对应关系
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。# Gradle配置文件《项目根目录/gradle/wrapper/gradle-wrapper.properties》指定版本号(如:7.4.2)如果您的项目不受某个特定版本的 Android Studio 支持,仍然可以使用旧版 Android Studio 打开和更新您的项目。1、Android Gradle插件版本 与 Gradle版本关系。转载 2023-01-16 14:33:47 · 9092 阅读 · 0 评论 -
正则表达式-几种常见的密码校验
首先说一下密码必须是6~18位之间的数字,正则表达式为"^[0-9]{6,18}$",其中[0-9]表示必须是数字,{6,18}表示必须在6到18位之间,代码如下: 运行结果如下 接下来是密码中只能包含字母和数字的,正则表达式为:"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$"其中(?![0-9]+$)表示排除掉只有数字的组合,(?![a-zA-Z]+$)表示排除掉只有字母的组合,[0-9A-Za-z]表示必须有字母或数字,代码..转载 2021-12-31 17:18:48 · 19108 阅读 · 0 评论 -
Android 使用指令签名 v1 v2 v3 v4
jarsigner 只能进行v1jarsigner -keystore cloud.jks -signedjar cloud-apk-signed.apk cloud-release_20211021172621_sec.apk cloud参考文章:android使用命令行空包签名apksigner 可以进行v1 v2 v3 v4apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)apksign原创 2021-10-22 16:16:17 · 2680 阅读 · 0 评论 -
android studio 生成不签名
1.直接在android studio项目主界面,点击右侧Gradle视图2.找到自己需要打包的项目,展开你看到的树,在bulid项下面看到如下图标记的项,看名字应该能知道了,双击你想要的,就会生成指定的apk3.到自己项目路径thisproject\app\build\outputs\apk,这些就是你需要的了扩展文章:正确理解gradle assemble、assembleDebug、assembleRelease......原创 2021-10-14 10:37:01 · 3499 阅读 · 0 评论 -
Android 实现二维码扫描
https://www.jianshu.com/p/de972f5652dbAndroid中二维码扫描的最常用库是zxing和zbar,zxing项目地址为https://github.com/zxing/zxing,目前还有多个人在维护。zbar主要用C来写的,对速度有要求的可使用zbar,但目前没有在维护,项目地址:https://github.com/ZBar/ZBar。...转载 2021-01-07 17:17:04 · 17708 阅读 · 5 评论 -
将 Kotlin 添加到现有java应用
https://developer.android.google.cn/kotlin/add-kotlin转载 2020-11-09 09:52:12 · 184 阅读 · 0 评论 -
Kotlin声明常量(const)暨var 和 val 修饰的常量
https://www.jianshu.com/p/93b804e01d39转载 2020-11-06 10:26:32 · 802 阅读 · 0 评论 -
java多线程之守护线程(Daemon)
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚.转载 2020-11-05 10:55:25 · 669 阅读 · 0 评论 -
kotlin 线程基础
1.创建线程在 kotlin中,有三种方式可以创建线程1.继承Thread类object : Thread() { override fun run() { println("running from Thread: ${Thread.currentThread()}") }}.start()2.使用Runnable类初始化Thread对象。Thread({ println("running from lambda: ${Thread.currentThread转载 2020-11-05 10:15:59 · 1595 阅读 · 0 评论 -
kotlin集合(List)使用方法整理
https://blog.youkuaiyun.com/sunlit_6/article/details/80860810转载 2020-11-03 11:41:27 · 909 阅读 · 0 评论 -
Kotlin中使用静态变量和静态方法( companion object )
在日常开发过程中,静态变量和 静态方法 是我们常见的用法,Java中相信大家并不陌生了,那么在 Kotlin 中该如何使用呢?其实很简单,只需要一个将变量和方法包含在 companion object 域中即可,比如这样:classConstant{companionobject{//接口根地址constvalBASE_URL="http://xxxx.xxx.xxx/"//友盟constvalU...转载 2020-11-03 11:29:22 · 2943 阅读 · 1 评论 -
kotlin 小坑
一、找不到AppCompatActivityActivity突然报找不到AppCompatActivity ,把kotlin升级到最新版本原创 2020-10-10 10:50:11 · 259 阅读 · 0 评论 -
FFmpeg RTMP推(收)HEVC/H265流 (ijk)
ijk是用ffmpeg的,所以修改完后,ijk也可以支持https://blog.youkuaiyun.com/smallhujiu/article/details/81703434转载 2021-01-08 10:39:49 · 1625 阅读 · 0 评论 -
Gradle build 报错:Received status code 400 from server: Bad Request
全部错误是这样的:Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.2/gradle-3.1.2.pom'. Received status code 400 from server: Bad Request。遇到这个错了以后,我先后做了以下尝试:手动下载确认链接无误。 查询400 code,意思大概是客户端请求语法问题或者参数有问题。这样就很有可能是代理出问题了。转载 2020-08-18 10:32:24 · 2315 阅读 · 1 评论 -
Android自定义权限使用总结
https://www.jianshu.com/p/b60cde583237https://blog.youkuaiyun.com/u010410408/article/details/42082977转载 2021-01-08 10:45:36 · 2846 阅读 · 0 评论 -
Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $
https://blog.youkuaiyun.com/jian11058/article/details/87855828转载 2020-07-10 16:00:32 · 3159 阅读 · 0 评论 -
Android 获取系统信息(手机品牌、型号、安卓版本号等等)
String phoneInfo = "Product: " + android.os.Build.PRODUCT + "\n"; phoneInfo += "CPU_ABI: " + android.os.Build.CPU_ABI + "\n"; phoneInfo += "TAGS: " + android.os.Build.TAGS + "\n"; phoneInfo += "VERSION_CODES.BASE: " + android.os.Build.VERS...原创 2020-06-09 17:26:27 · 974 阅读 · 0 评论 -
Android Studio assets目录、raw目录
assets与res/raw不同assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件。Android还存在一种放置在res下的raw目录,该目录与assets目录不同。注意点:1、 assets目录不会被映射到R中,因此,资源无法通过R.id方式获取,必须要通过AssetManager进行操作与获取;res/raw目录下的资源会被映射到R中,可以通过getResource()方法获取资源。2、 多级目录:assets下可转载 2020-05-27 15:51:46 · 765 阅读 · 0 评论 -
FileUriExposedException exposed beyond app through Intent.getData()
没有加额外的笔记 ,请看原文:xx.apk exposed beyond app through Intent.getData()绝大多数国产Android App都会内置一个更新功能,也就是把新版本的APK放在服务器上,通过接口获取更新信息并下载,然后进行安装。虽然这种行为被Google严厉禁止,但身处这种环境下还是得妥协的。绝大多数的经验人士都知道以往我们在App内部安装新版本APK的时候,只需要使用非常简单的代码就能实现:Intent intent = new Intent();inte转载 2020-05-27 15:03:27 · 826 阅读 · 0 评论 -
FileProvider Android7.0 (文件共享,使用系统播放器打开视频等等)
本文整合了下面两文章1、FileProvider使用2、android7.0文件共享前言Android 7.0,提供了非常多的变化,必须要适配的就是去除项目中传递 file:// 类似格式的 Uri 了对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在应用外部公开 file:// URI , 如果一项包含文件 URI 的 intent 离开应用,则应用出现故障,并出现 FileUriExposedException 异常an转载 2020-05-27 14:57:33 · 18537 阅读 · 0 评论 -
DownLoad Manager 系统自带下载类 Jetpack
https://www.jianshu.com/p/a2f8591ab3e0原创 2020-05-09 15:05:17 · 1302 阅读 · 0 评论 -
KTX(相当于kotlin的简洁、快速使用的版本) Jetpack
KTX - 更简洁的开发Android介绍如果你已经在使用 Kotlin 开发 Android 了,相信你深深的体会到了 Kotlin 的简洁、高效。不止如此,Google 为了让开发者更好的利用 Kotlin 语言能力(例如扩展函数/属性、lambda、命名参数和参数默认值),特意推出了 Android KTX,它是一组 Kotlin 扩展程序,可以以更简洁、更愉悦、更惯用的方式使用 K...转载 2020-05-09 09:09:02 · 982 阅读 · 0 评论 -
Multidex 适配低端机型 Jetpack
原文:Android Multidex正确使用方式(你可能也会遇到的坑)适配机型?Multidex使用有很多坑,尽量将自己的APP去三方平台做云真机兼容性测试。如阿里移动测试、testin云测试等,推荐去云测试上去做真机调试,调试完有调试日志。...转载 2020-05-09 14:40:30 · 452 阅读 · 0 评论 -
WorkManager 后台任务管理 Jetpack
https://www.jianshu.com/p/de19752f159c转载 2020-05-08 10:34:21 · 985 阅读 · 0 评论 -
Lifycycle(AAC) 使用详解
Lifycycle 其实是用观察者模式实现的,当 Activity 生命周期变化的时候,通知相应的 Observers 即观察者代码很简单://1、继承 AppCompatActivity//2、订阅 状态变化 addObserverpublic class MainActivity extends AppCompatActivity { @Override pro...转载 2020-04-24 16:11:02 · 409 阅读 · 0 评论 -
Android Jetpack (AAC) (B)
浅谈 Android Architecture Components 使用和原理Android Architecture Components,简称:AACAAC 的核心是: Lifecycle, LiveData, ViewModel 以及 Room原创 2020-03-30 11:47:06 · 277 阅读 · 0 评论 -
Android源码解析-ViewModel
https://blog.youkuaiyun.com/wzy_1988/article/details/101518727转载 2020-03-27 09:26:21 · 179 阅读 · 0 评论 -
新一代的Fragment管理库:Navigation Jetpack
https://www.jianshu.com/p/00f3a00373d7转载 2020-03-27 09:24:12 · 280 阅读 · 0 评论 -
数据库 ORM :Room(AAC)
数据库 Room GreenDAO 相当于(mybatis ,Hibernate之类,一个框架,辅助操作数据库)原创 2020-03-08 21:57:18 · 185 阅读 · 0 评论 -
RxJava 3.X来袭,请做好准备~
https://www.jianshu.com/p/14aaca490a1f转载 2019-12-17 14:51:05 · 143 阅读 · 0 评论 -
Rxjava Disposable解除订阅(Retrofit2+Rxjava2主动取消网络请求)
Disposable类dispose():主动解除订阅(如果使用Retrofit2+Rxjava2,调用dispose会主动取消网络请求,在本文的后半部分) isDisposed():查询是否解除订阅 true 代表 已经解除订阅 rxjava虽然好用,但是总所周知,容易遭层内存泄漏。也就说在订阅了事件后没有及时取阅,导致在activity或者fragment销毁后仍然占用着内存...原创 2019-12-16 15:53:47 · 5122 阅读 · 0 评论 -
Android KTX简介
Android KTX是Android工具库,主要是对Android原始的Api做了一些扩展,方便开发调用,使代码更加自然和简单。(我们也会经常做这些工具库,就好像自己的MySharedPreferences)前提:项目代码必须接入kotlin-------------------------------------------官方例子:https://developer.androi...原创 2019-12-04 09:19:59 · 1132 阅读 · 0 评论 -
compileOnly的使用场景
重点在文章的最后:有多个library,只要确保有一个module中该依赖能参与到打包即可,其他的可以使用compileOnly------------------------------------正文 ------------------------------------------Android studio升级到3.0之后,依赖方式也有了更新。这是2.x图...转载 2019-11-28 11:14:00 · 11929 阅读 · 0 评论 -
小技巧:把多个module放在一个文件夹下面
步骤:1、随便新建两个module(例如library)2、在项目的根目录新建一个文件夹(文件名随意,我定为modules)3、把新建的两个module用鼠标拖到新建的文件夹modules中4、配置settings.gradleinclude ':app'//原 include ':mylibrary'include ':modules:mylibrary'//原 in...原创 2019-11-28 10:43:46 · 1326 阅读 · 0 评论 -
Android使用Jenkins持续集成(自动打包apk并上传服务器)
摘要:前言本文较长,不是一般的长,需要强大的耐心,希望各位看官慢慢阅读,如果觉得不好,您只当一乐,如果觉得还可以,能给您带来收获,那将是我的荣幸,以下正文开始。。。背景原来在刚开始工作到时候不知道有Jenkins这种神器的存在,每次项目要提测了,测试人员都会在整个改bug期间,不停的找我们要包,当然,我们自己每天也会去打包给他们,这个过程其实挺机械化的,非常浪费人力资源,那么有没有一种...转载 2019-11-27 10:52:59 · 1027 阅读 · 0 评论 -
Okhttp源码解析(四)——Okio解析 (优化后的java.IO)
https://www.cnblogs.com/could-deng/p/8378796.html1.什么是OKIO 将JDK封装的IO操作再进行一层封装 好处: (1)使用了segement片段管理的方式管理数据,以片段作为IO操作的单位,使IO操作吞吐率增加 (2)使用链表将Segment片段联系起来管理,对于移动指针就可以对数据进行管理,扩容方便 (3)使...转载 2019-11-15 15:01:02 · 300 阅读 · 0 评论 -
Glide使用总结
首先,添加依赖implementation 'com.github.bumptech.glide:glide:4.5.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'之后添加访问网络权限<uses-permission android:name="android.permission.INTE...转载 2019-11-06 16:42:36 · 270 阅读 · 0 评论