You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python的bluetooth.discover_devices()无法检测iPhone 有其他方案吗?

PyBluez扫描失败原因
  • 你使用的PyBluez库已停止维护多年,不兼容Windows 10+、macOS 10.14+等新版系统的蓝牙栈,扫描无结果是普遍问题
  • 传统蓝牙扫描需要目标设备开启「可被发现」模式,iPhone默认不对外暴露普通蓝牙可见性,安卓默认仅在蓝牙设置页处于前台时可被扫描到
1.4米近距离设备检测可行方案

方案1:BLE(低功耗蓝牙)扫描(优先推荐)

BLE无需目标设备手动开启可见性,iPhone、安卓默认都会对外发送BLE广播,配合RSSI信号强度可以精准判断距离:

  1. 先安装适配性更好的bleak库:pip install bleak
  2. 参考测试代码:
import asyncio
from bleak import BleakScanner

# 提前校准:把目标手机放在1.4米处,多次测试得到对应的RSSI阈值,以下为参考值
DISTANCE_THRESHOLD_RSSI = -60

async def scan_ble_devices():
    # 扫描时长可按需调整,一般3-5秒足够
    devices = await BleakScanner.discover(timeout=5)
    print(f"共扫描到 {len(devices)} 个BLE设备")
    for dev in devices:
        print(f"设备名:{dev.name or '匿名设备'} | 地址:{dev.address} | 信号强度:{dev.rssi} dBm")
        if dev.rssi > DISTANCE_THRESHOLD_RSSI:
            print("* 判定该设备处于1.4米范围内")

if __name__ == "__main__":
    asyncio.run(scan_ble_devices())

注:不同设备的蓝牙发射功率存在差异,使用前请用目标设备在1.4米位置实测调整DISTANCE_THRESHOLD_RSSI阈值,可有效提升判断准确率。

方案2:同WiFi局域网下检测

如果笔记本和手机连接同一WiFi,可通过ARP扫描结合WiFi信号强度判断:

  • 提前记录目标手机的MAC地址,扫描局域网内在线设备,匹配到对应MAC后查询WiFi网卡返回的信号强度,-55~-60dBm左右对应1.4米距离
  • 也可以在笔记本开启热点,手机连接热点后直接读取热点管理界面的RSSI值做判断

方案3:有线连接兜底检测

如果允许有线连接,可直接判断设备连接状态:

  • 安卓设备开启USB调试后,用adb devices命令检测是否有设备连接,有线连接必然满足1.4米距离要求
  • iPhone连接USB后可通过系统设备列表直接检测到连接状态

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:48:04