- 博客(131)
- 资源 (13)
- 收藏
- 关注
原创 Google Pixel7 Pro手机登录账号无法触发密码自动填充确认对话框
如果在应用中已正确设置了输入框属性:android:autofillhints和importantAutofill属性,但始终无法在Goole手机中弹出存储账户密码提示框,那么就需要检查是否开启了自动填充功能,以及应用是否已被加入拒绝名单中,按如下步骤进行检查。第一步:登录google账号,开启密码自动填充功能,之所以要登录google账号,是因为账号密码是google账号关联的,不登陆是使用不了自动存储功能的。
2024-05-10 17:59:51
816
原创 Centos7多网卡配置网络
其中NM_CONTROLLED=no表示NetworkManager不能更改这个配置,ONBOOT=yes表示开机启动,如果不用这个网卡,设置成ONBOOT=no, 我这里设置的静态IP取获方式,也可以设置dhcp模式,但是需要dhcp服务。然后重启服务: systemctl restart network,就发现resolv.conf的内容变成了你配置的内容了,这个文件不能手动修改,应为每次重启服务会被重置。如果不是作为软路由使用,需关闭路由转发功能:vi /etc/sysctl.conf。
2023-04-20 12:09:48
1249
原创 Centos实现软路由
带着需求去华强北找符合这样设备,华强北给的方案是爱快软路由+centos虚拟机,满足了服务器和路由器功能,但是没法使用学校分配的ip直接访问服务器,centos虚拟机是装在爱快路由系统上的,没法融入到学校局域网中,没办法,我只好重装系统,直接装centos然后,再配置软路由,这样的话,学校ip实际上就直接分配给了服务器,也就可以直接通过ip访问服务器了,然后通过配置软路由实现路由转发功能。下图配置连接外网的网卡:网卡名称 enp3s0, 固定ipv4地址、网关、dns,下图中的 [X]表示选中。
2022-12-15 11:02:07
4794
2
原创 Flutter中Provider的一般用法(二)
在上篇文章中,已经对Provider的用法有了一定了解,下面在看下context.read<T>() 和context.watch<T>()的用法,为什么可以直接用context获取呢,BuildContext有两个拓展实现ReadContext, WatchContext:extension ReadContext on BuildContext { T read<T>() { return Provider.of<T>(this, lis
2021-04-08 13:42:04
1362
原创 Flutter中Provider的一般用法(一)
在flutter中Provider是比较常用的Widget, Provider通常用来管理value的生命周期,通过Create和Dispose,它们是成对出现的,可以在Create进行value的初始化操作,在dispose进行value的释放操作。使用Provider可以避免一些琐碎的操作,比如实例化一个BLoC操作,事实上,Provider等效于状态管理类State.initState和State.dispose的组合,Create只会在State.initState中调用一次。我们不能直接使用Inh
2021-04-07 17:43:51
2942
原创 Flutter使用GridView长按拖动排序、分类
最近在实现一个书架需求:可以拖动排序和书籍分类,效果如下方视频所示Flutter使用gridview实现长按拖动排序、分类#
2021-02-23 16:42:21
2014
4
原创 ffmpeg常用命令
查看输入文件信息ffprobe -v info -hide_banner -i Downloads/418424037.mp4 flutterFFmpeg.execute('-i $videoPath -vf scale=$targetWidth:$targetHeight $outputPath'); flutterFFmpeg.execute('-i \'$videoPath\' -s ${targetWidth}x$targetHeight -preset fast $outpu...
2020-12-29 14:32:25
511
原创 浅谈Flutter跨平台调用方式MethodChannel
Flutter是目前非常流行的跨平台方案,由于它的性能接近于原生应用,因而被越来越多的开发者所采用。既然是跨平台方案,那么久必然存在调用系统功能的需求,在Flutter中,Flutter层与native层的互调,是通过MethodChannel来实现的。下面来简单的分析下Android端调用Flutter的过程。MethodChannel channel = new MethodChannel(messenger, CHANNEL_NAME , StandardMethodCodec.INSTANCE
2020-10-21 17:23:31
1742
转载 Flutter 画面渲染的全面解析
本篇将通过不一样的角度来介绍 Flutter Framework 的整体渲染原理,深入剖析 Flutter 中构成 Layer 后的绘制流程,让开发者对 Flutter 的渲染原理和实现逻辑有更清晰的认知。Layer 相关的回顾先回顾下,我们知道在 Flutter 中的控件会经历Widget->Element->RenderObject->Layer这样的变化过程,而其中Layer的组成由RenderObject中的isRepaintBoundary标志...
2020-08-13 13:59:37
1788
转载 CentOS 7 升级gcc/g++编译器
gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行。我的7.2的CentOS目前自带的gcc是4.8.5的,gcc从4.8之后开始支持C++11,但是鉴于现在C++14、C++17都已经出来了,所以还是把编译器升级一下,才能紧跟发展,尝试使用14/17的新特性。gcc源码下载地址:https://gcc.gnu.org/。 第一步:下载源代码 查了资料步骤上多了几个,重做一下: 首先:yum -y install texinfo 如果不执行这个命令的话,那
2020-07-28 14:06:34
2469
原创 Android的消息机制概述
提到消息机制应该都不陌生,在日常开发过程中不可避免的会涉及到这方面的内容。从开发的角度来说,Handler是Android消息机制的上层接口,这使得只需要和Handler交互即可,通过Handler可以将一个任务切换到Handler所在线程中去执行。Handler最常用的场景就是更新UI。Handler运行的需要底层的MessageQueue和Looper的支撑。MessageQueue是消息队列,其内部存储了一组消息,以队列的形式对外提供插入和删除的工作。虽然是消息队列,但是它的内存并不是真正的队列,
2020-07-17 11:06:40
193
原创 Android中的线程池
在开发过程中经常会用到线程池,那么线程池有什么好吃呢?总结为一下三点:重用线程池中的线程,避免因为线程池的创建和销毁所带来的性能开销。 能有效控制线程池的最大并发数,避免大量的线程之间因相互抢占系统资源而导致的阻塞现象。 能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。Android中的线程池概念来源于java中的Executor,Executor是一个接口,在android中的具体实现是ThreadPoolExecutor,它提供了一系列参数来配置线程池,通过不同的参数可以创
2020-07-16 14:30:58
323
1
原创 IntentService详解
IntentService是一种特殊的Service,它继承了Service并且它是一个抽象类,因此必须创建它的子类才能使用IntentService。IntentService可用于执行后台耗时任务,当任务执行后它会自动停止,同时由于IntentService是服务的原因,这导致它的优先级比单纯的线程要高很多,所以IntentService比较适合执行一些高优先级的后台任务,因为它优先级高不容易被系统杀死。在实现上,IntentService封装了Handler和HandlerThread,这一点可用从o
2020-07-16 10:09:53
370
原创 HandlerThread详解
在Android中实现多线程的方式有很多种,常用的有AsyncTask、HandlerThread和IntentService。AsyncTask在上篇文章中已经介绍过,本篇主要分析HandlerThread的实现原理。HandlerThread本身继承了Thread,它的实现要也很简单,就是在run方法中通过Looper.prepare()来创建消息队列,并通过Looper.loop()来开启消息循环,这样在实际的使用过程中就允许在HandlerThread中创建Handler。@Override
2020-07-15 22:15:49
448
原创 AsyncTask详解
在Android中有多种实现多线程的方式,比如AsyncTask、HandlerThread、IntentService等,其实从本质上讲,它们都是对传统线程Thread的封装。AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和结果传递给主线程并在主线程中更新UI。从实现上讲,AsyncTask封装了Thread和Handler,通过AsyncTask可以更加方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合进行特别耗时的后台任务,对特别耗时的
2020-07-15 17:58:34
1791
转载 Java线程中sleep()、wait()和notify()、suspend()和resume()、yield()、join()、interupt()的用法和区别
从操作系统的角度讲,os会维护一个ready queue(就绪的线程对列)。并在某一时刻CPU只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。或者当前被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。线程退出最好自己实现,在运行状态中一直校验一个状态,如果这个状态为真,就一直运行,如果外界改变了这个状态变量,那么线程就停止运行。sleep使当前线程进入停滞状态,所以执行sleep的线程在指定的时间内肯定不会
2020-07-15 15:05:11
538
转载 Activity/View状态保存和恢复 onSaveInstanceState()和onRestoreInstanceState()
Activity/View onSaveInstanceState和onRestoreInstanceState触发的时机/必要条件1:先看Application Fundamentals上的一段话:Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the i..
2020-06-03 17:54:57
395
原创 Activity生命周期
回顾一下Activity的生命周期执行流程,先上个基本流程图上图展现的是一个Activity正常的生命周期和异常情况下的生命周期(比如Configuration变化,系统回收导致的activity销毁等)。除此之外,需要注意两个Activity切换过程中,两个Activity生命周期的执行顺序。如上图所示,创建两个Activity,分别是ActivityFirst、ActivityLifeCycle. 那么ActivityLifeCycle跳转到ActivityFirst,两个Acti.
2020-06-03 16:39:44
240
原创 在模拟器上运行flutter app抛出Could not update files on device: HttpException异常
在mumu模拟器上运行flutter app,启动的时候闪退,日志如下:I/OpenGLRenderer( 9665): Initialized EGL, version 1.4D/ ( 9665): HostConnection::get() New Host Connection established 0xa0642dc0, tid 9708D/ ( 96...
2019-12-07 17:30:26
4143
1
原创 Cookie和Session的区别
1.存储位置cookie存储在浏览器临时文件夹中,以明文方式存储,可以隐私信息加密存储,为多个用户共享seesion存储在服务器内存中,一个session域对象,为一个用户浏览器服务2.安全性cookie是以明文方式存储,存放在客户端中,安全性弱,可以通过加密再存放session是存放在服务端内从中,安全性较好3.网络传输量cookie会传递信息给服务器sessio...
2019-05-18 19:46:58
1047
原创 获取手机号码
方式一://获取手机号码 TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String deviceid = tm.getDeviceId();//获取智能设备唯一编号 String te1 = tm.getLine1Number();//获取...
2018-10-15 10:25:47
5214
11
原创 IOS蓝牙重连
如果是mfi过的的蓝牙设备 蓝牙回到可连接范围手机系统蓝牙会自动连接 你app 直接获取系统已连接的蓝牙设备列表 选择连接 如果不是mfi的蓝牙设备 保存需要重连的蓝牙设备的uuid 通过uuid重连 还有就是 后台断开 提示用户是否需要重连 给选择连接或者不连接 要么就是不提示 在后台断开就一直走重连流程 根据具体情况和需求采用不同的重连方式...
2018-06-21 11:28:05
2264
原创 TextView跑马灯状态监听
最近UI有需求是 文本过长用跑马灯显示,跑完一遍后超出文本状态用 Marquee.END的模式,Android本身没有提供跑马灯状态监听的接口,本打算自定义一个TextView,定时去计算,虽然可以实现,但是效果应该没原生的好,于是决定使用反射的方式去实现,具体代码如下package com.dbn.dialogtest;import android.content.Context;impo...
2018-05-14 15:54:50
2966
原创 二叉树的几种遍历方式
package com.sys.binarytreetest.binary;import java.security.Principal;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Stack;/** * Created by chengjia...
2018-02-26 10:58:32
311
原创 Android获取本机蓝牙地址
从Android6.0开始,通过BluetoothAdapter.getDefaultAdapter().getAddress()获取的地址是一个固定值02:00:00:00:00:00,部分从低版本升级到6.0的手机也还是可以获取真实的MAC地址的。下面通过反射的方式获取蓝牙地址:public static String getBtAddressByReflection() {
2017-12-18 15:11:04
11780
3
原创 Android SQLite语句记录
CREATE TABLE 'test'('mac' varchar(20) not null,'dateString' varchar(20) not null,'stepnum' integer,'activitytime' integer default(0),primary key ('mac' , 'dateString'));select * from dbstepct wh
2017-11-27 11:23:09
441
原创 Android O使用通知遇到的坑
今天在Android 8.0上使用通知的时候,遇到一个问题,只要一发出通知,就弹出系统界面已停止运行的弹框。如下图所示代码如下:NotificationChannel chan1 = new NotificationChannel(PRIMARY_CHANNEL, "cd", NotificationManager.IMPORTANCE_DEFAULT)
2017-11-08 15:12:47
9986
1
转载 Android BLE ERROR CODE
So here is a list of commands that aredocumented by hardware developers, such as Nordic and codes I figured outmyself. List is to be completed.StatusStatus HexDescription
2017-09-08 17:18:34
26643
转载 浅谈ios为什么比安卓流畅
一、优先级别不同:iOS最先响应屏幕 当我们使用iOS或者是Android手机时,第一步就是滑屏解锁找到相应程序点击进入。而这个时候往往是所有操控开始的第一步骤,iOS系统产品就表现出来了流畅的一面,但Android产品却给人一种卡顿的现象,更别说后续深入玩游戏或者进行其它操控了。这是为什么? 其实这与两个系统的优先级有关,iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Me
2017-08-17 09:37:17
2049
原创 Android ViewPager Fragment相互嵌套遇到的问题
在项目开发中要在主页中显示不同的页面Fragment,页面Fragment中又嵌套Viewpager,Viewpager添加的是Fragment,然后根据需求增减主页的页面个数时,发生如下异常。解决方法将主页Fragment中嵌套的ViewPager的apdater设置为空05-22 18:04:26.960 3869-3869/com.isport.tracker E/AndroidRuntim
2017-05-22 18:10:51
1717
翻译 Update your app to take advantage of the larger aspect ratio on new Android flagship devices
To deliver more engaging viewing experiences to their users, many Android OEMs are experimenting with new, super widescreen smartphones. Samsung has just announced a new flagship device, the Samsung
2017-04-01 09:50:26
1038
原创 html5 实现时钟
直接贴代码html lang="en">head> meta charset="UTF-8"> title>Canvas Teststitle> script type="text/javascript"> ///格式化数字 function PrefixInteger(num, n) { return (Ar
2017-03-23 00:00:36
1384
原创 单例模式在Android中的应用
单例模式是应用最广的设计模式之一,在应用这种模式的时候,单例对象的类必须保证只有一个实例存在。许多时候,整个系统只需要拥有一个全局对象,这样有利于协调系统的整体行为。如一个应用中,应该只有ImageLoader实例,这个ImageLoader实例中又包含网络请求、缓存系统、线程池等,很耗资源,因此没有理由让他构造多个实例。这种不能自由构造对象的情况就是使用单例模式的场景。在Android系统中存在
2017-03-19 16:52:54
1025
转载 BLE 广播数据解析
BLE 设备工作的第一步就是向外广播数据。广播数据中带有设备相关的信息。本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析。广播模式BLE 中有两种角色 Central 和 Peripheral ,也就是中心设备和外围设备。中心设备可以主动连接外围设备,外围设备发送广播或者被中心设备连接。外围通过广播被中心设备发现,广播中带有外围设备自身的相关信息。广播包有两种:
2017-03-08 12:13:39
5733
转载 TCP/IP协议三次握手与四次握手流程解析
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+
2017-03-07 22:56:00
268
转载 jquery中attr和prop的区别
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。关于它们两个的区别,网上的答案很多。这里谈谈我的心得,我的心得很简单:对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。 上面的描述也许有点模糊,举几个例
2017-02-06 22:33:26
1338
1
原创 适配android 7的自定义相机的预览及拍照
import android.Manifest;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;import android.graphics.Bitmap;import an
2017-02-06 18:34:53
5019
1
原创 android 设置dialog 宽度为屏幕宽度
android 设置dialog 宽度为屏幕宽度 Window win = dialog.getWindow(); win.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = win.getAttributes(); lp.width = WindowManager.LayoutParams
2017-01-13 15:20:38
2446
原创 $(document).ready()与window.onload()的区别
1.执行时机$(document).ready()方法和window.onload方法功能相似的功能,但是在执行时机方面是有区别的。window.onload方法是在网页中的所有元素完全加载到浏览器后才执行,即javascript此时才可以访问网页中的任何元素。而通过$(docuement).ready()方法注册的时间处理程序,在DOM完全就绪时就可以被调用。此时,网页中的所有元素对jQue
2017-01-10 22:15:09
372
The Magic of Flutter.pdf
2019-12-24
nrftool connect
2017-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人