蓝牙项目开发流程

0参考代码

蓝牙(BLE)模块及协议.pdf:在电脑内,有助于理解ble

BLE蓝牙在Android开发中的应用 - Android移动开发技术文章_手机开发 - 红黑联盟

Android BLE开发之Android手机与BLE终端通信 - hellogv的专栏 - 博客频道 - CSDN.NET

置顶 Android 蓝牙4.0BLE开发实现对蓝牙的写入数据和读取数据 / 蓝讯

dfrobot Android源码

Android BLE学习(三):编写自己的 BLE蓝牙读写工具(功能仿照nrf master control panel)

iOS-BLE蓝牙开发持续更新 - 简书

考虑使用:public boolean  startLeScan (UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)

使用带回应写模式,这种模式会降低部分转 发效率,但可保证单个数据包的正确性,而使用 CBCharacteristicWriteWithoutResponse参数,使用不带回应写模式,这种模式会有利于提高转发效率,但数据包的正确性需要 APP 上层去校验。

如何写java注释文件

JAVA代码注释规范 - FastThinking的专栏 - 博客频道 - CSDN.NET

1,如何制作jar包

使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解 - JunkChen - 博客频道 - CSDN.NET  如何使用jar打包文档和打包时可以参考

Android4.2以上 BLE 稳定性解决方法-CSDN论坛-CSDN.NET-中国最大的IT技术社区

Android 将Activity打成jar包供第三方调用 - Wave的专栏 - 博客频道 - CSDN.NET

Android 打包Jar(发布SDK)常见问题及解决方案 - Wave的专栏 - 博客频道 - CSDN.NET

有例子 android 关于生成jar包的问题_风云飞飞_新浪博客

如何制作Jar包并在android中调用jar包 - 记事本 - 博客频道 - CSDN.NET

Android打包Jar(发布SDK)注意事项及问题解决-安卓教程-手机开发-壹聚教程网

android打包SDK(包括资源)和APK全总结_lephone's blog

Eclipse导出jar包(含方法注释)-lsg615-ChinaUnix博客

Eclipse的Java开发中jar导入后无法使用包内class的解决方案 - 推酷

怎么用Eclipse将项目导出成jar包啊-黑马程序员IT技术论坛 - Powered by Discuz!

Eclipse导出jar文件的两种方式_高庆亮_新浪博客

2,确定用DexClassLoader加载jar包,相关资料如下:

【原创】使用DexClassLoader调用jar包 - 看雪安全论坛

深入理解Android之Gradle - Innost的专栏 - 博客频道 - CSDN.NET

使用 Gradle 管理你的 Android Studio 工程 - OPEN 开发经验库

Android手动混淆打包(com.android.library类型工程项目打包jar包)

Android动态加载基础 ClassLoader工作机制

解决方法数过多导致无法打包apk或者apk安装失败:

Android动态加载插件APK

dex分包方案概述与multidex包的配置使用

multidex分包续:将指定的类打包到主dex中

dex文件的反编译-dex2jar和jd-gui

Android动态加载学习总结(一):类加载器 有demo

Android 使用Ant打渠道包

3,使用的架构

*****  从友盟微社区看Android第三方SDK架构实践-CSDN.NET

Android App整体架构设计的思考 - ysh06201418的专栏 - 博客频道 - CSDN.NET

从零开始开发一款Android app,前期需要哪些规划工作避免代码臃肿混乱? -

MagiLu 的回答 - 知乎

在Android应用中使用Clean架构 - OPEN 开发经验库

实战解析Android架构设计原则-CSDN.NET

App工程结构搭建:几种常见Android代码架构分析 - 51CTO.COM  ******

在具体的xxxInfo,java中有很多实体类中是没有get/set的方 法,而是直接使用public的字段名。这一点,我是推荐这种方式的,特别是在移动开发中,get/set方法很多时候是完全没有必要的,而且是有性能消 耗的。当然如果需要对字段设置一定的控制,get/set方法也是可以酌情使用的。

