藍牙項目開發流程

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日志的解決辦法

85、

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容