Android での Bluetooth 開発に関する 2 つの質問:
Android で Bluetooth を常に有効にする方法はありますか (アプリケーションで長いデバイス検出フェーズがある可能性があります)。私が見る限り、デフォルト値は 120 秒からのカウントダウンです。
オープンソースの Bluetooth API 実装は存在しますか?
Bluetooth を常にオンにすることは、長い検出遅延 (「バッテリー寿命」に関して) だけが懸念される場合、適切な決定ではない可能性があります。
サードパーティの Bluetooth API に関しては、 iAnywhere Blue SDK (Sybase から、無料ではなく、評価版のみ入手可能) について聞いたことがあります。 system/bluetoothおよびbluezパッケージ。
Android のBluetooth ロードマップによると、Java API、Bluetooth 2.1 + EDR などの待望の機能のほとんどは、将来のある時点で実装される予定です。
あなたのプロジェクトで頑張ってください。
2.3.6 では、遅延を 0 に設定することで、デバイスを常に表示し続けることができます。
Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
private void ensureDiscoverable() {
if(D) Log.d(TAG, "ensure discoverable");
if (mBluetoothAdapter.getScanMode() !=
BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
}
Linux 上のBluezスタックは、オープン ソースの実装です。Windows でも利用できますが、API は Linux の方がはるかに完全です。
「Bluetooth を常にオンにする」とは、常に他のデバイスを検出しようとすることを意味しますか?
ほとんどの bluetooth チップにはディープスリープモードがあり、チップはほとんどダウンしており、確立されたリンクのアクティビティをチェックするために起動します。何かをしたいとき(発見、接続を確立する)、または既存のリンクにアクティビティがある場合にのみ、フルパワーにウェイクアップします。
ええ、Bluetooth が完全にオフの場合よりも多くのバッテリー電力を使用しますが、完全な吸血鬼ではありません。
BlueCoveは、Java用のオープンソースのBluetooth実装です。
それは多くの異なるマシンで動作し、正しければAndroid互換バージョンがどこかに潜んでいます。