系统架构师-基础到企业应用架构-分层[上篇] - 何戈洲 - 博客园

4,字节数组转化为16进制字符串输出

字节数组转化为16进制字符串输出 - u014539776的专栏 - 博客频道 - CSDN.NET

后面含16进制和2进制转换方法

5,定时器

android 三种定时器的写法 - 包子蜀黍的博客 - ITeye技术网站

6,基础知识:&|

&,| 既是位运算符又是逻辑运算符,&,|的两侧可以是int,也可以是boolean表达式,当&,|两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算

&按位与:两个操作数中位都为1,结果才为1,否则结果为0

|按位或:两个位只要有一个为1,那么结果就是1,否则就为0

Java的位运算符详解实例

7,基础知识:字节,位

ASCII码: 一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。

而一位16最多只表示到16,即F表示16,要表示到256,就还需要第二位,

所以1个字节占2个16进制位

8,有可能用到

如果要进行多个连接,每次连接完成后可以将BluetoothGatt的对象放到一个list里面,获取到的服务也放到一个List里面,然后发送数据的时候调用不同的Gatt发送不同的通道数据即可。

9,接口

java中接口interface用法小结_谁敢说俺丑_新浪博客

10,final,static

浅析Java中的final关键字 - 海 子 - 博客园

11,未解决的问题:

android使用onActivityResult能否在其他非activity类获取

我想请问下,onActivityResult是否只能在activity中才能接受到其他activity返回的数据,在其他非activity类中能接收吗?例如我有两个类,A和B,A是一个activity,B是一个普通类,B类要做的事情就是从当前界面跳转到google Play商店,A类将自身的activity传给了B类,由B类负责跳转,而且跳转后返回的数据也在B中处理。我在B类中implements了OnActivityResultListener,复写了 public boolean onActivityResult方法,但是发现这个接口无法接收到从google Play商店传回来的数据。请问下有人知道应该如何实现么?一定是分开两个类写,不能将onActivityResult方法写在A类中。

12

安卓开发-Activity中finish() onDestroy() 和System.exit()的区别 - imzoer的专栏 - 博客频道 - CSDN.NET

13,更改app可以使用的的最低sdk

修改android项目sdk版本的方法_瑞哲王子_新浪博客

14,android回调函数

***android中的回调 - lindir的专栏 - 博客频道 - CSDN.NET

Java/Android中的函数调用&回调函数&自定义回调函数 - _程序猿大人_的博客 - 博客频道 - CSDN.NET

android之回调函数的用法和意义 - 一个本科小生的奋斗史 - 博客频道 - CSDN.NET

Java回调机制解析 - pi9nc的专栏 - 博客频道 - CSDN.NET

Android---回调机制小例子 - Android移动开发技术文章_手机开发 - 红黑联盟

可以用android实现员工和老板的回调机制

15,errror,why:改成 final了

Cannot refer to the non-final local variable rssi defined in an enclosing

scope出现在MainActivity :mLeDeviceListAdapter.addDevice(device, rssi, record);

16,listview

讲解清楚 Adapter的getView方法详解 - Yelbosh的专栏 - 博客频道 - CSDN.NET

BLE 广播数据解析 - 推酷android adapter中到converView机制 - 余炜的博客 - ITeye技术网站

LayoutInflater的获取与使用 - maliqian - 博客园

17,onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord)中的scanRecord

BLE 广播数据解析 - 推酷

18,listView Adapterd中的viewHolder

Android中利用ViewHolder优化自定义Adapter的典型写法 - 圣骑士wind - 博客园

19,MainActivity extend ListActivity app会闪退

20,BluetoothGattCharacteristic

Android提高之Android手机与BLE终端通信_Android_脚本之家

Android蓝牙调试助手实现 - 华清远见嵌入式学院

Android4.3 蓝牙BLE初步 - Savage F. Morgan - 博客园

21,字节数组

String.getBytes()方法中的中文编码问题_桦矜_新浪博客

