28

最新の Android スマートフォン、つまり HTC One V を使用して Bluetooth 4.0 (AKA Bluetooth Smart) デバイスを操作する方法を見つけようとしています。

Bluetooth 4.0 ハードウェアを搭載した Android 4.0 でも、API の制限により GATT プロファイルを使用すると問題が発生することがわかりました。

Motorola が BT LE 用の独自の API をリリースしたのを見ましたが、それが他のベンダーで機能するかどうかはわかりません。私の目標は、適切なハードウェアを備えたすべてのスマートフォンのユニバーサル サポートを得ることです。

解決策の提案は大歓迎です。

アレクセイ

PS: はい、HDP 用の Android API を見ましたが、「従来の」Bluetooth デバイスでのみ使用されているようです (BT LE のように低エネルギーのものではありません)。

4

6 に答える 6

26

残念ながら、Android は現在 Bluetooth Low Energy をまったくサポートしていないため、Android ネイティブの GATT API はありません。これは今後の Android リリースで変更される可能性がありますが、今日のメーカーは代わりにサードパーティの Bluetooth スタックを Qualcomm、Broadcom、CSR などのベンダーの Low Energy サポートと統合しています。これらには独自の API セットが付属しており、その特定のベンダーのスタックを使用する一連の電話への互換性が明らかに制限されています。幸いなことに、iOS や Windows 8 などの他のプラットフォームにはネイティブの GATT BLE API があり、それらは十分にサポートされています。Android については、Google が BLE で行われた Linux/BlueZ の作業を Android に統合することを決定するまで待つ必要があります。

于 2012-04-09T08:55:15.727 に答える
13

いくつかの調査の後、私はこれしか言えません:

  • Motorola は Broadcom の側に立ち、独自の API を開発しました。既存のプロファイルのみをサポートしていると述べているため、非常に制限されているようです。ここでチェックしてください

  • Samsung は、BLE API に関する情報を提供していません。この APIが存在し、 samsung.bluetoothle と呼ばれることを確認できます。SGSIII の BLE 機能を使用する Google Play のアプリを実際に逆コンパイルしたところ、Android のネイティブ BT API には存在しないいくつかのメソッドが見つかりました。それらの名前は、BLE 関連であることを明確に示しています。私はJavaリフレクションを介してそれらを使用しようとしましたが、現在ライブラリを開発する可能性を考えています。しかし、私がこれまでに実行したテストでは、せいぜい不安定な結果しか得られませんでした。Samsung の開発者フォーラムにもスレッドがあります。興味がある場合は、ここで圧力をかけることをお勧めします。

  • この点に関して、Google はほとんどコメントしていません。Galaxy Nexus にはこの問題に関するスレッドがあり、多くの人が文句を言っています。Google からの回答に最も近いものは、ここで見つけることができます。

[アップデート]

Samsung はまた、Android のいくつかのクラスを変更しました。具体的には、次のとおりです。

  • BluetoothAdapter
  • BluetoothDevice

[アップデート]

GoogleとSamsungの両方からのサポートが不足しているため、この問題をしばらく脇に置いていたので、これまでに学んだことを投稿します。

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 回中 2 回は BLE デバイスを検出します。これはSGSIII専用です。新しいメソッドを抽出するまでには至っていませんが、抽出しBluetoothDeviceたらここに投稿します。

于 2012-11-28T08:39:37.133 に答える
2

SDK 18 では現在サポートされています。ドキュメントはここにあります:

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Nexus 4 でテストすると、Bluetooth スタックがクラッシュします。

于 2013-08-01T21:26:30.163 に答える
1

HTC は昨年から HTC One X+、Droid DNA、そしてもちろん HTC One で BLE をサポートしています。当初、HTC BLE API はリクエストに応じて提供されていましたが、現在はhttp://htcdev.comから自由にダウンロードできます。

はい、Android API レベル 18 の Google からの新しい標準 Android BLE API が間もなく登場します (IO ビデオのプレビューを参照) - ただし、サードパーティ API (HTC、Samsung など) を互換性のある方法でラップして、新しい標準 API をサポートすることができます。すべての API は、GATT プロファイルのサポートにおいて非常に類似しているため (IOS と同様)。

于 2013-06-12T18:24:38.727 に答える
0

発見されたように、4.3 には BLE のサポートがありますが、特に Nexus デバイスでは非常に壊れています。私の意見では、製品化の準備ができていません。

于 2014-06-03T10:42:49.103 に答える
0

andorid で利用可能な BluetoothGatt API

https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html

于 2014-05-30T05:38:19.983 に答える