Android 用蓝牙低能量解锁Linux
你见过苹果手表解锁Mac吗?这个想法太棒了,但我不想要智能手表,因为我已经有了一款功能类似的手机。 另外,我最近从OSX搬到了Linux:) 我不知道Apple watch是如何解锁Mac的。但从用户体验的角度来看,我知道什么是可取的:Android 用蓝牙低能量解锁Linux,android,bluetooth,bluetooth-lowenergy,bluez,proximity,Android,Bluetooth,Bluetooth Lowenergy,Bluez,Proximity,你见过苹果手表解锁Mac吗?这个想法太棒了,但我不想要智能手表,因为我已经有了一款功能类似的手机。 另外,我最近从OSX搬到了Linux:) 我不知道Apple watch是如何解锁Mac的。但从用户体验的角度来看,我知道什么是可取的: 需要比键入密码更快解锁 应在没有wifi/4G的情况下工作 应该是节能的 射频识别 RFID会很好,但我知道没有笔记本电脑嵌入RFID阅读器 基于蓝牙的近距离检测 经典蓝牙的挑战在于需要不断扫描附近的设备,以测量信号强度(RSSI),从中我们可以推断接近程度 不
import collection.JavaConverters_
进口tinyb_
对象侦听器扩展应用程序{
var running=true
val BT_ADDR=sys.env.getOrElse(“BT_ADDR”,“XX:XX:XX:XX:XX”)
val BT_RSSI_DBM_THRESHOLD=Integer.parseInt(sys.env.getOrElse(“BT_RSSI_DBM_THRESHOLD”,“-65”)。toShort
val manager=BluetoothManager.getBluetoothManager
val lock=新对象
while(true){
manager.getAdapters.forEach(a=>{
a、 setRssiDiscoveryFilter(BT_RSSI_DBM_阈值)
a、 移除设备()
})
System.err.println(“至少扫描“+BT_RSSI\u DBM_阈值”+“DBM RSSI…”的“+BT_ADDR+”)
manager.startNearbyDiscovery(
(设备:蓝牙设备)=>{
if(BT_ADDR.equals(device.getAddress)){
近距离(装置)
manager.stoppenearbydiscovery()
lock.synchronized(lock.notify())
}
else println(device.getName)
}
, 1000
,错
)
lock.synchronized(lock.wait())
}
}
我在看BTLE(蓝牙低能量),我很难理解以下内容:
有没有一种方法可以从Linux建立到Android手机的单一低能耗蓝牙连接,我们可以让它一直处于休眠状态,并使用它唤醒手机,让它发送一些数据包(这样我们可以测量其RSSI功率并推断其接近程度)按需,只有在严格需要时才这样做
也就是说,我们将仅在以下罕见情况下进行传输:
- 如果我们检测到1分钟内鼠标和键盘处于非活动状态,请检查用户不在时
- 当GDM处于活动状态时,检查用户是否足够靠近
- 没有任何其他BT活动
但是,这是否有可能与蓝牙LE?有没有指向示例的指针?是的,这应该可以通过蓝牙低能量实现(有一些警告),如下所示:-
- BLE不适合定位/定位;你可能会发现 如果你在几米远的地方,但要想得到一个 精确到几厘米
- 您的BlueZ脚本需要 作为守护进程或后台进程持续运行,因此 当设备进入睡眠状态时,不知何故被杀死或处于非活动状态,这 这是行不通的李>
- 手机上的蓝牙应始终处于打开状态,这 不应该对电池寿命有太大影响,但也不是 推荐的
我希望这能有所帮助。如果我在笔记本电脑上贴上RFID标签,并让Android启动蓝牙连接以响应RFID事件(可能需要编写一个微型移动应用程序,我可以这样做),该怎么办?这样我就可以避免在手机上不断播放BT广播,在锁定的笔记本电脑上不断进行轮询。WDYT?我在Linux端和Android端都没有RFID方面的经验,但如果您有信心可以使用此功能,那么其余的都应该是可行的。手机上持续的BT广播并不是什么大问题,BLE只消耗了WiFi/数据的一小部分。最后,您可以将笔记本电脑端的tx电源设置为-40dBm(使用BlueZ)-这肯定会降低范围,因此机器只能在很近的距离内启动。