22,如果有些场合,只需要临时需要创建一个接口的实现类,“不提供接口实现的情况下,直接new了一个接口实例”,可以用来简化代码.

java:使用匿名类直接new接口 - 菩提树下的杨过 - 博客园

java 在new时候实现一个纯虚接口的类,并申请一个该类的对象 - hellochenlian的专栏 - 博客频道 - CSDN.NET

23,把字节数组输出为16进制字符

java的byte数组的不同写法 - LVXIANGAN的专栏 - 博客频道 - CSDN.NET

final byte[] data = characteristic.getValue();

if (data != null && data.length > 0) {

final StringBuilder stringBuilder = new StringBuilder(data.length);

for(byte byteChar : data)

stringBuilder.append(String.format("%02X ", byteChar));

String.format("%02X ", byteChar)是把每个字节输出为十六进制字符

Formatter

Eclipse修改编码格式_电脑软件_百度经验

24读写操作

android BluetoothLE 多个 setCharacteristicNotification writeCharacteristic 失效 - 即将踏上社会的人 - 博客园

查看某个characteristic的属性getProperties()

判断此characteristic是否可以写if(getProperties()&characteristic.PROPERTY_WRITE>0)

如果可以写,设置characteristic的值

BluetoothGatt.writeCharacteristic(BluetoothGattCharacteristic characteristic)

25字符编码方式:在输出AA(170)这种大于十进制数127的十六进制字节时由于byte的范围为-128到127,输出的结果为负数(byte最高为为符号位),显示在界面上是乱码,可以考虑用如下输出方式:下面也无法解决,因为有的ascii码对应的字符本身系统就无法显示,还是显示乱码

 String s="AA";   byte[] result=Conversion.hexStringToByteArray(s);   System.out.println(new String(result,"ISO-8859-1"));

java 里面的string 和byte[] 怎么互转?_百度知道

Java几种常见的编码格式 - liuyz2006 - BlogJava

Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串 - uikoo9的专栏 - 博客频道 - CSDN.NET

16进制数据,和10进制数据,只是表示方法不同. 当赋值之后(其实是编译之后),就没有分别了.只有输入输出,以及写代码的时候,才有区别. 所以16进制,10进进制,只有输入输出和用字符串表示的时候,才有区别的必要. 当定义一个变量,不论用16进制(常量)赋值初始化,还是10进制赋值初始化,只是编译时候处理方式不同. 数据的值,是不用区分16进制,和10进制的. 因为编译后的变量里,储存的是二进制,不关16进制,和10进制的事情. 所以,直接组合就成了.

26校验码

数据校验是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,说明数据是完整的。

数据校验_百度百科

最详细易懂的CRC-16校验原理(附源程序) - 94cool - 博客园

27十六进制求和

long x = Long.parseLong("f1", 16); long y = Long.parseLong("f2", 16); System.out.println(Long.toHexString(x+y));

28根据空格拆分

public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串. 然后就要明确正则表达式的含义了: \\s表示 空格,回车,换行等空白符, +号表示一个或多个的意思,所以...

Split区分一个或多个空格 - liruizhuang的专栏 - 博客频道 - CSDN.NET

Java,byte数组和字符串互转,不可打印字符_jfeiyi_新浪博客

请问为什么把byte字节数组的元素b转化为16进制 需要&..._慕课问答

Java 中 byte、byte 数组和 int、long 之间的转换 - Defonds 的专栏 - 博客频道 - CSDN.NET

29字符串去掉空格

JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间 复制代码 代码如下:String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll(" +",""); 去掉所有空格 4.str = .replaceAll("\\s*", ""); 可以替换大部分空白字符, 不限于空格 \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个

Java String.split()用法小结 - 残星 - 博客园

public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串. 然后就要明确正则表达式的含义了: \\s表示 空格,回车,换行等空白符, +号表示一个或多个的意思,所以去掉一个空格 或 多个空格或Tab用str.split("\\s+")

\\d表示 0-9 的数字, \\s表示 空格,回车,换行等空白符, \\w表示单词字符(数字字母下划线) +号表示一个或多个的意思,所以...

30如何和BLE发射器连接前获取发射器的广播信息

ble广播相关资料

蓝牙4.0BLE抓包(二) – 广播包解析 - 强光手电 - 博客园

[蓝牙] 2、蓝牙BLE协议及架构浅析&&基于广播超时待机说广播事件 - beautifulzzzz - 博客园

android 获取广播数据相关资料

BLE 广播数据解析 - 推酷

Android上获得ibeacon的广播数据--BLE_Ibeacon - chencglt的博客 - 博客频道 - CSDN.NET

BLE 广播数据解析 - 小人物702 - 博客园

31ByteBuffer的用法

ByteBuffer用法小结 - mars5337的专栏 - 博客频道 - CSDN.NET

Java NIO学习笔记之二-图解ByteBuffer - Baple的专栏 - 博客频道 - CSDN.NET

ByteOrder (Java 2 Platform SE 5.0)

ByteOrder.LITTLE_ENDIAN:多字节值的字节顺序是从最低有效位到最高有效位的。

32异常

什么时候要抛出异常? - tengxiaoming的专栏 - 博客频道 - CSDN.NET

JAVA程序中抛出与声明异常 - Hamber_Bao的专栏 - 博客频道 - CSDN.NET

33手机的系统日期

Java 中 byte、byte 数组和 int、long 之间的转换 - Defonds 的专栏 - 博客频道 - CSDN.NET

java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结 - 路人甲的专栏 - 博客频道 - CSDN.NET

Java、Android超精确测量代码执行时间差 - 萨尔 的个人空间 - 开源中国社区

Android中系统设置参数改变监听(以时间同步为例) - 还是你最好 - 博客园

www.cnblogs.com/AdiSky/archive/2012/11/29/2795168.html

android.os包中一些类的使用

Android 通过应用设置系统日期和时间的方法 - 爱孔孟 - 博客频道 - CSDN.NET

android 获取时间 - Android移动开发技术文章_手机开发 - 红黑联盟

Android获取手机的当前时间和获取时间的各种不同的格式 - 故作坚强的专栏 - 博客频道 - CSDN.NET

Android常用之系统时间获取 - Android移动开发技术文章_手机开发 - 红黑联盟

android开发 怎么获取手机当前时间_百度知道

android获取手机真实时间与时区,IP地址_百度知道

34Android字符串操作:

Android TextUtils类介绍 - 叶园 - 博客频道 - CSDN.NET

TextUtils.isEmpty(str)与str.isEmpty()有区别吗?哪个更好?请写出原因_百度知道

Android TextUtils类常用方法 - leigo - 博客频道 - CSDN.NET

35类的单例模式

sqllite数据库的存取中用到

Java:单例模式的七种写法 - 问征夫以前路 - BlogJava

JAVA设计模式之单例模式 - 一个本科小生的奋斗史 - 博客频道 - CSDN.NET

编程-java中在类定义里能实例化本类的对象吗?

Java单例模式深入详解 - DM张朋飞 - 博客园

36小数点后面1位

get_double = Double.ParseDouble(String.format("%.2f",result_value));

java、怎样简便的保留小数点后两位。_百度知道

java double类型保留两位小数4种方法 - huaishuming的专栏 - 博客频道 - CSDN.NET

Java float保留两位小数或多位小数 - Dtscal - 博客园

37byte转换为int

byte temp

temp&0xff转换为int

38高8位在前和低8位在后

第一、二个字节分别为工作电流的高8位和低8位

ByteBuffer buffer=ByteBuffer.wrap(receiveData, 1, receiveData.length-2).order(ByteOrder.BIG_ENDIAN);

JAVA_ByteOrder_API之家

39short转换为字节数组

java中long,int,short与byte数组之间的转换

40处理一个方法返回多个值

java 如何能在一个方法中返回多个值?_百度知道

java 一个函数如何返回多个值 - beiyeren - 博客园

java如何使用函数返回多个函数值?求高手知道啊-CSDN论坛-CSDN.NET-中国最大的IT技术社区   ********

41sqlLite存取Boolean类型数据

Sqlite中存储Boolean和boolean对象,分别使用boolean和text类型 - 山里孩子 - 博客频道 - CSDN.NET

42需验证:

问:怎么把 0xEA  0x01 一次性发送到蓝牙特征值里面, 求解

答:byte value[]=new byte{0xEA,0x01}

问:

超过了byte的取值范围。

答:byte value[]=new byte{(byte)0xEA,0x01}

 问:强转之后蓝牙设备读取的数据还是0xEA吗 ?

答:是

43连多个ble设备

如何读取一次,我连接的多个设备的 rssi 值_百度知道

44服务一直在后台运行

停止当前服务:Process.killProcess(Process.myPid());

android service杀死后又起来了

如何让android的service一直在后台运行? - Android - 知乎

www.cnblogs.com/liyiran/p/4903825.html

45finish()后,下面的语句还在运行

Android Activit finish 后到底是退出了啥?-CSDN论坛-CSDN.NET-中国最大的IT技术社区

关于activity binder service 线程未结束 finish 生命周期-CSDN论坛-CSDN.NET-中国最大的IT技术社区

46信息推送功能

Android消息推送完美解决方案全析 - 51CTO.COM

最全APP推送(push)秘籍:做推送,这一篇就够了!-鸟哥笔记

Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它) - xiaobeibeinihao的专栏 - 博客频道 - CSDN.NET

