如何在android中以编程方式启用/禁用蓝牙

大家好,

我想通过程序启用/禁用蓝牙..我有以下代码。

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 

但是这种代码在SDK 1.5中不起作用。我如何在SDK 1.5中做同样的事情?

Android的BluetoothAdapter文档说,它已经可用,因为API 5 级。API 5级是Android 2.0。

您可以尝试使用蓝牙API的回送端口(没有亲自尝试过): http : //code.google.com/p/backport-android-bluetooth/

此代码为我工作..

 //Disable bluetooth BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.disable(); } 

为此,您必须拥有以下权限:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

这是一个更健壮的方法,也处理了enable()\disable()方法的返回值:

 public static boolean setBluetooth(boolean enable) { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); boolean isEnabled = bluetoothAdapter.isEnabled(); if (enable && !isEnabled) { return bluetoothAdapter.enable(); } else if(!enable && isEnabled) { return bluetoothAdapter.disable(); } // No need to change bluetooth state return true; } 

并将以下权限添加到清单文件中:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

但请记住这些重要的一点:

这是一个asynchronous调用:它将立即返回,并且客户端应该侦听ACTION_STATE_CHANGED以通知后续的适配器状态更改。 如果此调用返回true,则适配器状态将立即从STATE_OFF转换到STATE_TURNING_ON,并且稍后过渡到STATE_OFF或STATE_ON。 如果这个调用返回false,那么就会有一个直接的问题,导致适配器无法开启 – 比如飞行模式,或者适配器已经打开。

要启用蓝牙,您可以使用以下任一function:

  public void enableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()){ Intent intentBtEnabled = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); // The REQUEST_ENABLE_BT constant passed to startActivityForResult() is a locally defined integer (which must be greater than 0), that the system passes back to you in your onActivityResult() // implementation as the requestCode parameter. int REQUEST_ENABLE_BT = 1; startActivityForResult(intentBtEnabled, REQUEST_ENABLE_BT); } } 

第二个function是:

 public void enableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.enable(); } } 

不同的是,第一个function使得应用程序要求用户有权打开蓝牙或否认。 第二个function使应用程序直接打开蓝牙。

要禁用蓝牙,请使用以下function:

 public void disableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.disable(); } } 

注意/第一个函数只需要在AndroidManifest.xml文件中定义以下权限:

 <uses-permission android:name="android.permission.BLUETOOTH"/> 

而第二个和第三个function需要以下权限:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

prijin的解决scheme为我完美工作。 公平地说,需要两个额外的权限:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

当这些被添加时,使用默认的蓝牙适配器启用和禁用工作完美。

我使用下面的代码来禁用BT,当我的应用程序启动,并正常工作。 不知道这是否正确的方式来执行此为谷歌build议不使用“bluetooth.disable();” 没有明确的用户操作来closures蓝牙。

  BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); bluetooth.disable(); 

我只使用了下面的权限。

 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

将以下权限添加到清单文件中:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

启用蓝牙使用这个

 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); }else{Toast.makeText(getApplicationContext(), "Bluetooth Al-Ready Enable", Toast.LENGTH_LONG).show();} 

禁用蓝牙使用这个

 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.disable(); } 

尝试这个:

 //this method to check bluetooth is enable or not: true if enable, false is not enable public static boolean isBluetoothEnabled() { BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { // Bluetooth is not enable :) return false; } else{ return true; } } //method to enable bluetooth public static void enableBluetooth(){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); } } //method to disable bluetooth public static void disableBluetooth(){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.disable(); } } 

在清单中添加这些权限

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>