Midlet 从蓝牙连接中唤醒

Posted

技术标签:

【中文标题】Midlet 从蓝牙连接中唤醒【英文标题】:Midlet wake up from bluetooth connection 【发布时间】:2010-01-24 15:21:34 【问题描述】:

我正在尝试注册一个用于推送注册的 midlet,以便从蓝牙连接中唤醒。

请求的行为是当汽车套件(免提)在设备范围内时应用程序将唤醒。

有可能吗?

如果是,应该怎么做?

提前致谢,

【问题讨论】:

【参考方案1】:

我可以确认可以通过推送注册表中的注册服务唤醒诺基亚设备中的 MIDlet。 注册可以在JAD中定义(静态注册),也可以在代码中动态定义。

诺基亚手机 S60 3ed 及更高版本和 S40 3ed 应该支持此功能,但在其他手机(索尼、三星、摩托罗拉等)上我没有发现此功能可用。

Google 这个 JAD 属性:MIDlet-Push-1

祝你好运!

【讨论】:

【参考方案2】:

我认为在设备范围内启动 midlet 是不可能的,即使具有蓝牙推送注册表兼容性(如果您找到支持它的手机)。

最好的办法是让 midlet 在后台运行,不断检查附近有哪些设备。当它发现您的免提套件时,您可以将其带到前台(如果手机支持它;这通常通过Display.setCurrent(null) 用于后台,Display.setCurrent(<Displayable instance>) 用于前台)。

JSR 82 提供您需要的功能。

但请注意,这种持续的蓝牙轮询会耗尽设备的电池!

【讨论】:

【参考方案3】:

这是高级的东西。不错。

虽然根据 JSR-118 和 JSR-82 规范,这可以在手机上使用,但我怀疑没有多少手机制造商真正实施过。

Symbian 向其被许可方提供了一个符合 TCK 标准的 Java 蓝牙推送参考实现,但测试它是一场噩梦,我不知道诺基亚、摩托罗拉或索尼爱立信是否真的在手机中包含了该功能。

我对 Symbian 手机的最佳尝试:诺基亚 N95、索尼爱立信 P990 或 W960、摩托罗拉 Z8。我还建议您尽可能尝试使用支持蓝牙的非 Symbian Sony-Ericsson 手机。

如果您发现一个手机规范实际上说它支持 J2ME BT Push,那么您需要检查它是否应该使用 RFComm、L2CAP 或两者兼而有之。我不知道你的车载套件是做什么用的。

至于编写 Java 代码以使用 Bt 推送,您可以从阅读 2 个 JSR 中的示例代码和 Sun Ltd. 的 J2ME SDK 开始。

【讨论】:

神话般的 BT Push 在这种情况下可能没有那么有用,因为为了唤醒 MIDlet,它需要实际创建到设备的 BTSPP 连接,我怀疑它是否可以配置做汽车的免提套件。不过学术性的,因为我从未听说过支持 BT Push Registry 的手机:-(

以上是关于Midlet 从蓝牙连接中唤醒的主要内容,如果未能解决你的问题,请参考以下文章

Android保活——蓝牙唤醒(主动kill掉也可唤醒)

esp32低功耗远程唤醒

esp32低功耗远程唤醒

macbook外接显示器怎么唤醒

iOS 15 在进入 BLE 信标区域时不会唤醒应用

Cocoa:确定唤醒时的网络可用性