消息提示类控件使用之Notification(状 态栏通知)详解 - MakeYourChance的专栏 - 博客频道 - CSDN.NET

47fragment

Fragment、Activity比较

fragment和fragmentactivity解析-android100学习网

48比较2个字节数组是否相等

Arrays.equals(a,b)

49Android中Parcelable接口用法

Android中Parcelable接口用法 - Harvey Ren - 博客园

Android中Parcelable接口的使用 - 残剑_ - 博客园  含Intent传递

android 用Parcelable传递复杂数据类型_yihu_新浪博客 完整,正是我需要的

50监听手机蓝牙设备的状态等

android 蓝牙设备监听广播 - LeslieFang - 博客园

listen-安卓设备如何监听蓝牙的连接状态

51自定义监听器类

android 自定义监听器Listening - 雾柳花前 - 博客园

52弹出对话框

Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码_Android_脚本之家

53集合减操作:查询数据库中重发的血糖是否发全,缺少哪一个。用集合来做

在JAVA中,对List集合的加减操作 - u011407281的专栏 - 博客频道 - CSDN.NET

Java中对List集合的常用操作详解_java_脚本之家

java判定数组或集合是否存在某个元素 - 宝剑无锋&.&大巧不工 - ITeye技术网站

JAVA的集合交并差集操作 - - ITeye技术网站

