实现 Android 蓝牙模组和 WiFi 模组的检测

在 Android 开发中,检测蓝牙和 WiFi 模组的状态是一个常见的任务。以下是实现这一功能的一个简单流程以及每个步骤的详细代码。

流程概述

下面是整个检测过程的步骤表:

步骤 描述
1 添加权限到 AndroidManifest.xml
2 检查并请求蓝牙权限
3 检查并请求 WiFi 权限
4 检测蓝牙状态
5 检测 WiFi 状态
6 展示结果

每一步的实现

下面我们逐步实现每个步骤。

1. 添加权限到 AndroidManifest.xml

首先,您需要在 AndroidManifest.xml 中添加必要的权限,以便在应用中使用蓝牙和 WiFi 功能。

<manifest xmlns:android="
    package="com.example.bluetoothwifi">

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

    <application
        ... >
    </application>
</manifest>

2. 检查并请求蓝牙权限

在 Activity 中检查和请求蓝牙权限的代码如下:

private void checkBluetoothPermissions() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED ||
        ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_ADMIN) != PackageManager.PERMISSION_GRANTED) {
        
        // 请求权限
        ActivityCompat.requestPermissions(this, new String[]{
                Manifest.permission.BLUETOOTH,
                Manifest.permission.BLUETOOTH_ADMIN}, 1);
    }
}

3. 检查并请求 WiFi 权限

同样地,您需要检查 WiFi 权限:

private void checkWifiPermissions() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED ||
        ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
        
        // 请求权限
        ActivityCompat.requestPermissions(this, new String[]{
                Manifest.permission.ACCESS_WIFI_STATE,
                Manifest.permission.CHANGE_WIFI_STATE}, 2);
    }
}

4. 检测蓝牙状态

接下来,通过以下代码来检测蓝牙的状态:

private void checkBluetoothStatus() {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter == null) {
        // 设备不支持蓝牙
        Log.d("Bluetooth", "Device does not support Bluetooth");
    } else {
        if (bluetoothAdapter.isEnabled()) {
            // 蓝牙已开启
            Log.d("Bluetooth", "Bluetooth is enabled");
        } else {
            // 蓝牙未开启
            Log.d("Bluetooth", "Bluetooth is disabled");
        }
    }
}

5. 检测 WiFi 状态

接着,通过以下代码检测 WiFi 的状态:

private void checkWifiStatus() {
    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    if (wifiManager.isWifiEnabled()) {
        // WiFi已开启
        Log.d("WiFi", "WiFi is enabled");
    } else {
        // WiFi未开启
        Log.d("WiFi", "WiFi is disabled");
    }
}

6. 展示结果

最后,您可以将检测到的状态输出至 UI 或者日志中。这里我们简单打印信息:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    checkBluetoothPermissions();
    checkWifiPermissions();
    checkBluetoothStatus();
    checkWifiStatus();
}

结果可视化

通过检测蓝牙和 WiFi 状态后,您可以用以下饼状图展示结果(假设检测的结果为 70% 蓝牙开启,30% 蓝牙关闭,WiFi 同样50%开启,50%关闭):

pie
    title 蓝牙与WiFi状态
    "蓝牙开启": 70
    "蓝牙关闭": 30
    "WiFi开启": 50
    "WiFi关闭": 50

结尾

通过以上步骤,您已经学会了如何在 Android 应用中检测蓝牙模组和 WiFi 模组的状态。此功能不仅可以增强您应用的功能性,还能提供更多的用户体验。希望这篇文章能帮助您更深入地了解 Android 开发中涉及的蓝牙和 WiFi 功能。如果您还有其他疑问,欢迎继续问我!