2013-08-02 14 views
15

私はSamsung BLE API (archived page)から"Guide and Hint" -docで読んで覚えている:サムスンF/Wとスタック その同期自然での最も重要な概念のネイティブAndroid BLE実装は本質的に同期していますか?

一つ。それは trueonCharacteristicReadコールバックを受信した後に行われるべき任意BluetoothGatt又はBluetoothGattServer方法 に次の呼び出しを返した場合、我々は、特定の特性のために、例えば writeCharacteristicを呼び出す場合には、です。 これは、一度に1つの GATTコールのみをサポートして処理するようにスタックが設計されているためで、 writeCharacteristicまたはreadCharacteristicのいずれかの特性をすぐに に呼び出した場合は無視されます。また、BLEのnativ実装に適用されます

  1. んは、Android 4.3で を導入しましたか?
  2. Samsung APIは、一度に1つの接続されたGATTデバイスもサポートしています。 これはネイティブAPIで変更されていますか?
+0

Googleの問題追跡ツールにAPIの同期性に関するスレッドがあります。https://code.google.com/p/android/issues/detail?id=58381 –

+0

キューのすべての書き込みとこれはこれまでのところよく動作しているようです。 –

+1

@Ash SAMSUNGが提供するドキュメントによれば、振る舞いは書き込み操作に限定されません。はい、キューを使用することは、その問題を解決する一般的な方法です。これまでのところうまく働いています:別のコマンドによるコマンドの取り消しをテストして再現するのは難しいです。以前の呼び出しに基づいてより多くの処理を行うため、BLEコードが複雑になると問題が発生することがよくあります。私は、終了する前(応答を受け取った)または前のものの後に、適切な時間に終了できなかった後にのみ、次のBLE操作を行います。ちなみに、あなたのコメントは、この質問に対する答えとして、より適しています。 – OneWorld

答えて

17

サムスンは最近の「移行」-documentを発表同じページ私は自分の質問にリンクしました。彼らは正確に新しいネイティブBLE APIとサムスンBLE APIを比較しながら私の質問に答える:

スタックとF/Wの同期性は影響を受けていません。我々は、例えば、コールした場合、それがtrueを返す場合onCharacteristicReadコールバックを受信した後、特性特定 writeCharacteristicために、任意BluetoothGatt 又はBluetoothGattServer方法の次の呼び出しが行われるべきである 。これは、 の例では、characteristicのすぐ後にwriteCharacteristicまたはreadCharacteristicのいずれかを呼び出した場合、無視されるため、スタックは で一度に1つのGATT呼び出しをサポートして処理するように設計されているためです。

+1

私は本当にこの質問を見つけてうれしいです。 Googleはそれを明確にするために道を離れるわけではありません。読み取り/書き込み要求が実際に無視されたときに真を返すことは、かなり混乱します。 – svens

+2

android.bluetooth.BluetoothGattが保留中のGATT操作** ** DEVICE **、** PER PROCESS **、または** PERIOD **(すべてのプロセスで)を処理できるかどうかは誰でも確認できます。私はそれがPER DEVICEだと推測しますが、この問題はそれほどうんざりしていて、そうでなければ驚かないでしょう。制限がPER DEVICEのみ​​である場合、複数の同時操作を処理できるOS /デバイスは、この問題がBluetoothAdapterインスタンスの弱い素朴な実装に起因することを銃で証明しています。すべてのプロセスにまたがるシングルトン)。 – swooby

+0

BluetoothGattオブジェクトごとに1つの保留中の操作です。 – Emil

-1
  1. いいえ、ほとんどの関数呼び出しは非同期です。
  2. 私は分かりません。公式の文書には言及されていませんが、それはどちらか一方だけをサポートしているとは言えません。私はそれができると信じています。この記事をチェックしてください:http://blog.lemberg.co.uk/getting-bottom-android-bluetooth-low-energy-api#.UfvK6ZK-1cY

それは、複数の周辺機器を(私はその源が何であるかを知らない)と言う1つのAndroidの中央装置に接続することができます

+1

Samsung ble APIも何らかの形で非同期です。コールバックで答えが得られます(ただし、APIは非常に似ています)。しかし、2つのリクエストを短時間で起動すると、最初のリクエストが完全に進行していない間に最初のリクエストがキャンセルされることがあります。したがって、ネイティブAPIにもこの動作がある場合は問題です。 – OneWorld

+0

ああ、今私は理解している。ネイティブAPIがこの動作に従っているかどうかはわかりません。私はそう思う。あなたが2 scanBLEを発射した場合、前のものはキャンセルされますが、私はそのことについてはわかりません。 – edoardotognoni

関連する問題