自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 Excel 常用公式

计算是否2项都完成了=IF(AND(E3="完成", F3="完成"),"是","否")计算有多少个"是"=COUNTIF(W6:W500,"是")用于数据对比合并,查找区域中的第一列一定要是查找关键字=VLOOKUP(C:C,U:Y,1,0)计算是否完成了2项及以上=IF(COUNTIF(G30:U30,"完成")>1,"是","否")计算中高风险区人数= COUNTIFS(J6:J50,"高") + COUNTIFS(J6:J50,"中")...

2021-09-16 16:26:50 173

原创 Android VerticalGridView 焦点选项居中

Android Tv Demo有个引导页,右侧是一个VerticalGridView,亮点在于其焦点始终位于大概中间位置。如下图那怎么实现这个功能呢?查看源码后找到了关键代码:mActionsGridView.setWindowAlignmentOffsetPercent(keylinePercent);mActionsGridView.setWindowAlignment(VerticalGridView.WINDOW_ALIGN_NO_EDGE);如果要完全居中,将keylinePercen

2021-04-29 15:12:09 1154

原创 Android TextView跑马灯

public class MarqueeTextView extends AppCompatTextView { private boolean isMarqueeEnable = false; public MarqueeTextView(Context context) { super(context); init(context); } public MarqueeTextView(Context context, @Nullabl.

2021-04-27 16:43:01 127

原创 Android 全局异常捕获

很简洁的Android 全局异常捕获使用方法public class AppApplication extends Application { @Override public void onCreate() { super.onCreate(); CrashCollector.attach(); }} 源代码public class CrashCollector { static Thread.UncaughtEx

2021-03-08 14:05:48 229

原创 Android gradle编译常用脚本

Gradle aar命名及输出脚本 libraryVariants.all { variant -> //修改产物输出路径 variant.getPackageLibrary().destinationDir = new File(project.rootDir.absolutePath + "/output")// if (variant.buildType.name == 'debug') { variant.outputs.all { out

2021-03-05 14:17:02 216

原创 Android逆向工程之不显示对话框

逆向工程中,有时候需要将对话框去除,下面用代码展示源代码块public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

2021-02-27 16:44:48 236

原创 Android excel文案转strings.xml多国语言

Android 适配多国语言时,需要将翻译好的文案导入Android工程,翻译文案大多以excel方式提供,本工具提供将excel表格的文案转成android需要的strings.xml。使用时需要根据excel表格的格式稍作修改下载链接...

2020-12-24 17:13:42 380 1

原创 Python将android strings.xml导出到excel

引言:做Android开发的时候要做国际化,需要将Android工程中的字符串资源导出到excel,让专业团队翻译。由于项目比较多,手动复制不现实,故使用python 将xml文件中对应的字符串解析到excel中。用法复制以下代码到python文件中,如string2excel.py, 添加可执行权限(mac 电脑 chmod +x string2excel.py),将所有要导出的strings.xml复制到string2excel.py同一目录下,执行./string2excel.py 就会在同级目录

2020-12-24 15:39:50 534

原创 Retrofit2上传文件到AWS S3预签名URL(Upload a file to AWS S3 pre-signed URL using Retrofit2)

引言 Retrofit + Okhttp 上传文件到亚马孙s3服务器场景:Android项目中有个上传日志的功能,后台会通过接口返回一个S3预签名的URL,我通过这个URL使用PUT上传文件。文件上传成功后,我在S3仓库拿到的文件打不开,明显是文件损坏。接口描述:获取一个S3上传文件签名, url签名调用时,使用[put]方法, body是文件二进制流代码分析网络请求框架是Retrofit + Okhttp方法-(文件上传成功后,我在S3仓库拿到的文件打不开,明显是文件损坏。)接口 /**

2020-11-19 11:08:29 463

原创 Android 绘制电池图标

效果图:代码public class BatteryView extends View { private int mMargin = 30; //电池内芯与边框的距离 private int mBoder = 20; //电池外框的宽带 private int mWidth = 700; //总长 private int mHeight = 400; //总高 private int mHeadWidth = 60; priva

2020-11-03 17:25:39 615

原创 Android 编译错误 Error: Invoke-customs are only supported starting with Android O (--min-api 26)

Android Studio编译报错:Error: Invoke-customs are only supported starting with Android O (–min-api 26)解决方案:build.gradle文件中android节点下增加: compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8

2020-10-28 10:22:19 209

原创 Android Studio 优先源码编译的framework.jar(使用系统隐藏的api)

引言场景:做系统开发或者想使用隐藏的api时,通常只能使用反射的方式,缺点:需要使用的api或变量太多时不方便使用。解决办法:将需要在编译时使用的jar包参与编译,不编译到产品apk里,使app运行时调用的是系统api步骤1、将jar包放入libs目录,如下图2、在app 的build.gradle加入参与编译的jardependencies { compileOnly files('libs/framework.jar')}3、调整 .iml里配置的引用库的优先级。

2020-10-27 17:57:22 1433

原创 Bluetooth SIG定义的标准GATT Descriptors UUID

官网链接: https://www.bluetooth.com/specifications/gatt/descriptors/NameUniform Type IdentifierAssigned NumberSpecificationCharacteristic Aggregate Formatorg.bluetooth.descriptor.gatt.characteristic_aggregate_format0x2905GSSCharacteristic Ex

2020-09-23 11:40:43 848

原创 Bluetooth SIG定义的标准Characteristics UUID

官网链接: https://www.bluetooth.com/specifications/gatt/characteristics/NameUniform Type IdentifierAssigned NumberSpecificationAerobic Heart Rate Lower Limitorg.bluetooth.characteristic.aerobic_heart_rate_lower_limit0x2A7EGSSAerobic Heart Ra

2020-09-23 11:31:19 706

原创 Bluetooth SIG定义的标准Service UUID

NameUniform Type IdentifierAssigned NumberSpecificationGeneric Accessorg.bluetooth.service.generic_access0x1800GSSAlert Notification Serviceorg.bluetooth.service.alert_notification0x1811GSSAutomation IOorg.bluetooth.service.a...

2020-09-23 11:14:14 974

原创 Python3列出目录下的文件列表

用法:往文件里面传的参数,第一个是路径(默认扫描当前目录),第二个是要过滤的后缀(不需过滤的就不要传)python3 listFile.py ./ .apk listFile.py#!/usr/bin/python# -*- coding: UTF-8 -*-import sys, osdef print_dir(filePath, subfix): print("path: %s, subfix: %s"%(filePath, subfix)) sum = 0 f

2020-09-19 16:32:57 680

原创 BLE协议在Link Layer状态及转换

Link Layer 5种状态1、Standby State2、Advertising State3、Scanning State4、Initiating State5、Connection State状态解析Standby这是初始状态,在这个状态下,不发送数据,也不接收数据。根据上层实体的命令,可由其它任何一种状态进入,也可以切换到除Connection状态外的任意一种状态。Advertising这是可以通过广播通道发送数据的状态。只能由Standby状态进入。它广播的数据可以由处于S

2020-09-14 15:11:08 289

原创 CC2540 USB dongle 分析蓝牙协议包

一、准备工作1、将cc2540插入电脑usb端口2、安装驱动(驱动链接:https://download.csdn.net/download/forget_zhx/12838794)二、打开抓包工具1、打开Packer Siniffer抓包工具(该工具请自行安装,在*宝上购买cc2540 蓝牙抓包工具的话,店主会送软件包,里面包含使用教程)2、类型选择Bluetooth Low Energy,然后点击start3、点击开始按钮开始抓包三、协议分析分析:Access Address 字

2020-09-12 16:51:46 671 1

原创 GATT-BASED PROFILE HIERARCHY

GATT-BASED PROFILE HIERARCHYjava 伪代码public class Profile { Service mService; Service mService1; Service mService2; /*other*/}class Service { Characteristic mCharacteristic; Characteristic mCharacteristic1; Characteristic

2020-09-10 11:09:34 135 1

原创 7种蓝牙架构

蓝牙核心系统架构

2020-09-10 10:48:03 1113

原创 蓝牙简介

蓝牙模块Bluetooth module)是指集成蓝牙功能的芯片基本电路集合,用于短距离2.4G的无线通讯模块。对于最终用户来说,蓝牙模块是半成品,通过在模块的基础上功能再开发、封装外壳等工序,实现能够利用蓝牙通讯的最终产品。经典蓝牙(BT)泛指支持蓝牙协议在4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐等较高数据量的传输。经典蓝牙模块又可细分为:传统蓝牙和高速蓝牙模块。传统蓝牙模块在2004年推出,主要代表是支持蓝牙2.1协议的模块,在智能手机爆发的时期得到了广泛的使用。高速蓝牙模块在

2020-09-09 19:43:33 759

原创 android gradle复制apk

apply plugin: 'com.android.application'android { compileSdkVersion 30 defaultConfig { applicationId "com.android.androidstudy" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0"

2020-09-08 16:51:51 476

原创 android Adb 发广播、查包名、切换输入法等指令

己查看列表的输入法内容adb shell ime list -s 设置输入法(如搜狗)adb shell ime set com.sohu.inputmethod.sogou.xiaomi/.SogouIME查看app版本(如com.android.google)adb shell pm dump com.android.google | grep "versionName"发广播adb shell am broadcast -a com.android.test --es test_

2020-09-08 16:33:55 840

原创 mac 电脑批量安装apk脚本

背景在android开发过程中,经常安装和卸载单个或多个app, 为了提高工作效率,写了个脚本用于自动安装app。环境mac 电脑脚本#! /bin/bashfor file in ./*do if test -f $file && [ "${file##*.}"x = "apk"x ] then echo 准备安装 $file adb install -r $file else echo $file 不是

2020-09-04 21:07:44 774

原创 小米4蓝牙扫描 HCI日志分析

一、拿到HCI日志文件在开发者选项中打开蓝牙日志日志保存路径为 /sdcard/btsnoop_hci.log二、分析日志下图是使用小米4手机扫描到的一个mi8设备下图是使用小米4手机扫描到的一个蓝牙音箱设备...

2020-09-04 10:10:24 3220

原创 Centos 7 freeradius 搭建企业wifi认证服务

###Centos 7 搭建Wpa认证服务**关键字:**freeradius wpa eap**参考:**http://www.racksam.com/2017/03/02/centos7-install-freeradius原理:路由器设置为WPA/WPA2企业版模式之后,热点的security=SECURITY_EAP,设备再连接该wifi###1、 准备工作:#####一台支持WPA/WPA2企业版的路由器一台安装了centos7的电脑或者虚拟机要保证电脑或虚拟机与路由器同一个网段。

2020-09-04 09:50:40 1895

Android_excel2Stringxml.zip

Android 适配多国语言时,需要将翻译好的文案导入Android工程,翻译文案大多以excel方式提供,本工具提供将excel表格的文案转成android需要的strings.xml。使用时需要根据excel表格的格式稍作修改

2020-12-24

string2excel.py

做Android开发的时候要做国际化,需要将Android工程中的字符串资源导出到excel,让专业团队翻译。由于项目比较多,手动复制不现实,故使用python 将xml文件中对应的字符串解析到excel中。

2020-12-24

Cebal驱动.zip

CC2540 蓝牙抓包工具,USB驱动windows版。在电脑“设备管理器”看到“Cebal controlled devices”如果标示了黄色的标记,表示驱动未安装,电脑无法识别该设备,需要安装驱动

2020-09-12

空空如也

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

TA关注的人

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