54修改手机的系统时间

安卓 修改系统时间 - AllenCoder - 博客园

55Java中如何将一个一位数输出成两位数?

int a = 3;

System.out.println(String.format("%02d", a));

56自动连接上次蓝牙设备

Android IM(五)连接断开重连 - zyxNobita专栏 - 博客频道 - CSDN.NET

自动连接上次连接的蓝牙设备(Android开发) - 博客频道 - CSDN.NET

57Android回掉函数

android之回调函数的用法和意义 - 一个本科小生的奋斗史 - 博客频道 - CSDN.NET

android回调函数总结 - elleniou - 博客园

58Android异步回调

****android回调的理解------异步任务回调接口 - Anny_Lin的博客 - 博客频道 - CSDN.NET

Android异步回调中的UI同步性问题 - Windstep - 博客园

59连接蓝牙发射器,出现BluetoothGatt.status=12

android 连接不稳定就会出现这种问题。尝试重新连接.

是接口的bug,我的解决方案是当出现129的时候我通过代码将蓝牙重启来避免这个问题

android 蓝牙4.0 BLE 为什么回调onServicesDiscovered方法返回的status参数一直是129?-CSDN论坛-CSDN.NET-中国最大的IT技术社区

关于用nexus 4 开发BLE应用过程,有时候会出现连接蓝牙设备时连不上,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接,这是什么问题?-CSDN论坛-CSDN.NET-中国最大的IT技术社区

