在 Android 2.3 上实现 OBEX PUSH 服务器
我需要在 Android 2.3 设备上设置应用内 OBEX 服务器。使用蓝牙聊天示例代码,我能够设置 OBEX 服务器。但是,服务器需要使用自定义 UUID,因此该服务不会注册为“OBEX 服务器”
# sdptool browse local
...(snip)...
Service Name: OBEX Object Push
Service RecHandle: 0x10000
Service Class ID List:
UUID 128: ab123abc-1a2b-3c4d-5d7f-1234567890ab
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 18
因此,当我接收数据时,看起来我正在接收原始 OBEX 连接请求:
80 00 07 10 00 04 00 00 00 00 ...(snip)... 00 00 00 (1kb file)
是否有我可以使用的 OBEX 实现或者我必须自己实施该协议?
我不想使用内置的 OBEX 服务器 - 这必须位于应用程序中。我尝试过 BlueCove,但当我在注册服务时遇到问题时,我放弃了它。
I need to setup an in-app OBEX server on an Android 2.3 device. Using the Bluetooth Chat Sample code I was able to setup an OBEX server. However, the server needs to use a custom UUID so the service is not registered as an 'OBEX Server'
# sdptool browse local
...(snip)...
Service Name: OBEX Object Push
Service RecHandle: 0x10000
Service Class ID List:
UUID 128: ab123abc-1a2b-3c4d-5d7f-1234567890ab
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 18
So, when I receive data, it looks like I am receiving a raw OBEX connection request:
80 00 07 10 00 04 00 00 00 00 ...(snip)... 00 00 00 (1kb file)
Is there an OBEX implementation that I can use or do I have to implement the protocol myself?
I don't want to use the inbuilt OBEX server - this has to be in app. I have tried BlueCove but I abandoned it when I had issues registering a service.
Yes, I did see this post and read the link in it, but by golly, there must be an easier way!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我最终自己实现了该协议。它并不像我想象的那样毛茸茸的。由于我期望只连接一个特定的客户端,并且我知道该客户端只会推送一个文件,因此我只能部分实现我需要的协议部分。
一些有助于理解 OBEX 协议的文档是 Obex13.pdf,位于: http://gitorious.org/gammu/gsm-docs/trees/e5161a75fb1e1c1608959b27ae3c3940bcf0911b/standards/obex
我如何解析套接字输入流的快速片段:
(注意 OBEXUtils 和 OBEXConstants 是我的类。)
OBEXConstant 的片段:
I ended up implementing the protocol myself. It wasn't as hairy as I imagined. Since I was expecting only a specific client to connect and I knew that the client would only be pushing one file I was able to partially implement only the sections of the protocol that I needed.
Some documentation that helped with understanding the OBEX protocol were Obex13.pdf at: http://gitorious.org/gammu/gsm-docs/trees/e5161a75fb1e1c1608959b27ae3c3940bcf0911b/standards/obex
A quick snippet of how I parsed the sockets input stream:
(Note OBEXUtils and OBEXConstants are my classes.)
Snip of OBEXConstant:
也许
BluetoothPbapObexServer
有帮助:com.android.bluetooth.pbap.BluetoothPbapObexServerMaybe
BluetoothPbapObexServer
helps: com.android.bluetooth.pbap.BluetoothPbapObexServer