Включить Bluetooth в Android это не сложно. Но вы должны обратить внимание на некоторые детали. Есть 3 вида способов включить Bluetooth в Android.
1. Принудительно открыть Bluetooth.
Чтобы получить адаптер Bluetooth по умолчанию, т. Е. Используйте BluetoothAdapter.getDefaultAdapter()
;Вам нужно это разрешение:
<uses-permission android:name="android.permission.BLUETOOTH" />
Чтобы принудительно открыть Bluetooth, т.е. используйте BluetoothAdapter.enable()
;Вам необходимо это разрешение:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Вот пример кода
/**
* Bluetooth Manager
*
* @author ifeegoo www.ifeegoo.com
*
*/
public class BluetoothManager
{
/**
* Whether current Android device support Bluetooth.
*
* @return true:Support Bluetooth false:not support Bluetooth
*/
public static boolean isBluetoothSupported()
{
return BluetoothAdapter.getDefaultAdapter() != null ? true : false;
}
/**
* Whether current Android device Bluetooth is enabled.
*
* @return true:Bluetooth is enabled false:Bluetooth not enabled
*/
public static boolean isBluetoothEnabled()
{
BluetoothAdapter bluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
if (bluetoothAdapter != null)
{
return bluetoothAdapter.isEnabled();
}
return false;
}
/**
* Force to turn on Bluetooth on Android device.
*
* @return true:force to turn on Bluetooth success
* false:force to turn on Bluetooth failure
*/
public static boolean turnOnBluetooth()
{
BluetoothAdapter bluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
if (bluetoothAdapter != null)
{
return bluetoothAdapter.enable();
}
return false;
}
}
Приведенный выше способ включения Bluetooth не сообщит пользователю, успешно ли включен Bluetooth. КогдаВы вызываете метод enable (), вы не включите Bluetooth на 100%. Из-за причины, по которой некоторые приложения безопасности отказывают вам в этом, и т. д. Необходимо обратить внимание на возвращаемое значение метода enable ().
Официальный API метода enable () сообщает нам, что:
Bluetooth никогда не должен быть включен без прямого согласия пользователя.Если вы хотите включить Bluetooth для создания беспроводного соединения, вам следует использовать намерение ACTION_REQUEST_ENABLE, которое вызовет диалоговое окно с запросом разрешения пользователя на включение Bluetooth.Метод enable () предоставляется только для приложений, в которых имеется пользовательский интерфейс для изменения системных настроек, например, приложение «Power Manager».
Поэтому не рекомендуется включать Bluetooth с помощью метода enable (), если вы не сообщите пользователю, что будете делать.
2. Используйте Системное оповещение, чтобы напомнить пользователям, что вы включите Bluetooth с помощью startActivityForResult.
this.startActivityForResult(requestBluetoothOn, REQUEST_CODE_BLUETOOTH_ON)
need this permission:
<uses-permission android:name="android.permission.BLUETOOTH" />
public class MainActivity extends Activity
{
/**
* Custom integer value code for request to turn on Bluetooth,it's equal
*requestCode in onActivityResult.
*/
private static final int REQUEST_CODE_BLUETOOTH_ON = 1313;
/**
* Bluetooth device discovery time,second。
*/
private static final int BLUETOOTH_DISCOVERABLE_DURATION = 250;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
if ((BluetoothManager.isBluetoothSupported())
&& (!BluetoothManager.isBluetoothEnabled()))
{
this.turnOnBluetooth();
}
}
/**
* Use system alert to remind user that the app will turn on Bluetooth
*/
private void turnOnBluetooth()
{
// request to turn on Bluetooth
Intent requestBluetoothOn = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
// Set the Bluetooth discoverable.
requestBluetoothOn
.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
// Set the Bluetooth discoverable time.
requestBluetoothOn.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
BLUETOOTH_DISCOVERABLE_DURATION);
// request to turn on Bluetooth
this.startActivityForResult(requestBluetoothOn,
REQUEST_CODE_BLUETOOTH_ON);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE_BLUETOOTH_ON)
{
switch (resultCode)
{
// When the user press OK button.
case Activity.RESULT_OK:
{
// TODO
}
break;
// When the user press cancel button or back button.
case Activity.RESULT_CANCELED:
{
// TODO
}
break;
default:
break;
}
}
}
}
Это лучший способ длявам нужно включить Bluetooth на Android.
3.Привести пользователей к настройкам Bluetooth системы, чтобы они самостоятельно включали Bluetooth.
// Guide users to system Bluetooth settings to turn on Bluetooth by himselves.
this.startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
В моем приложении. Учитывая код логический, а такжепользовательский опыт, я использую следующие шаги для включения Bluetooth:
1.используем enable () для включения Bluetooth. Но я скажу пользователям, что я включу Bluetooth, если они позволят мне это сделатьЯ позвоню enable (), чтобы включить Bluetooth. Это лучше, чем вызвать системное оповещение, потому что мы можем контролировать содержимое, чтобы напомнить пользователю.Вы должны обратить внимание, что это не 100% для включения Bluetooth с помощью enable (), некоторые приложения безопасности или другие причины отказывают вам в этом. Но мы можем оценить это, независимо от того, включим мы Bluetooth или нет, по возвращаемому значению метода.enable ().
2. Если метод enable () возвращает false, то мы используем startActivityForResult, чтобы напомнить пользователям, что мы включим Bluetooth.
3. Если шаг 2 не будет работатьпо некоторым причинам вы можете указать пользователям перейти к системным настройкам Bluetooth, чтобы самостоятельно включить Bluetooth.
Добавить еще: начиная с Android 6.0 нам нужно иметь дело с разрешением Bluetooth.