0

これは私が使用しようとしているコードです。何が問題なのか教えてください。

私のコード:

    public void onStart() {
    super.onStart();
    if(D) Log.e(TAG, "++ ON START ++");
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
          if (!mBluetoothAdapter.isEnabled()) {

          }else{
               mBluetoothAdapter.enable(); 
          } ;
    } {
        if (mChatService == null) setupChat();

}
4

2 に答える 2

0

どんな問題がありますか?私の推測では、アプリにBLUETOOTHとBLUETOOTH_ADMINの両方のアクセス許可を追加する必要があります。

推奨される解決策は、ユーザーがBluetoothを有効にしたい場合にプロンプ​​トを表示するインテントを使用することです。

        Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivity(enableIntent);

また、への呼び出しは非同期であることに注意してくださいenable。すぐに戻り、バックグラウンドでBluetoothが有効になります。したがって、Bluetoothは実際にはまだ有効になっていない可能性があり、まだ準備が整っている可能性があります。Bluetoothに関するAndroidガイドラインも参照してください

編集追加無効化/待機/有効化/待機サンプルコード

これは、Bluetoothをオフにするように要求し、オンになるのを待つためのサンプルコードです。UIスレッドではなく別のスレッドで実行する必要があります。正常に完了すると、(できれば)フラグをtrueに設定するクラスにこれをカプセル化することができます。Runnablevolatile

注: このサンプルコードには、ユーザーアプリケーションからのダイアブル/有効化を許可しない一部の古いデバイスで問題が発生することがわかっています。

            BluetoothAdapter.getDefaultAdapter().disable();
            while (BluetoothAdapter.getDefaultAdapter().isEnabled())
            {
                try
                {
                    Thread.sleep(100L);
                }
                catch (InterruptedException ie)
                {
                    // unexpected interruption while disabling Bluetooth
                    Thread.currentThread().interrupt(); // restore interrupted flag
                    return;
                }
            }
            // disabled, re-enabling Bluetooth
            BluetoothAdapter.getDefaultAdapter().enable();
            while (!BluetoothAdapter.getDefaultAdapter().isEnabled())
            {
                try
                {
                    Thread.sleep(100L);
                }
                catch (InterruptedException ie)
                {
                    // unexpected interruption while enabling bluetooth
                    Thread.currentThread().interrupt(); // restore interrupted flag
                    return;
                }
            }
于 2013-02-04T02:51:51.997 に答える