我正在尝试从附近的Wifi直接打印机获取TXT记录。到目前为止,我可以发现同级并建立连接。但TXT唱片公司没那么走运。
我尝试过Wifi Direct Service Discovery,我相信我做得很好,因为我比较了来自不同资源的大量代码,包括谷歌的示例项目和GitHub中的一些开源Wifi Direct包装器。但我不能让它工作。
在尝试实现这一点时,我也看到了一些奇怪的问题。例如,在一些设备中,当我开始对等发现时,Wifi连接开始不断地关闭和打开。
有人能解释一下这到底是怎么回事吗?DnsSdServiceResponseListener和DnsSdTxtRecordListener是为安卓设备而不是打印机设计的吗?
在建立了安卓和Wifi Direct Printer之间的连接后,我也试着用MulticastSocket收听MultiCast DNS IP Address (224.0.0.251),但我也收不到任何数据。
谢谢。
发布于 2017-02-05 00:52:18
我在当前的项目中成功地使用了"DnsSdServiceResponseListener“和"DnsSdTxtRecordListener”。两个监听器都与发现附近的本地服务相关联。
要正确使用它们,您必须执行以下操作:
实现你的监听器
WifiP2pManager.DnsSdServiceResponseListener dnsListener = new WifiP2pManager.DnsSdServiceResponseListener() {
@Override
public void onDnsSdServiceAvailable(String instanceName, String registrationType, WifiP2pDevice device) {
// instanceName is service name and device is the print information
}};
WifiP2pManager.DnsSdTxtRecordListener txtListener = new WifiP2pManager.DnsSdTxtRecordListener() {
@Override
public void onDnsSdTxtRecordAvailable(String fullDomain, Map record, WifiP2pDevice device) {
// here we get the service published information in the record map object
}};将监听器添加到WiFiManager对象
wifiP2PManagerObj.setDnsSdResponseListeners(mChannel, dnsListener, txtListener);添加服务请求
WifiP2pDnsSdServiceRequest serviceRequest = WifiP2pDnsSdServiceRequest.newInstance();
wifiP2PManagerObj.addServiceRequest(mChannel,serviceRequest, actionListener);最后,发现服务
wifiP2PManagerObj.discoverServices(mChannel,actionListener);发现服务执行成功后,监听器应该会收到附近的服务信息。
希望这能有所帮助。祝你好运。
更新
默认情况下,Wifi直接支持的打印机没有任何已发布的服务。要使用它们,你必须通过wifi直接连接到它们,并正常打印,因为它是连接到您的网络的打印机。请注意,这些侦听器旨在捕获已发布的服务(即,除非发布服务,否则不会捕获任何设备的任何内容)。
https://stackoverflow.com/questions/41884283
复制相似问题