相关疑难解决方法(0)

是否有命令行界面列出mac上范围内的所有蓝牙设备?

我想列出所有范围内的蓝牙设备,理想情况下是主机名,但MAC地址就足够了.我需要一个执行主动扫描的命令,以便我可以查看我的设备是否在附近,而不是列出以前配对设备的设备.

我的用例是检测我的蓝牙耳机或iPhone是否在我的Mac范围内,以触发安全设置更改(例如sudo超时).我已经做了很多谷歌搜索,我似乎能找到的唯一的东西是iOS快速代码示例.我很满意OS X Swift代码示例,AppleScript,终端实用程序或指向优秀文档的指针.

到目前为止我已经看过这些选项了:

  • blued:打印一个mac地址列表,但是当设备进入或超出范围或连接时它们似乎没有改变,并且它们与主机名不匹配
  • blueutil(brew install blueutil):仅打印电源状态,而不是设备名称
  • bluetoothaudiod:没有可用的界面
  • 这个Objective-C代码在XCode中创建一个基于终端的蓝牙监视器?:编译时我遇到了几个错误,所以很难对它进行测试
  • 使用AppleScript将其读出Bluetooth Explorer.appGUI
  • 使用dtrace来看看如何Bluetooth Explorer.app计算列表:困难不得已而为之
  • 来自此论坛帖子Proximity App :没有命令行界面,所以我无法远程查询它.我可以编写一个脚本,将状态存储在一个文件中以便稍后阅读,但它一次只适用于一个设备.

编辑2017/01:找到这个SO答案,详细介绍如何在Swift中查找附近的设备:列出 Swift
中蓝牙设备范围内的设备

编辑2017/10:找到Swift 3和4.0的更新SO答案:使用Swift 3.0附近的蓝牙设备

macos applescript bluetooth objective-c swift

14
推荐指数
1
解决办法
2万
查看次数

使用Swift 3.0附近的蓝牙设备

我正在寻找一种方法来以编程方式列出我的设备找到的任何附近的蓝牙设备(可发现).我无法在Swift 3.0中找到有关执行此调用的任何信息或教程.这篇QA文章讨论了使用Swift 1.0查找这些设备并使用Xcode 6构建,而不是最新版本8.

我尽力尝试将我的代码从1.0开始编写3.0语法,但在运行以下代码时,Playground中没有返回任何内容:

import Cocoa
import IOBluetooth
import PlaygroundSupport

class BlueDelegate : IOBluetoothDeviceInquiryDelegate {
    func deviceInquiryComplete(_ sender: IOBluetoothDeviceInquiry, error: IOReturn, aborted: Bool) {
        aborted
        print("called")
        let devices = sender.foundDevices()
        for device : Any? in devices! {
            if let thingy = device as? IOBluetoothDevice {
                thingy.getAddress()
            }
        }
    }
}

var delegate = BlueDelegate()
var inquiry = IOBluetoothDeviceInquiry(delegate: delegate)
inquiry?.start()
PlaygroundPage.current.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)

macos bluetooth iobluetooth ios swift

10
推荐指数
1
解决办法
3669
查看次数

标签 统计

bluetooth ×2

macos ×2

swift ×2

applescript ×1

iobluetooth ×1

ios ×1

objective-c ×1