Android获取连接过的蓝牙列表

简介

蓝牙是一种广泛应用于无线通信的技术,它允许设备在短距离内进行数据交换。Android设备可以通过蓝牙与其他设备进行通信,并实现各种功能,如文件传输、音频传输和设备控制等。在Android开发中,获取连接过的蓝牙列表是一项常见的任务,本文将介绍如何通过代码实现这一功能。

蓝牙适配器

在Android中,蓝牙功能由BluetoothAdapter类提供。我们可以通过调用getDefaultAdapter()方法获取默认的蓝牙适配器实例。接下来,我们需要判断蓝牙是否可用,并进行相应的处理。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    return;
}

if (!bluetoothAdapter.isEnabled()) {
    // 蓝牙未启用,可以通过启动一个意图来请求用户启用蓝牙
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    return;
}

获取连接过的蓝牙设备

一旦蓝牙已启用,我们可以使用蓝牙适配器的getBondedDevices()方法获取已连接的蓝牙设备列表。这个方法返回一个Set集合,其中包含已连接的蓝牙设备。

Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : bondedDevices) {
    String deviceName = device.getName();
    String deviceAddress = device.getAddress();
    int deviceType = device.getType();
    // 处理已连接的蓝牙设备信息
}

在这里,我们可以遍历已连接的蓝牙设备,并获取设备的名称、地址和类型等信息。你可以根据自己的需求来处理这些信息,例如展示在列表中或者用于其他操作。

示例应用

为了更好地理解上述的代码和概念,我们可以创建一个简单的示例应用来演示获取连接过的蓝牙设备列表。首先,我们需要在AndroidManifest.xml文件中添加相应的权限和特性:

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

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

    <application
        ...
        <activity android:name=".MainActivity">
            ...
        </activity>
        ...
    </application>
</manifest>

在MainActivity.java文件中,我们可以实现上述的代码来获取连接过的蓝牙设备列表,并将其展示在一个ListView中。

public class MainActivity extends AppCompatActivity {

    private ListView deviceListView;
    private ArrayAdapter<String> deviceListAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        deviceListView = findViewById(R.id.device_list_view);
        deviceListAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
        deviceListView.setAdapter(deviceListAdapter);

        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (bluetoothAdapter == null) {
            Toast.makeText(this, "设备不支持蓝牙", Toast.LENGTH_SHORT).show();
            return;
        }

        if (!bluetoothAdapter.isEnabled()) {
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
            return;
        }

        Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
        for (BluetoothDevice device : bondedDevices) {
            deviceListAdapter.add(device.getName() + "\n" + device.getAddress());
        }
    }
}

以上代码创建了一个简单的列表视图(ListView),并使用一个数组适配器(ArrayAdapter)将蓝牙设备的名称和地址添加到列表中。

在xml布局文件中,我们需要添加一个ListView组件以显示蓝牙设备列表。

<LinearLayout xmlns:android="
    ...
    <ListView
        android:id="@+id/device_list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    ...
</LinearLayout>

结论

通过上