1

ブルートゥースを使ったアプリを作ってみた

このoncreate()メソッドでは、Bluetooth を有効にし、デバイスを無期限に表示するように設定します。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

    if(!adapter.isEnabled()) {

        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(intent, REQUEST_ENABLE_BT);
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
        startActivity(discoverableIntent);
    }
}

そのonDestroy()中でBluetoothを無効にします

protected void onDestroy() {
    // TODO Auto-generated method stub
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    if(adapter.isEnabled()) {
        adapter.disable();
    }
    super.onDestroy();
}

しかし、アプリを終了した後にBluetoothを手動で再度有効にすると、無期限に自動的に検出可能に設定されます。

関数でBluetoothをUndiscoverable無効にする前にBluetoothを設定するにはどうすればよいですかonDestroy()

Nexus 5 のみでテスト済み

4

2 に答える 2

0

これにより、1秒間発見可能になり、無期限に発見可能になるのを防ぐことができます

Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,1);
startActivity(discoverableIntent);
于 2014-06-10T03:41:02.490 に答える
0
  • デバイスを検出できないようにするために生成できるインテントはないようです。
  • したがって、これを回避する必要があります。発見可能性の新しいインテントを 1 秒間開始するだけでうまくいきます。
  • 発見可能時間を無限から 1 秒に短縮し、発見不可能に近づけることができます。
  • ハックであることは理解していますが、Android のドキュメントには他に方法がありません。

    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,1);
    startActivity(discoverableIntent);
    

Bluetooth デバイスでの発見可能性に関する Android ドキュメントへのリンク: http://developer.android.com/guide/topics/connectivity/bluetooth.html#EnablingDiscoverability

これは質問の重複の可能性があります: Android で Bluetooth 検出可能モードを無効にする

于 2014-06-10T04:55:21.847 に答える