bluetooth - Android BLE API: GATT Notification not received - Stack Overflow

Bluetooth Low Energy Service Discovery with Android 4.3 on Nexus 4 - Stack Overflow

关于用nexus 4 开发BLE应用过程数据写入后自动断开的问题-CSDN论坛-CSDN.NET-中国最大的IT技术社区

60如何判断两个时间相差多少天,参数为String

JAVA 比较两个日期相差的天数 - shiyuezhong的专栏 - 博客频道 - CSDN.NET

zwman-hz.iteye.com/blog/1263376

61、安装自动实现Parcelable接口的插件

Android Studio酷炫插件(一)

62、计时器

基于Android中实现定时器的3种解决方法_Android_脚本之家

Android三种实现定时器的方法 - yhm2046的专栏 - 博客频道 - CSDN.NET

Java TimerTask示例,start

schedule() 和 scheduleAtFixedRate() 的区别--转载 - 一天不进步,就是退步 - 博客园

Android 轮询最佳实践 Service + AlarmManager+Thread - yaly的个人页面 - 开源中国社区

在Android中使用AlarmManager - 博客频道 - CSDN.NET

Android中实现定时器的3中方法 - Summers - 博客园

android 定时器暂停 可以用canel()方法 但我又想再次唤起 用什么方法?_百度知道

Android延时执行的几种方法_百度经验

postDelay

关于android中postDelayed方法的讲解 - 如是观的专栏 - 博客频道 - CSDN.NET

63、停止线程

Android中轻松使用线程 - Chiclaim的技术博客 - 博客频道 - CSDN.NET

安卓线程是在执行完run方法后自动销毁吗?_百度知道

Java Thread问题集之Thread.stop()篇 - Coding EveryDay - ITeye技术网站

64、对象赋值,解决run方法中:变量必须为final的问题

variable 'receiveDataInfo' is accessed from within inner class ,needed to be declared final

Java中请问将一个对象赋值给另一个同类对象,这两个对象是否指向同一堆内存?_百度知道

JAVA 对象引用,以及对象赋值 - 飘来荡去。 - 博客园

65、sharedPreferences

关于使用service的上下文和activity来读取sharedpreferences的同步问题-CSDN论坛-CSDN.NET-中国最大的IT技术社区

getSharedPreferences()与getSharedPreferences()与getDefaultSharedPreferences()的区别 - ah200614435的专栏 - 博客频道 - CSDN.NET

getPreferences,getDefaultSharePreference,getSharePreference三种用法的区别-手机软件-电脑编程网

getDefaultSharedPreferences() - life02 - C++博客

66、sqlite查询固定间隔id(id不确定个数)

在sqlite中执行'in'查询操作,如何使用selectionargs匹配多个值 - fkaking的专栏 - 博客频道 - CSDN.NET

67、BluetoothGatt: android.os.DeadObjectException

mBluetoothGatt.close();

blog.csdn.net/wk1063645973/article/details/50036085

68、数据重传:在48握手后请求特定编号的血糖数据

writeCharacteristic(UUIDList.serviceUUID,UUIDList.wCharacteristicUUID, XcommandHandle.sendData("0x55", glucoseId.toString()))

发射器会把特定编号的数据发回,在47中接收后再一次写上面语句则不再执行

可能的原因:

对 BluetoothGatt 操作(read/write)Characteristic(),(read/write)Descriptor()和readRemoteRssi()都是异步操作。需要特别注意的是,同时只能有一个操作(有些贴这说只能同时有一个writeCharacteristic(),这个我并没有严格验证),也就是等上一个操作回调(例如onCharacteristicWrite())以后,再进行下一个操作。

