2017-03-05 49 views
0

私はIONIC 2のためのアプリを開発しています。私はBLEデバイスが範囲内にあるときにそれに自動的に接続する必要があります。場合は、私のアプリがバックグラウンドかフォアグラウンドのどちらかであるかどうかです。私はBLEデバイスを自動的に接続したいと思っています。また、切断してデバイスに連続して検索し、これを行う方法はありますか?私はこれを参照しました:https://github.com/don/cordova-plugin-ble-central。また、私はBLE接続の検出について質問しました:How to register for BLE state notification in IONIC 2。しかし、それに関連する解決策はありません。しかし、私は何も見つけられませんでした。これを行う方法を提案してください。私は、イオスとアンドロイドの両方で作業する必要があるソリューションをしたい。範囲内でBLEデバイスを自動接続する方法は?

答えて

0

私自身はアンドロイド部分についてしか知りません。 私はこれがうまくいかないと思います。これは、Bluetoothが常にオンになっていなければならず、デバイスが範囲内にある場合、デバイスは常にデバイスの周りを見回す必要があるからです。

Alarm ManagerまたはJob Scheduler(アプリがフォアグラウンドでもバックグラウンドでも再起動してもかまいません)のようにいくつかの方法がありますが、モバイルが生き続ける(スクリーンやハードウェア)およびドレイン電池。

する場合は、検索間隔をできるだけ小さく設定します。 以下の記事やページなどを使用して詳細を確認できます。

アンドロイド、次のプロパティを持つ実行時間の長い接続を設定する正しい方法で

Link 1

Link 2

1

  1. デバイスが範囲内にない場合、それは自動的に接続する必要があります最終的に範囲内に入る(タイムアウトなし)。
  2. 何らかの理由でデバイスが切断されると、Androidは自動的に再接続する必要があります。

自動接続パラメータがtrueに設定されているhttps://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback)

を使用することです。 falseに設定されている場合は、30秒のタイムアウトが発生し、デバイスの切断時に自動的に再接続されません。

あなたが残念なことにハードコードautoConnectをfalseに参照するプラグインです。したがって、プラグインを変更してautoConnectがtrueに設定されるようにするか、代わりに永遠にスキャンして、興味のあるデバイスに接続するスキャンを設定することができます。しかし、そのcordovaプラグインは、Wi-Fi帯域幅を占有しないために、通常は時間の5~10%をスキャンするよう設定する最大スキャン間隔(時間の100%をスキャンすることを意味する)を使用するだけでなく、バ​​ッテリーを節約する。 ..私が言うことは、cordovaプラグインは、あなたが接続するのに時間がかかるかもしれない長い実行中のバックグラウンド接続を持つ目的のために作られていないようです。

アプリがバックグラウンドで強制終了されないようにするには、BLEデバイスに接続する同じプロセス内のどこかで "Foreground Service"(https://developer.android.com/guide/components/services.html#Foreground)を実行する必要があります。

関連する問題