2012-04-06 94 views
28

我試圖找到辦法用現代的Android智能手機,即與藍牙工作4.0(又名藍牙智能)設備 - 的HTC One V.Android 4.0中的藍牙智能(4.0)/ GATT支持?

我的理解,存在利用關貿總協定即使在Android 4.0的配置文件的一些問題與藍牙4.0硬件,因爲API的限制。

我看到摩托羅拉發佈了它自己的BT LE API,但不確定它是否適用於其他廠商。 我的目標是通過適當的硬件爲所有智能手機提供通用支持。

任何解決方案的建議都受到高度讚賞。

阿列克謝

PS:是的,我看到了Android的HDP API,但它似乎只能用「經典」藍牙設備使用(不低能量的,因爲BT LE一樣)。

+1

三星發佈了[藍牙BLE SDK(測試版)](http://developer.samsung.com/ble)。看到這個問題http://stackoverflow.com/questions/11104708/bluetooth-4-0-smart-low-energy-on-samsung-galaxy-s3 – OneWorld 2013-05-02 10:00:08

+0

這是一個關於谷歌員工在最新的IO https ://developers.google.com/events/io/sessions/326240948所有使用4.3和BLE硬件的設備都將具有官方的Android BLE API,在此視頻會議中演示。 – OneWorld 2013-06-25 12:11:55

回答

0

至於發現,4.3有支持BLE,但這樣打破,尤其是在Nexus設備。 在我看來,它還沒有準備好生產。

26

不幸的是,沒有Android原生GATT API,因爲Android目前根本不支持藍牙低功耗。這可能會在即將到來的Android版本中發生變化,但現在製造商將第三方藍牙堆棧與高通,Broadcom或CSR等供應商提供的低功耗支持集成在一起。那些來自他們自己的一套API,顯然限制了使用該特定供應商堆棧的一組電話的兼容性。 好消息是在iOS或Windows 8等其他平臺上都有原生的GATT BLE API,並且這些都得到了很好的支持。對於Android,我們必須等到谷歌決定將在BLE上完成的Linux/BlueZ工作與Android相結合。

+0

謝謝。您能否提供能夠爲其平臺提供定製BT LE Android SDK的供應商?(摩托羅拉除外) – AlexeyVMP 2012-04-09 10:15:35

+0

嗨Alexey。儘管我不想公開提供特定供應商,但瀏覽公共可用的藍牙認證網站(https://www.bluetooth.org/tpg/listings.cfm)以查看誰符合Android的堆棧。嘗試高級搜索,然後將spec版本限制爲4.0(您也可以嘗試4.0 + HS),然後查找Android或已知的供應商。 – introiboad 2012-04-10 10:47:36

+0

我忘了提及,那麼你也可以查找特定的手機和他們的資格列表,他們通常會參考他們正在使用的堆棧的QID(Qualification ID),從而允許您將特定的手機型號與堆棧供應商進行匹配。 – introiboad 2012-04-10 10:58:25

13

經過一番研究,我只能這樣說:

  • 摩托羅拉已經與Broadcom片面開發專有的API。它似乎是非常有限的,因爲它聲明只支持現有配置文件。檢查出來here

  • 三星未能提供任何有關其BLE API,,我可以驗證存在的信息,被稱爲samsung.bluetoothle。實際上,我反編譯了Google Play中使用SGSIII的BLE功能的一些應用程序,並發現了一些Android本地BT API中不存在的方法,並且它們的名稱清楚地表明它們與BLE相關。我已經嘗試通過java反射使用它們,並且正在研究開發庫的可能性。但到目前爲止,我運行的測試結果至少有shakey結果。三星開發者論壇上也有一個帖子,如果你有興趣,我會建議你做一些壓力here

  • Google在這方面幾乎沒有發表言論。關於Galaxy Nexus中的這個問題,有一個thread,你應該出來,許多人抱怨。最接近谷歌的答案可以找到here

[更新]

三星還修改了幾個Android的班,更especifically:

  • BluetoothAdapter
  • BluetoothDevice

[更新]

因爲我已經把這個問題擱置了一段時間,由於缺乏來自谷歌和三星都支持我會後我已經學會爲止:

BluetoothAdapter新的方法:

public boolean android.bluetooth.BluetoothAdapter.leTestEnd() 
public boolean android.bluetooth.BluetoothAdapter.setAvStreaming(boolean) 
public boolean android.bluetooth.BluetoothAdapter.setScanLE(boolean) 
public void android.bluetooth.BluetoothAdapter.setScoPathChange(int) 
public boolean android.bluetooth.BluetoothAdapter.startLeDiscovery() 

要使用它們做到以下幾點:

BluetoothAdapter ba = new BluetoothAdapter(); 
Method starteLeDiscoveryMethod = null; 
starteLeDiscoveryMethod = ba.class.getMethod("startLeDiscovery"); 
starteLeDiscoveryMethod.invoke(ba); 

注:此方法特別的作品有點像普通startDiscovery()方法,但至少對我來說,它發現了5次BLE設備2。 和記得,這只是SGSIII。我還沒有開始提取BluetoothDevice中的新方法,但是當我這樣做時,我會在這裏發佈它們。

+0

我可以確認此代碼適用於Android 4.1.1 Samsung SGIII。任何進一步的發現rodkarom? – BBaker 2013-01-21 23:57:19

+0

我很可能不得不在下週的android上爲BLE開發一個「儘可能跨平臺」的解決方案。任何機會你有一些示例代碼可以幫助我在我的追求?沒有我希望在線的那麼多。 – Mamsaac 2013-03-17 05:42:41

+0

對不起,頂部通知您無法開發跨平臺解決方案。請記住,唯一的可能性是Mototola的API和我目前收集的內容。 – 2013-03-18 07:42:53

1

HTC自去年以來一直支持HTC One X +,Droid DNA,當然還有HTC One。最初,HTC BLE API是應要求提供的,但現在可以免費下載http://htcdev.com

是的,Android API API 18中的新標準Android BLE API即將推出(請參閱IO視頻的預覽版) - 但您可以以兼容的方式支持第三方API(支持HTC,三星等)所有API的新標準API在支持GATT配置文件方面非常相似(類似於IOS)。