Wo erhält macOS Symbole für W1-Audiogeräte?

Ich habe kürzlich bemerkt, dass macOS ein Symbol für jedes W1-fähige Audiogerät in den Bluetooth-Einstellungen hat, aber ich bin mir nicht genau sicher, woher das System diese Symbole bekommt.

Im Screenshot unten wurden die Beats Solo³ und AirPods mit meinem iPhone gekoppelt und iCloud hat sie mit meinem Mac gekoppelt. Es sieht so aus, als ob die Farbe der Beats-Kopfhörer im Symbol auch mit der Farbe der echten Kopfhörer übereinstimmt!

Ich gehe davon aus, dass entweder macOS die Bilder für jeden W1 irgendwo gespeichert hat oder das System Apple kontaktieren musste, um diese Bilder zu erhalten. Für alle Fälle habe ich das folgende Verzeichnis überprüft:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources

Geben Sie hier die Bildbeschreibung ein

Warum spielt der Bluetooth-Chip hier eine Rolle? Wir verfolgen keine Tags für A7-, A8-, A9-Chips im iPhone.
@Allan Der Grund, warum ich das W1 erwähne, ist, dass im obigen Screenshot nur W1-Geräte, die über iCloud gekoppelt sind, genaue Symbole haben. Beachten Sie, dass der normale Bluetooth-Lautsprecher ein generisches Lautsprechersymbol hat.
Ich denke, es ist nichts weiter als ein Zufall, dass alle Ihre aktuellen Geräte M1 sind. Zum Beispiel ist meine Apple BT-Tastatur nicht M1 und sie haben das Symbol dafür. Könnte es sein, dass Apple Icons für Apple-Geräte hat?
Vielleicht ist es genauer zu sagen, dass Apple-Geräte bestimmte Symbole haben. Ich schätze, was ich sage, dass nur unter den Audiogeräten diejenigen, die einen Apple W1-Chip enthalten, die einzigen mit genauen Symbolen sind.

Antworten (1)

Ich konnte herausfinden, wo Symbole für W1-Geräte gespeichert sind. Es scheint, dass dieser Ordner bereits Assets für jedes vorhandene W1-Gerät enthält. Hier finden Sie Symbole für W1-Geräte:

/System/Library/Frameworks/IOBluetoothUI.framework/Versions/A/Resources

Wenn Sie Swift unter macOS verwenden, können Sie den folgenden Code verwenden, um programmgesteuert ein Geräte-Image abzurufen:

IOBluetoothDevice.init(addressString: "bluetoothDeviceAddress").value(forKey: "image")

oder

   for device in IOBluetoothDevice.pairedDevices() {
    let deviceName = ((device as! IOBluetoothDevice).name)
    let deviceImage = (device as! IOBluetoothDevice).value(forKey: "image")
}
Scheint, als ob es auf High Sierra nicht funktioniert. Gibt es einen anderen Weg?
@Sega-Zero beziehst du dich auf den Code oder das Verzeichnis?
Gibt es eine Möglichkeit, das Symbol für ein bestimmtes Gerät zu ändern?