- 博客(100)
- 资源 (5)
- 收藏
- 关注
原创 webView系列(十一)----webview网页调试之setWebContentsDebuggingEnabled使用
一、前言坐混合开发,最蛋疼的就是处理webview的兼容性问题,还有就是js的调用问题,网页是可以正常调试,但是问题是出现在Android机上,需要做兼容适配,但是h5开发的同事不知道Android如何调试,这样子发现问题、解决问题就花了大量的时间,今天,就介绍Android手机使用谷歌浏览器同步Android的webview页面进行调试。二、Android使用方法在需要调试的webv...
2019-12-06 10:37:41
16508
1
原创 /usr/bin/env: "python": 没有那个文件或目录
1.首先查看一下 /usr/bin/ 文件夹里面有没有python文件如果没有先下载sudo apt-get install python2.如果有这个文件则执行下面这句话sudoapt-get --reinstall install python-minimal检查是否/usr/bin在$PATH内部emacs。如果是,您不能/usr/bin/python2从shell运...
2019-09-09 14:12:14
30909
1
原创 Android 3DES加密/解密工具类
public class AndroidDes3Util { private static final String ALGORITHM = "DESede"; /** * 加解密统一使用的编码方式 */ private final static String encoding = "utf-8"; /** * 3DES加密 ...
2019-08-20 11:08:15
1261
1
原创 使用ScheduledThreadPoolExecutor进行Android的定时任务
一、ScheduledThreadPoolExecutor简介1.1、构造方法ScheduledThreadPoolExecutor有四个构造方法,如下所示:ScheduledThreadPoolExecutor(intcorePoolSize) ScheduledThreadPoolExecutor使用给定的核心池大小创建新的。 ScheduledTh...
2019-08-20 10:31:04
1751
原创 硬件系列导航与所有硬件博文的demo
硬件系列(一)----------WIFI打印机之使用socket进行打印机搜索硬件系列(二)-------------wifi打印机之佳博wifi打印机踩坑之路硬件系列(三)--------wifi打印机之使用socket打印(无sdk)硬件系列(四)-------------Android标签打印机连接与打印位置调动方法总结硬件系列(五)-------------Android...
2019-08-16 09:53:36
1061
9
原创 硬件系列(九)--------串口扫码头数据读写
一、前言最近需求做扫码支付,但是扫码的扫码头是串口的,需要进行开发才能调起扫码头扫码,头疼了一段时间,在度娘上搜索了一波,做了下总结,也写了一个demo,顺便写一篇博文记录一下。二、串口管理类** * 串口管理类 * <p> * 触发扫码:7E 00 08 01 00 02 01 AB CD * 停止扫码:7E 00 08 01 00 02 00 AB CD *...
2019-08-16 08:30:31
1466
原创 硬件系列(八)---------使用AccessibilityService服务进行无界面扫码枪扫码获取数据
一、DetectionService 服务类public class DetectionService extends AccessibilityService { final static String TAG = "DetectionService"; private ScanGun mScanGun = null; @Override public ...
2019-08-16 08:29:31
912
1
原创 硬件系列(七)----------USB扫码枪
一、扫码枪工具类public class BarcodeScannerResolver { private static final String TAG = BarcodeScannerResolver.class.getSimpleName(); /** * 若500ms之内无字符输入,则表示扫码完成. (若觉得时间还长,则可以设置成更小的值) *...
2019-08-16 08:29:06
2503
原创 硬件系列(六)--------------小票打印之无SDK打印
一、前言在硬件系列(五)-------------Android小票打印机连接 (已封装好,可直接使用)博文中,介绍了利用小票打印sdk进行小票打印,这个也是很久前写的了,也有很多同行的朋友需要sdk进行打印,只是碍于写那篇博文的时候是抽离出来的,很多同行要demo就没有,现在正好有台小票打印机在身边,就顺便做了一下总结,写了一些相关硬件的demo,都是打印机系列,这次demo会分享出来,保证...
2019-08-15 17:38:54
799
6
原创 硬件系列(三)--------wifi打印机之使用socket打印(无sdk)
一、前言在上一篇博文硬件系列(二)-------------wifi打印机之佳博wifi打印机踩坑之路中介绍了佳博wifi打印机的打印,但是这个是要的是sdk进行打印的,如果没有sdk呢?所以,这篇博文就介绍无sdk wifi打印。二、浅析wifi打印机,其实本质还是使用网络进行数据的传输,既然是数据传输,那么就涉及到了数据的读写操作了,在硬件系列(一)----------WIFI...
2019-08-15 10:47:22
2549
3
原创 使用线程池工厂创建线程
一、前言当我们使用阿里的插件进行代码规范检查的时候,线程的创建不规范总是会报一下的提示:所以,这篇博文就记录下线程池的创建。二、线程池工厂类/** * 线程池工厂类 * @author Freak * @date 2019/8/13. */public class ThreadPoolProxyFactory { static ThreadPoolP...
2019-08-15 10:38:32
1336
1
原创 硬件系列(二)-------------wifi打印机之佳博wifi打印机踩坑之路
一、前言之前做过USB打印机,但是现在需求变了,不是使用收银台进行打印机的连接了,而是使用手机与打印机进行打印。手机又无法像收银机一样直接使用USB直接与打印机直接连接进行打印。所以只能使用蓝牙打印机或者wifi打印机了,但是项目的需求中需要使用到语音播报的功能,配备的是蓝牙音箱,故只剩下了wifi打印机了。因为之前使用过佳博的打印机,所以也就直接推荐公司买了佳博的wifi打印机。一直想整理下...
2019-08-15 09:27:16
1799
1
原创 硬件系列(一)----------WIFI打印机之使用socket进行打印机搜索
一、前言相信大部分做wifi打印机打印的朋友都知道,第一步是要进行wifi搜索,看看当前局域网内已经启动的wifi打印机,然后再进行连接,具体的就不多说了,wifi打印这个模块写了已经很久了,现在才有空抽时间出来写一写总结,如果有什么不对的地方,希望能留言给个建议,多多交流交流。不多说,直接开撸。二、打印机搜索工具类import android.content.Context;im...
2019-08-15 09:03:40
2973
原创 OKHTTP系列(十一)---自定义拦截器之登录验证再请求拦截器(刷新token再请求)
一、前言在上一篇博文中,我们介绍了怎么自定义拦截器添加公共参数和设置请求头参数,在这里,讲解一下,自定义一个拦截器去验证登陆是否过期,然后做一些相应的操作,流程如下:二、RefreshTokenInterceptor类/** * @author Freak * @date 2019/6/15. */public class RefreshTokenIntercept...
2019-07-13 13:33:11
3990
2
原创 OKHTTP系列(十)---自定义拦截器之添加公共参数拦截器
一、前言在前面,我们在讲拦截器的时候也讲到了拦截器的调用顺序,会优先调用自定义的拦截器,然后才会调用之后的几个拦截器。这里就不多说了,具体的查看博文OKHTTP系列(三)--拦截器Interceptor概述二、自定义拦截器自定义一个拦截器类,实现Interceptor接口,如下所示/** * 添加公共参数 * * @author freak * @date 2019/3/1...
2019-07-13 13:32:57
2061
原创 okhttp系列导航
OKHTTP系列(一)----结构简介OKHTTP系列(二)--请求与响应流程OKHTTP系列(三)--拦截器Interceptor概述OKHTTP系列(四)--拦截器之RetryAndFollowUpInterceptor重定向拦截器OKHTTP系列(五)--拦截器之BridgeInterceptor连接桥拦截器OKHTTP系列(六)--拦截器之CacheIntercept...
2019-07-13 09:57:38
306
原创 webview系列导航
webView系列(一)----相关类介绍webView系列(二)----WebSettingswebView系列(三)----WebViewClientwebView系列(四)----WebChromeClientwebView系列(五)----历史记录webView系列(六)----webview ApiwebView系列(七)----webview加载顺序web...
2019-07-13 09:54:18
800
原创 webView系列(十)----自动登录(刷新token持久化登录)
一、前言在上一篇博文webView系列(九)----登录验证中,我们将到了登录验证,验证token失效后,就会到登陆页面重新登陆,这样用户觉得登陆的比较麻烦,想达到登陆一次,就很久都不需要登陆了,只要一直使用APP就不会,几天不使用都不会退出登录。为达到这样的效果,我们将讲解自动登录。二、自动登录/** * api>=21调用 * @param view * @param...
2019-07-13 09:39:20
3792
原创 webView系列(九)----登录验证
一、前言在上一遍博文webView系列(八)----拼接参数中,我们讲到如何拼接token,拼接token的目的我们也都知道,就是为了识别用户已经登陆了,相当于网页中的cookie(也可以使用cookie,这里就不做介绍),但是虽然是拼接了token了,但是token是有过期时间的,我们怎么才能知道token过期了呢?接下来我们就开始讲解登陆验证。二、登陆验证/** * api&g...
2019-07-13 09:38:58
967
原创 webView系列(八)----拼接参数
一、前言如果项目是进行了三端的开发,而且移动端使用了webview进行混合开发的话,在此时,我们登陆信息就需要拼接到url后面了。如果只是进行一次拼接,那这个很方便,直接在加载url的时候就把登陆信息(token以下都写token)拼接到url里面进行load。但是如果想达到在进入网页的每一个页面都进行token的拼接呢?请继续看下去。二、token拼接@RequiresApi(...
2019-07-13 09:38:36
1877
原创 webView系列(七)----webview加载顺序
一、普通网页加载流程(一开始传入url) WebChromeClient getVisitedHistory WebChromeClient onProgressChanged WebViewClient shouldInterceptRequest(WebView view, final WebResourceRequest request) WebCh...
2019-07-13 09:38:16
1935
原创 webView系列(六)----webview Api
一、加载网页/** * 加载URL指定的网页 * * @param url 访问地址 */@Overridepublic void loadUrl(String url) { super.loadUrl(url);}/** * 携带http headers加载URL指定的网页 * * @param url 访问地址 * @...
2019-07-13 08:13:12
524
原创 webView系列(五)----历史记录
一、概述在每次访问一个网页的时候,webview都会记录访问的地址,保存了一个堆栈中,这就是我们要说的浏览历史记录。网页进行加载时,都会调用doUpdateVisitedHistory(WebView view, String url, boolean isReload)方法去更新历史记录。注意:doUpdateVisitedHistory(WebView view, String url...
2019-07-12 17:15:33
4386
原创 webView系列(四)----WebChromeClient
private WebChromeClient mWebChromeClient = new WebChromeClient() { /** * <video /> 控件在未播放时,会展示为一张海报图,HTML中可通过它的'poster'属性来指定。 * 如果未指定'poster'属性,则通过此方法提供一个默认的海报图。 * * @re...
2019-07-12 17:01:45
514
原创 webView系列(三)----WebViewClient
private WebViewClient mWebViewClient = new WebViewClient() { /** * 通知应用可以将当前的url存储在数据库中,意味着当前的访问url已经生效并被记录在内核当中。 * 此方法在网页加载过程中只会被调用一次。 * 此方法在进行加载url时会更新历史记录 ...
2019-07-12 17:00:49
1870
原创 webView系列(二)----WebSettings
WebSettings settings = mWebView.getSettings();/** * 设置userAgent用户表示,可以给服务器区分是否是移动端访问 */settings.setUserAgentString(settings.getUserAgentString().concat("userAgent"));/** * 根据menuItems标志禁用动作模式菜单...
2019-07-12 17:00:01
986
原创 webView系列(一)----相关类介绍
WebViewDatabase存储与管理以下几类浏览数据表单自动填充的用户名和密码; HTTP认证的用户名和密码; 曾经输入过的文本;WebViewClient一个web客户端,可自定义实现。WebChromeClient谷歌web客户端。WebViewAndroid的控件,可以在xml中使用,也可以使用动态添加的方式使用。WebStorage该类用于管理...
2019-07-12 16:59:44
1018
原创 OKHTTP系列(九)---http请求头(header)作用
前言在项目开发中,网络请求是必不可少的 ,在http方面的知识学习也是不能拉下的,这里就做一波http请求头的记录。Header:请求头个别参数和描述Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html,application/json Accept-Charset 浏览器...
2019-07-11 10:03:06
5602
原创 OKHTTP系列(八)--拦截器之CallServerInterceptor请求服务器拦截器
这是链中的最后一个拦截器。 它会对服务器进行网络请求。我们通过ConnectInterceptor已经连接到服务器了,接下来我们就是写入请求数据以及读出返回数据了。整个流程:写入请求头 写入请求体 读取响应头 读取响应体CallServerInterceptor类public final class CallServerInterceptor implements Interc...
2019-07-10 21:06:23
283
原创 OKHTTP系列(七)--拦截器之ConnectInterceptor连接拦截器
一、连接机制连接的创建是在StreamAllocation对象统筹下完成的,我们前面面也说过它早在RetryAndFollowUpInterceptor就被创建了,StreamAllocation对象,主要用来管理两个关键角色:RealConnection:真正建立连接的对象,利用Socket建立连接。 ConnectionPool:连接池,用来管理和复用连接。在这里初始化了一个Str...
2019-07-10 21:06:06
1207
原创 OKHTTP系列(六)--拦截器之CacheInterceptor缓存拦截器
我们知道为了节省流量和提高响应速度,Okhttp是有自己的一套缓存机制的,CacheInterceptor就是用来负责读取缓存以及更新缓存的。一、CacheInterceptor拦截器intercept(Chain chain)方法/** Serves requests from the cache and writes responses to the cache. *///从缓存中...
2019-07-10 17:12:45
891
原创 OKHTTP系列(五)--拦截器之BridgeInterceptor连接桥拦截器
BridgeInterceptor就跟它的名字那样,它是一个连接桥,它负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好的响应。 转换的过程就是添加一些服务端需要的header信息。一、BridgeInterceptor拦截器源码/** * Bridges from application code to network code. First it bu...
2019-07-09 23:29:03
327
原创 OKHTTP系列(四)--拦截器之RetryAndFollowUpInterceptor重定向拦截器
在介绍RetryAndFollowUpInterceptor拦截器之前,先了解一下重定向是什么!!!一、http协议中的重定向简单了解原理:在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载;大多数情况下,除了会有一小...
2019-07-09 15:23:33
1012
原创 OKHTTP系列(三)--拦截器Interceptor概述
回顾我们先回顾先我们OKHTTP系列(二)--请求与响应流程中的请求的处理:final class RealCall implements Call {Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. List<...
2019-07-09 15:18:42
625
原创 OKHTTP系列(二)--请求与响应流程
一 、请求与响应流程Okhttp的整个请求与响应的流程就是Dispatcher不断从Request Queue里取出请求(Call),根据是否已经存存缓存,从内存缓存或者服务器获取请求的数据。 请求分为同步和异步两种,同步请求通过 调用Call.exectute()方法直接返回当前请求的Response,异步请求调用Call.enqueue()方法将请求(AsyncCall)添加到请求队列中...
2019-07-08 22:59:29
995
原创 OKHTTP系列(一)----结构简介
一、简介OkHttp是一个处理网络请求的高性能框架,由Square公司贡献二、请求流程三、Okhttp的子系统层级结构网络配置层:利用Builder模式配置各种参数;例如:超时时间、拦截器等,这些参数都会由Okhttp分发给各个需要的子系统。 重定向层:负责重定向。 Header拼接层:负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好...
2019-07-08 22:49:57
465
原创 webview设置setOnKeyListener方法,onKey方法执行两次解决方案
一般我们都会这样设置,代码如下:mWebView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK &am...
2019-07-04 11:57:18
1743
原创 极光推送之#00 pc 000000000006abe4 /system/lib64/libc.so (tgkill+8) [arm64-v8a]错误
在使用极光推送的时候,在cpu架构为arm64-v8a的时候,闪退率100%,刚开始还以为是项目其他的影响了,但是在其他手机上没有问题,就只能一个一个排查,最终确认是极光推送的sdk的so文件有问题。具体问题如图所示:解决方法:只要把极光的sdk版本与libs包下的各种cpu架构的so文件更新为最新版本,这个问题就可以解决。这个问题排查的时间也比较久,就记录一波。...
2019-07-03 14:37:34
6206
原创 基于okhttp3+rxjava2+retrofit2的MVVM模式网络请求
前言MVC、MVP、MVVM是我们工作和面试中都比较重要的一块,但很多时候我们却有点迷惑。有时候看了好多博文都搞不懂他们是啥,有时候想写个MVP模式,写着写着就成了MVC模式。这个请求框架,也是基于我自己的理解和众多网友的博文进行封装的。另外由于本人水平有限,如果写的不对或者不严谨的地方,请不要打我。也希望能多多交流。概述说到Android MVVM,相信大家都会想到Databindi...
2019-05-24 15:56:54
3601
PrintTool.zip
2019-08-16
音频播放文件与源码
2018-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人