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 从蓝牙连接中唤醒的主要内容,如果未能解决你的问题,请参考以下文章