- 博客(65)
- 收藏
- 关注
原创 Android里面使用Java实现对字符串进行base64(sha256(“aa“))算法加密
【代码】Android里面使用Java实现对字符串进行base64(sha256(“aa“))算法加密。
2024-03-29 11:34:28 215 2
原创 Glide结合OkHttp保证短信验证接口携带图形验证码接口返回Cookie值去做网络请求
自定义Okhttp的cookie管理,在Okhttp初始化的时候设置进去。并在Glide中注册请求对象。因为发送短信的请求需要利用图形验证码请求的cookie,所以cookie管理的逻辑就是,保存上一次请求的cookie,下一次请求的时候利用上一次请求的cookie。大概业务流程原理如图所示://[email protected]();@Override/*** Cookie管理类*///保存每个url的cookie。
2023-11-28 15:00:42 883
原创 Android之在RecyclerView列表中实现单选
包含一个TextView和一个右侧选中的图片ImageView√。单选、可取消选中、列表数据可更新(选择状态清空,可重新选择)activity内部自定义适配器TipListAdapter。selected_tip_list_item.xml文件。仅展示部分核心代码,请主要参考适配器的定义。RecyclerView列表单选。(mList为请求到的数据)
2023-11-23 16:12:33 546
原创 Android中使用Java计算指定日期、时间戳等方法的合集
*** 获取指定年月的第一天和最后一天的时间戳* @return*/// 不加下面2行,就是取当前时间前一个月的第一天及最后一天//月最后一天的时间戳//月第一天的时间戳。
2023-10-20 15:10:03 389
原创 Android自定义View之相册文件选择器
/自己的包名位置= null) {} else {pictureSelector.openGallery(mimeType)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo().maxSelectNum(maxChoose)// 最大图片选择数量 int.minSelectNum(1)// 最小选择数量 int.imageSpanCount(4)// 每行显示个数 int。
2023-10-20 12:00:48 924
原创 Android之自定义View之底部选择弹窗
可自定义item数量的底部弹窗//自己的包位置/*** 一个自定义item数量的底部弹出窗*/refresh();refresh();/***/
2023-10-19 14:51:03 840
原创 Android之使用GirdLayoutManager时候给Item设置边距
/自己包名位置/*** 自定义类,GridLayoutManager设置边距*///边距值//每行item数量@Override//一行两个时候,两个item靠近外面的那一边不设置边距。
2023-10-19 14:17:24 528 2
原创 Android中使用Glide加载圆形图像或给图片设置指定圆角
R.mipmap.head_icon是默认圆形头像。例子:设置图片圆角为10dp。
2023-10-19 13:57:29 2920
原创 Android之播放本地视频和Url视频方法
视频Url例子:https://recordcdn-qk.jfdaily.com/upload/vod/user1694515885005019/1697678251135382/preview/video.mp4。根据文件路径在浏览器中播放,可用于视频预览等场景。(3)相关生命周期中添加操作。用浏览器播放本地视频。
2023-10-19 11:48:23 3378
原创 Android中使用Java操作List集合的方法合集,包括判读是否有重复元素等
使用Iterator迭代器去遍历List,移除mList中元素type字段值等于0的元素。注意:T 可以用自己的JaveBean对象来代替。
2023-10-19 11:29:35 609
原创 Android音视频开发之基础知识
也就是说,可以压缩UV数据,而人眼难以发现。(4)信息熵冗余:也称编码冗余,人们用于表达某一信息的比特数总比理论上表示该信息所需要的最少比特数要大,他们之间的差距就是信息熵冗余,或称编码冗余。YUV主要应用于优化彩色视频信号的传输,与RGB相比,YUV只需要占用极少的频宽,RGB则需要三个独立频道的信号同时传输。负责以网络所需求的恰当的方式对数据进行打包和传送,是传输层,不管在本地播放还是网络播放,都是需要这一层来传输。负责高效的视频内容表示,VCL数据即编码处理的输出,表示被压缩编码后的视频数据序列。
2023-10-19 11:07:42 136
原创 Android之使用QBadgeView给TabLayout顶部栏设置数量角标,数值可更新
位置:drawable/audit_tab_button_background.xml/><solid<size<stroke</shape>/*** 右上小红点数量提示* @param context 当前activity* @param view 要显示在那个空间上的View* @param i 数量*/.setBadgeNumber(i) //角标数值。
2023-10-19 11:02:52 438 2
原创 DHCPv6之GitHub项目Android侧验证
将DHCPv6-Client-Android/app/src/main/res at master · realmar/DHCPv6-Client-Android · GitHub下载到本地。下载网址:Index of /downloads/binaries/1.21.1 (busybox.net),目前最新是1.21.1版本。2、将整个文件夹push到有root权限的/data/data/com.megvii.pad/目录下。./install.sh 或者 nohup ./install.sh &
2023-08-14 16:35:34 383
原创 IPv6项目开发测试记录
ip -6 route add fd00:0:0:1::15/64 via fd00:0:0:1::1 dev eth0 设置网关。1、代码里面执行shell命令,去执行“ifconfig eth0 inet6 add fd00:0:0:1::15/64”(3)带源地址的路由跟踪:busybox traceroute -d fd00::100 -s fd00:0:0:1::15。手动设置v6地址 ifconfig eth0 inet6 add 240e:3b0:302b:24dc:8000::2。
2023-08-14 16:35:06 243
原创 Android之ADB常用命令
11、下发音频路径:/sdcard/Android/data/com.megvii.pad/files audio_custom。本地目录新建文件(例如新建D盘aaa文件),输入命令:adb pull /sdcard/meg/logcat D://aaa。rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件。4、项目crash文件 cd /sdcard/meg/crash。10、崩溃日志路径:/sdcard/meg/crash。9、日志路径:sdcard/meg/logcat。
2023-08-14 16:34:35 699
原创 Android之IPv6服务器地址正则式匹配
格式:http://或者https:// + [IPv6地址] + :端口。正则式在线测试工具:https://tool.oschina.net/regex。
2023-08-14 16:34:10 271
原创 Android之shell命令设置IP地址、掩码、网关,查看经过的路由
ip -6 route add fd00:0:0:1::15/64 via fd00:0:0:1::1 dev eth0 设置网关。(3)带源地址的路由跟踪:busybox traceroute -d fd00::100 -s fd00:0:0:1::15。(2)再执行 busybox traceroute fd00::100,可查看访问到fd00::100经过的路由网关。ip -6 addr add fd00:0:0:1::15/64 dev eth0 添加Ipv6地址。
2023-08-14 16:33:34 706
原创 Android11反射限制-网络连接相关预研
(1)无法连接以太网:涉及反射部分功能不可用:获取有线网配置的所有功能,包括有线网络管理类、获取IP配置、获取IP地址、获取子网掩码、获取网关、获取域名、设置静态IP置等;1、Room层支持,单独封装有线网络相关API调用jar包,依照上述导入framework.jar包依赖,与AndroidSDK共存的方式直接进行对隐藏API的调用。下载地址:https://gitee.com/xiayiye5/framework-jar-demo/tree/master/app/libs。
2023-08-14 16:32:51 270
原创 Android之SQLite数据库的使用总结
(3)对外提供函数,可以调用SQliteOpenHelper的实例,instance,单例模式创建,定义数据库的信息。(2)创建表,在onCreate()方法内通过写sql语句创建表,数据库初始化时候只会创建一次表,第二次不会创建。(2)数据库是由底层的sqlite.c执行程序的代码动态生成的,不用人为去创建数据库。_id、主键唯一、自动增长(autoincrement)、类型(Text);(2)需要有构造函数,需要传入数据库的版本号、数据库名字等;(1)嵌入式数据库,体积小。(1)调用实例创建数据库。
2023-08-14 15:57:04 291
原创 Android之修改Jar包源码后再重新打Jar包
打包好的jar包就在这个mudule下的build-libs目录下(打好的jar包名会与module名一致,也可以修改jar包名字然后再使用)(3)将路径名填入新建Java or Kotlin Library下面的Package name框内。(2)找到要打包的org.eclipse.paho.client.mqttv3文件夹下的。一、找到jar包使用框架的github源码,并下载。(2)粘贴到新建mudule的java目录下。(1)服务jar包到自己项目中。四、修改源码后,打jar包。
2023-04-19 11:46:02 672 1
原创 Android之使用MqttAndroidClient测试连接tcp服务
mqttv3源码位置:https://github.com/eclipse/paho.mqtt.android.git。三、gradle.propertices。加入相关权限还有服务service。
2023-04-18 17:52:33 856
原创 Android之adb安装busybox使用wget、telnet等服务
Android中通过在ADB中安装busybox使用wget、telnet等服务
2023-04-11 13:25:34 5414 2
原创 Android事件分发机制
1、事件分发的“事件”答:点击事件(Touch事件)定义:当用户触摸屏幕时候,将产生点击事件。具体使用:Touch事件的相关细节会被封装成MotionEvent事件类型:MotionEvent.ACTION_DOWN 按下ViewMotionEvent.ACTION_UP 抬起ViewMotionEvent.ACTION_DOWN 滑动ViewMotionEvent.ACTION_CANCEL 结束事件附:事件列,即指从手指接触屏幕至手指离开屏幕这个过程产生的一系列事件。一般情况下
2022-03-01 10:28:29 230 1
原创 Room数据库保存Date类型数据的问题
一、报错:报错原因就是我准备存进数据库实体里面有一个字段是Date类型数据,而Room数据库不知道如何保留 Date 对象,因此需要定义类型转换器:下图就是实体中定义的Date类型,就是此处的Date类型字段,Room不知道怎么存二、解决办法,步骤如下1、定义类型转换器2、将 @TypeConverters 注解添加到 AppDatabase 类,以便 Room 知道已定义的转换器类3、再次Build–Rebuild,就发现这个问题解决了4、完成,nice!...
2022-02-28 14:08:55 2711
原创 Android模块化,组件化和插件化区别
插件的单位是apk(是一个完整的应用),灵活性在于是加载apk,完全可以动态加载、动态更新。例子:支付宝的各大型模块不可能同时放进一个apk,加载会很缓慢,所以会用到插件这种,使用的时候再去从服务器加载。模块化是将功能拆分,分成相互独立的模块,以便于每个模块只包含与其自身功能相关的内容。(2)一个支付宝页面那么多控件不可能全部打包到一个apk,所以会使用插件化。从代码逻辑的角度进行划分,方便代码分层开发,保证每个功能模块的职能单一。例子:日志组件、数据库组件、网络组件。如有错误,欢迎指正!
2021-10-29 20:18:35 1915
原创 Http常见知识点总结
1、Http特点应用层协议特点:(1)、支持客户/服务器模式(2)、简单快速客户向服务器请求服务时候,只需传送请求方法和路径;常用方法有GET,POST,HEAD等(3)、灵活允许传送不同类型数据,Content-Type标记(4)、无连接每次连接只能处理一个请求,服务器处理完请求后立马释放TCP连接,(5)、无状态对于事务处理没有记忆能力,同一用户再次访问服务器时候,响应页面与第一次相同2、HTTP的GET和POST区别(1)get一般用于请求;post一般用于上传资源。(2)
2021-10-28 09:37:39 441
原创 Android中进程间的通信
一、进程间的通信方式IPC(Inter-Process Communication)为进程间通信或跨进程通信,是指两个进程进行进程间通信的过程。在Android中,为每一个应用程序都分配了一个独立的虚拟机,不同虚拟机在内存分配上都有不同的地址空间,互相访问数据需要借助其他手段。下面介绍在Android中实现IPC的方式。1、Bundle在Android中三大组件(Activity,Service,Receiver)都支持在Intent中传递Bundle数据,由于Bundle实现了Parcelable
2021-10-28 09:35:30 275
原创 Android之MVC、MVP和MVVM
更新中。。。一、MVC1、是什么?特点(1)Model:针对业务模型建立的数据结构和类(与View无关,只与业务相关)(2)View:xml/JAVA或者JS+HTML的页面展示。(3)Controller:Android的控制层在activity、fragment中,本质就是Controller操作Model层的数据,返回给View层展示。2、缺点(1)Activity并不是MVC中标准的Controller,既有Controller的职责也有View的职责,Activity代码过于臃肿。
2021-10-21 11:08:05 183
原创 Android之学习Handler原理的理解与常见问题
有一段时间查资料看这个了,下面就简单记录一下我自己的理解一、Handler工作流程通常,我们使用Handler的时候会先new一个Handler,然后调用send或者post来处理,类似这种:那么handler发送消息之后实际是怎么工作呢?之前听了一节享学课堂关于Handler原理介绍的课程,里面老师给了这么一张图,我一直以来觉得这张图很好理解。先看右上角,handler发送消息后,消息队列就像有传送带一样一个一个接收并处理这些发来的消息,而让这传送带动起来的东西就是Looper。Looper
2021-10-17 19:48:42 1333
原创 Android,结合源码对OkHttp工作流程的理解
帮助我理解的OkHttp博客:OkHttp3.x解析(二)OkHttp源码以及工作流程解析.下面这个图搭配源码看真的很容易理解:OkHttp工作流程大概步骤:一、通过OkhttpClient创建一个Call,调用newCall(Request request)方法OkHttpClient.java源码中newCall()方法从上图可看出创建Call对象后实际调用的是RealCall.newRealCall(**)方法,接下来我们进去看RealCall里面可以干什么二、同步和异步请求1、
2021-10-17 10:52:29 561
原创 Android中Activity的启动模式
自己理解总结的内容,官方文档有更完整的解释一、任务栈任务是用户在执行某项工作时与之互动的一系列 Activity 的集合, 任务栈是一种用来放置这些Activity实例的容器。二、启动模式的定义方式1、清单文件中定义声明activity时候指定launchMode属性(下面四种启动模式)2、使用Intent标记启用activity调用startActivity()的时候,可以在intent中添加一个标记(例如:intent.addFlags(Intent,FLAG_ACTIVITY_NEW_T
2021-10-15 20:58:52 438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人