我在当前项目中成功使用了“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 direct 连接到它们并作为连接到网络的打印机正常打印。请注意,这些侦听器旨在捕获已发布的服务(即不会为任何设备捕获任何内容,除非其发布服务)。