我尝试创建一个提供公开可用服务的MIDlet,但下面的代码还不够。该服务已启用(无例外),但仍无法发现。
public StreamConnection waitForConnection() throws IOException {
if (this.notifier == null) {
// Create a server connection (a notifier)
this.notifier = (StreamConnectionNotifier) Connector.open(serviceURL);
}
return this.notifier.acceptAndOpen();
}
url构造如下
private final static String serviceURL = "btspp://localhost:" + servieceUUID +
";name=" + serviceName + ";authenticate=false;master=false;encrypt=false";
经过一些谷歌搜索后,我发现像这样的代码会有所帮助:
final ServiceRecord sr = LocalDevice.getLocalDevice().getRecord(this.notifier);
//Public browse group UUID
final DataElement element = new DataElement(DataElement.DATSEQ);
element.addElement(new DataElement(DataElement.UUID, new UUID(0x1002)));
sr.setAttributeValue(0x0005, element);
LocalDevice.getLocalDevice().updateRecord(sr);
但首先它没有解决问题,其次我不知道它究竟是做什么的。
我使用诺基亚E70。
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
您是否尝试使用setDiscoverable方法?
答案 1 :(得分:0)
我知道这个问题真的很老了,但我刚碰到它,经过一天的撞击我的头后,我找到了解决方案。
您需要将服务的服务类ID设置为已知的内容:
ServiceRecord sr = LocalDevice.getLocalDevice().getRecord(service);
DataElement de = new DataElement(DataElement.DATSEQ);
DataElement uuid = new DataElement(DataElement.UUID, new UUID("1101",false));
de.addElement(uuid);
sr.setAttributeValue(0x0001, de);
LocalDevice.getLocalDevice().updateRecord(sr);
UUID 0x1101是一个串行设备(我随意选择了它),属性0x0001是服务类ID属性。