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 权限添加到您的应用程序中。

请注意,首选的解决方案是使用意图来提示用户是否要启用蓝牙:

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

另请注意,调用enable是异步的,它会立即返回并在后台启用蓝牙。因此,蓝牙实际上可能尚未启用,它可能仍在准备中。另请参阅有关蓝牙的 Android 指南

编辑添加禁用/等待/启用/等待示例代码

这是请求蓝牙关闭,然后等待它打开的示例代码。它必须在单独的线程中运行,而不是在 UI 线程中。可以将其封装在一个RunnableClass 中,volatile如果它成功完成,则将(最好)标志设置为 true。

注意: 已知此示例代码在一些不允许从用户应用程序调用 diable/enable 的旧设备上存在问题。

            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 回答
0
public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
        if (mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.disable(); 
        } 
        else(!mBluetoothAdapter.isEnabled()) {
             mBluetoothAdapter.enable(); 
        }
    }
}
于 2014-09-29T09:47:21.600 回答