問題タブ [android-ble]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - location_and_speed 特性から緯度と経度を抽出する方法は?
中心的な役割を果たす Android アプリでは、BLE 周辺機器のorg.bluetooth.service.location_and_navigationサービスのorg.bluetooth.characteristic.location_and_speed特性に格納されている緯度と経度をどのように取得しますか?
私は次のJavaコードを試しています -
デバイス接続で呼び出されるコールバックは次のとおりです。
サービスが検出されたら、サービスと特性オブジェクトを作成しようとします (そして、それらがnull
デバッガーにないことを確認します)。
以下は、特性値の読み取り時に呼び出されるコールバックです。
2 つの質問をしてください:
- 上記のgetIntValueメソッドにどのオフセットパラメータを渡す必要がありますか?
- Google Maps Locationで必要な整数を double に変換する方法は?
java - 特定の制限時間内にBluetooth応答が受信されたかどうかを確認する方法は?
デバイスと通信するためのBluetoothアプリを開発しています。そのデバイスに特定のパケットを送信する必要があり、そのデバイスは一定時間後に通知モードで応答します。すべてうまくいきますが、応答が 3 秒以内に到着するかどうかを確認する必要があります。応答が間に合わない場合は、前のパケットを待たずに別のコマンドを送信する必要があります。
Android でタイマーをどのように実装できますか?
私は次のことを考えました: 1-パケットを送信するときにタイマーを開始する 2-応答が到着したとき、またはメッセージが3秒以上前に送信された場合にタイマーを停止する タイマーが機能し、他のメッセージを再送信できるようにする
handler と postdelay でそれを行うと思います。
どう思いますか ?これを実装するより良い方法はありますか?
多分 TimerTask ですか?
android - getBluetoothLeAdvertiser がオブジェクトを返すのに、なぜ isMultipleAdvertisementSupported() が false を返すのですか?
デバイスで BLE 送信を使用して再生しようとしています。
私が使用するコードと出力は次のとおりです。
ではないことを確認するため、なぜmBluetoothLeAdvertiser
ではないのか理解できません。null
mBluetoothLeAdvertiser
false
android - 高頻度で実行される 3 つのスレッドは同じ変数を使用します
私は高頻度でBLE通知からデータを受信し、画面にデータを印刷し、他の周辺機器にデータを送信するAndroidアプリケーションを開発しています。
これは私の状況です:
onCharacteristicChanged コールバックは、10hz で「value」と呼ばれるバイト配列を受け取り、いくつかの float および int 変数でデータをアンパックします
handlerThread に関連付けられた Handler は、30hz ごとに Runnable を開始します。このランナブルはvalueからアンパックされた変数を使用し、新しいデータをいくつかの変数に保存し、ブロードキャストメッセージを UX に送信します
- 10hz ごとに別のスレッドがステップ 1 で保存されたデータを使用し、2 がこの変数に対して何らかの数学演算を行い、特性にデータを書き込みます。
上記の手順では、float、double、および int 変数を保存して使用しています。
私は同時実行を処理することを恐れており、ステップ 2 と 3 で同じハンドラ スレッドを使用して同時実行の問題を解決しようと考えています。しかし、他の通知が到着すると、競合状態の問題があると思います:/
他の質問:どのスレッドで oncharacteristicchanged が実行されますか?
私の問題の詳細: oncharacteristicchanged で新しいバイト配列が到着します (10hz の周波数で)、変数のデータをアンパックし、他のスレッド B (30hz で) でこのデータを使用して計算を行います: ux にブロードキャストを送信し、結果を別の場所に保存します。変数; スレッド C はスレッド B の結果を使用し、他の計算を行い、10hz の特性に書き込みます。
oncharacteristicchanged -> スレッド B -> スレッド C
しかし、どのスレッドで実行されるかわからないため、characteristicchanged で停止することはできません..
あなたは
android - Android: ScanCallback を追加すると、「残念ながら、アプリは停止しました」と表示されます。MainActivity が見つかりません
私はアンドロイド開発に非常に慣れていません。私はいくつかのYouTubeビデオを見て、いくつかのドキュメントを読みました。今日は5日目なので、もうしばらくお待ちください。BluetoothLE アプリを作成しようとしています。hereからいくつかのコードを盗みましたが、自分のデバイスで実行しようとすると. 「残念ながら、(アプリ名)は停止しました」というメッセージが表示されます。コードのさまざまなブロックをコメントアウトした後、次の宣言に固定しました。
その行を含めると、クラッシュします。私がしなければ、それは生きています。完全な Java クラスは次のとおりです。
LogCat エラー:
android - 新しい Lollipop BLE API がすべてのアドバタイジング パケットを検出しない
同じ質問の投稿をいくつか見ましたが、問題の解決策を得ることができませんでした。
新しい BLE API のコールバック関数 (onScanResult) が、ペリフェラルからのアドバタイジング パケットを初めて検出することがわかりました。後続のパケットがまったく表示されません。奇妙なことは、それが少数のデバイスでのみ発生することです. Lollipop を実行している S4 では発生しませんが、One Plus one でこの問題が発生しています。しかし、Bluetooth Gatt メソッドを使用して周辺機器に接続することはできました。
また、スキャンの開始と停止の間に約 2 秒の遅延があります。Lollipop デバイスで古い API を使用すると問題なく動作するように見えますが、スキャンはかなり遅くなるようです。
誰にもこれに対する解決策はありますか?私はこの問題に頭を悩ませてきましたが、リードを得ることができませんでした. どんな助けでも大歓迎です。
bluetooth-lowenergy - AndroidでBLEデバイスにデータを読み書きする方法は?
BLE デバイスとその表示デバイス名、RSSI 値、および MAC アドレスをスキャンしました。
BLEデバイスにデータがあるかどうかを確認する方法は?
また、BLE デバイスとの間でデータを読み書きする方法は?
例を教えてください。