我正试图从附近的Wifi直接打印机获取TXT记录。到目前为止,我可以发现同行并建立连接。但TXT唱片没有运气。
我尝试Wifi Direct Service Discovery
,我相信我做的一切都很正确,因为我比较了来自不同资源的大量代码,包括Google的示例项目和GitHub中的一些开源Wifi Direct Wrappers。但我无法使它发挥作用。
在尝试实现这一目标时,我也看到了一些奇怪的问题。例如,在某些设备中,当我启动对等点发现时,Wifi Connection开始被关闭并持续打开。
有人可以解释这实际上是如何运作的吗?对于Android设备而不是打印机是DnsSdServiceResponseListener
和DnsSdTxtRecordListener
吗?
在Android和Wifi Direct Printer之间建立连接后,我也尝试用MultiCast DNS IP Address (224.0.0.251)
听MulticastSocket
,但我也无法收到任何数据。
感谢。
答案 0 :(得分:0)
我用过" 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
}};
wifiP2PManagerObj.setDnsSdResponseListeners(mChannel, dnsListener, txtListener);
WifiP2pDnsSdServiceRequest serviceRequest = WifiP2pDnsSdServiceRequest.newInstance();
wifiP2PManagerObj.addServiceRequest(mChannel,serviceRequest, actionListener);
wifiP2PManagerObj.discoverServices(mChannel,actionListener);
成功执行发现服务后,侦听器应接收附近的服务信息。
希望这会有所帮助。 古德勒克。
Wifi直接支持的打印机默认情况下没有任何已发布的服务。要使用它们,您必须通过wifi直接连接到它们并正常打印,因为它的打印机连接到您的网络。请注意,这些侦听器旨在捕获已发布的服务(即除非发布服务,否则不会捕获任何设备的任何内容)。
答案 1 :(得分:0)