Методы программного вывода списка сопряженных устройств Bluetooth с примерами кода

Команда «bluetoothctl list сопряженные устройства» используется для отображения списка устройств, которые в данный момент сопряжены с контроллером Bluetooth в системе Linux. Он предоставляет информацию о сопряженных устройствах, такую ​​как их MAC-адреса и имена.

Вот несколько методов на разных языках программирования для программного вывода списка сопряженных устройств Bluetooth:

  1. Python:

    import subprocess
    def list_paired_devices():
    output = subprocess.check_output(["bluetoothctl", "paired-devices"]).decode("utf-8")
    devices = []
    for line in output.splitlines():
        parts = line.strip().split(" ")
        device = {
            "mac_address": parts[1],
            "name": " ".join(parts[2:])
        }
        devices.append(device)
    return devices
    # Usage
    paired_devices = list_paired_devices()
    for device in paired_devices:
    print(f"Name: {device['name']}, MAC Address: {device['mac_address']}")
  2. Баш:

    #!/bin/bash
    devices=$(bluetoothctl paired-devices)
    while IFS= read -r line; do
    parts=($line)
    mac_address=${parts[1]}
    name="${parts[@]:2}"
    echo "Name: $name, MAC Address: $mac_address"
    done <<< "$devices"
  3. Java:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class BluetoothListPairedDevices {
    public static void main(String[] args) {
        try {
            Process process = Runtime.getRuntime().exec("bluetoothctl paired-devices");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                String[] parts = line.trim().split(" ");
                String macAddress = parts[1];
                String name = String.join(" ", Arrays.copyOfRange(parts, 2, parts.length));
                System.out.println("Name: " + name + ", MAC Address: " + macAddress);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    }