开发建议:把这写操作都封装成同步操作,一个操作回调之前,阻塞主其他调用。

BLE开发的各种坑 - Wave的专栏 - 博客频道 - CSDN.NET

解决方案:在public voidonCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic,intstatus) {中写

if(characteristic.getValue()[0]==85){

if(writeCharacteristic(UUIDList.serviceUUID,UUIDList.wCharacteristicUUID, characteristic.getValue())){//1.4.10 接收器请求发送指定编号的血糖历史数据:发

Log.i(TAG,"CGM--in onCharacteristicWrite,0x55 Specified glucoseId Data reSend writeCharacteristic success.");

}

}

69、导入UI项目:显示缺少support-annotations:24.0.0,解决办法

support annotations 23.3.0/23.4.0/24.0.0 - 下载频道 - CSDN.NET

到如了v4怎么android.support.annotation_百度知道

用vpn获取设置DNS(在学校可以下载到,家里不行)

70、查询某个initialCycleID的最小glucoseId和最大glucoseId的记录

求Android的SQLite查询,带Group和Order - SegmentFault

一个SQLite数据库的ORDER BY和GROUP BY代码实例 - 51CTO.COM

SQLite学习笔记五:Order By,Group By,Having,Distinct - 了凡 - 博客频道 - CSDN.NET

www.runoob.com/sqlite/sqlite-having-clause.html

sqlite3 limit 使用limit - majiakun1的专栏 - 博客频道 - CSDN.NET

71、断开重连超过1天的数据,如果glucoseId=256, Conversion.shortToByte(new Short(hexStrSend))方法有问题,应该得到0100却得到16进制数0000,还要考虑short可取的最大值是32 767,而数据有7天,每3分钟1条共计:3360条。解决方案:用整形或者无符号short

java中如何将有符号数转化成无符号数 - ITeye问答

java整数和byte数组之间的转换 - aotian16的专栏 - 博客频道 - CSDN.NET

java中long

72、当一个发射器的数据有几千条时查询会比较慢

方案1:使用索引

SQLite 索引 - SQLite教程

在SQLite中使用索引优化查询速度 - chu_qun的专栏 - 博客频道 - CSDN.NET

sqlite3:自增主键、联合主键

方案2:增加1张表  ok

73、外键

SQLite 外键 - 千里之外 - 博客频道 - CSDN.NET

Sqlite之外键约束跟内外联表 - 伍松和的个人空间 - 开源中国社区

Android和SQLite版本对应关系 - 大学霸 - 博客园

73、小米手机出现以下异常

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

blog.csdn.net/liranke/article/details/44785877

blog.csdn.net/u011476017/article/details/12620725

stackoverflow.com/questions/9425732/androidruntime-java-lang-runtimeexception-cant-create-handler-inside-thread-t

74、暂时不用的方法加注解

浅析@Deprecated

代码重构的技巧——合理使用@Deprecated

75、导入的java项目中文乱码怎么解决

关于导入Java项目乱码问题解决

76、如果字符串有小数点,先转换成double,再转换为int,不能直接转换为整数。例如:

Integer score;

score = Integer.valueOf(info2[j]);改成

score = (int)Double.parseDouble(info2[j]);

77、android utc时间

Java获得UTC时间 *****

为何全球不统一时间日期,而要分时区?

www.iteye.com/problems/52586

UTC时间与北京时间的关系

web 开发涉及到时间的是一律使用 utc 时间吗?

Java处理GMT时间和UTC时间

java new Date() 变成GMT&& GMT时间与CST时间转换

android 时区转换

UTC Time 

Android中关于日期时间与时区的使用总结

android 获取UTC时间和与.net时间戳的转换

Android utc时间

Android获取UTC时间的方式

Android 转换UTC时间:2013-06-13T14:15:44.000的时间格式 为GMT时间

Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换

78、批量插入sqlite数据

android中SQLite数据库中用insert同时插入多条记录的方法和效率比较

中國與世界各國的時間差一覽表

从以上2个链接可以看出,和中国相差最大的时区为18,会有18*20=360条记录,所以选择用事务插入记录

深入Android SQLite 事务处理详解

79、sqlite如何修改主键

SQLite语句如何修改主键

sqlite3 开始建立数据库时,没有设定主键。怎么去修改

80、Unsupported major.minor version 52.0

Unsupported major.minor version 52.0

2.2.3改为2.0.0

81、导入UI项目:出现下面warning

Warning:Dependency commons-logging:commons-logging:1.1.1 is ignored for debug as it may be conflicting with the internal version provided by Android.

In case of problem, please repackage it with jarjar to change the class packages

stackoverflow.com/questions/32262912/dependency-commons-loggingcommons-logging1-2-is-ignored-for-debug-as-it-may-be

stackoverflow.com/questions/41754808/dependency-is-ignored-for-debug-after-adding-aws

stackoverflow.com/questions/25295066/android-dependency-is-ignored-for-release

github.com/owncloud/android/issues/829

解决方法:在build.gradle文件最后加入configurations {

all*.exclude group: 'commons-logging', module: 'commons-logging'

}

Error:Execution failed for task ':app:transformClassesWithInstantRunForDebug'.

> android/os/Parcelable : Unsupported major.minor version 52.0

jdk改为1.8

82、clone下来的项目编译出如下问题:

解决Android Studio报错:DefaultAndroidProject : Unsupported major.minor version 52.0

http://blog.csdn.net/ouyang_peng/article/details/51799001

83、华为meta8手机改变时区:

打开“设置”,点击“高级设置 > 日期和时间”,可以进行相关设置。

meta8改时区

方法:

84、修改时区后,关闭手机重新打开后,电脑无法显示app的log

关闭手机重新打开后,拔一下usb线再重新插上log就有了

或者

打开Device Moniter,查看logcat,见Android Studio突然不显示logcat日志的解决办法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter入门到实战

最全的BAT大厂面试题整理

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/c70989bd5f29

1852
来自专栏FreeBuf

基于时延的盲道研究:受限环境下的内容回传信道

在一次漏洞赏金活动中,挖到个命令注入的洞,我先以时延作为证明向厂商提交该漏洞,厂商以国内网络环境差为由(的确得翻墙)拒收,几次沟通,告知若我能取回指定文件 se...

1385
来自专栏更流畅、简洁的软件开发方式

Attribute(特性),怎么用才更好?

前几年:   2008年的某一天,我坐火车去北京。硬卧上铺,一晚上就到北京了。爬到上铺之后发现,旁边上铺有一老兄抱着一个笔记本,一开始还以为是看电影呢,仔细一...

2539
来自专栏技术与生活

设计模式-命令模式

Client:确定具体的命令和接受者; Command:抽象命令接口,一般是接口类或者抽象类 ConcreteCommand:具体的命令执行,调用接受者 Inv...

1315
来自专栏老秦求学

汇编语言学习01

汇编语言(8086cpu) 恩,学习一门课程,我觉得应该有一定的条理性,而且自己要勤加思考才能学好,条理性:最好就是先整体的介绍一下全本书,然后再详细的介绍各个...

3059

当Vert.x符合Reactive eXtensions(Vert.x简介的第5部分)

这篇文章是我介绍Eclipse Vert.x系列的第五篇文章。在上一篇文章中,我们看到了Vert.x如何与数据库交互。我们使用Future对象来驯服Vert.x...

2082
来自专栏Java架构

最全的BAT大型互联网公司面试题整理

最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。

1.6K4
来自专栏牛客网

2018秋招面经-后端开发

1883
来自专栏编程

C语言在嵌入式系统编程时的注意事项

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程...

6767
来自专栏GIS讲堂

leaflet加载天地图

leaflet是一个轻量级的并且开源的地图框架,是由esri发起的,由于其轻量、简单而被大家喜欢,本文带你学习如何在leaflet中加载天地图。

8163

扫码关注云+社区

领取腾讯云代金券