android nsdservice 类型,Android NSD onServiceFound()没有被调用
第一次尝试在
Android中进行IP发现.我使用了
http://developer.android.com/training/connect-devices-wirelessly/nsd.html#discover并编写了代码.我没有注册设备,只是在网络中发现服务.当我在模拟器或设备中运行项目时,会调用onDiscoveryStarted(),但永远不会调用onServiceFound().请在下面找到我的代码.任何输入都非常感谢.谢谢!
public class MainActivity extends AppCompatActivity {
private Button discoverButton;
Context mContext;
NsdManager mNsdManager;
NsdManager.ResolveListener mResolveListener;
NsdManager.DiscoveryListener mDiscoveryListener;
NsdManager.RegistrationListener mRegistrationListener;
public static final String SERVICE_TYPE = "_http._tcp.";
public static final String TAG = "MyApp_MAIN_CLIENT";
public String mServiceName = "MyApp";
/*
* public static final String SERVICE_TYPE = "_http._tcp.";
public static final String TAG = "NsdHelper";
public String mServiceName = "NsdChat";
* */
NsdServiceInfo mService;
private Handler mUpdateHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNsdManager = (NsdManager) this.getSystemService(Context.NSD_SERVICE);
discoverButton = (Button) findViewById(R.id.netButton);
discoverButton.setOnClickListener(new View.OnClickListener() {
public void onClick(android.view.View v) {
initializeDiscoveryListener();
initializeResolveListener();
discoverServices();
}
});
}
public void discoverServices() {
mNsdManager.discoverServices(
SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
}
public void initializeDiscoveryListener() {
// Instantiate a new DiscoveryListener
mDiscoveryListener = new NsdManager.DiscoveryListener() {
// Called as soon as service discovery begins.
@Override
public void onDiscoveryStarted(String regType) {
Log.d(TAG, "Service discovery started");
}
@Override
public void onServiceFound(NsdServiceInfo service) {
// A service was found! Do something with it.
Log.d(TAG, "Service discovery success" + service);
if (!service.getServiceType().equals(SERVICE_TYPE)) {
// Service type is the string containing the protocol and
// transport layer for this service.
Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
} /*else if (service.getServiceName().equals(mServiceName)) {
// The name of the service tells the user what they'd be
// connecting to. It could be "Bob's Chat App".
Log.d(TAG, "Same machine: " + mServiceName);
}
//else if (service.getServiceName().contains("NsdChat")){*/
else{
mNsdManager.resolveService(service, mResolveListener);
}
}
@Override
public void onServiceLost(NsdServiceInfo service) {
// When the network service is no longer available.
// Internal bookkeeping code goes here.
Log.e(TAG, "service lost" + service);
}
@Override
public void onDiscoveryStopped(String serviceType) {
Log.i(TAG, "Discovery stopped: " + serviceType);
}
@Override
public void onStartDiscoveryFailed(String serviceType, int errorCode) {
Log.e(TAG, "Discovery failed: Error code:" + errorCode);
mNsdManager.stopServiceDiscovery(this);
}
@Override
public void onStopDiscoveryFailed(String serviceType, int errorCode) {
Log.e(TAG, "Discovery failed: Error code:" + errorCode);
mNsdManager.stopServiceDiscovery(this);
}
};
}// end of initializeListener()
public void initializeResolveListener() {
mResolveListener = new NsdManager.ResolveListener() {
@Override
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
Log.e(TAG, "Resolve failed" + errorCode);
}
@Override
public void onServiceResolved(NsdServiceInfo serviceInfo) {
Log.e(TAG, "Resolve Succeeded. " + serviceInfo);
if (serviceInfo.getServiceName().equals(mServiceName)) {
Log.d(TAG, "Same IP.");
return;
}
mService = serviceInfo;
int port = mService.getPort();
InetAddress host = mService.getHost();
Log.d(TAG,host.toString());
}
};
}//end of initializeResolveListener
@Override
protected void onPause() {
super.onPause();
stopDiscovery();
tearDown();
}
@Override
protected void onResume() {
super.onResume();
discoverServices();
}
@Override
protected void onDestroy() {
tearDown();
super.onDestroy();
}
public void stopDiscovery() {
mNsdManager.stopServiceDiscovery(mDiscoveryListener);
}
public void tearDown() {
mNsdManager.unregisterService(mRegistrationListener);
}
}
android nsdservice 类型,Android NSD onServiceFound()没有被调用相关推荐
- android安装类型,Android 获得已安装的程序并且区分类型
核心代码: 找到系统已经安装的应用 List packs = getPackageManager().getInstalledPackages(0);//0 代表所有的包 监听程序的安装和卸载 pac ...
- android 响应类型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型...
正如Than所说,使用拦截器的解决方案并不是那么好.我已经设法用一个Rx变压器来解决这个问题.我还添加了自定义api异常,当出现问题时我可以抛出它并在onError中轻松处理它.我认为它更强大. 响应 ...
- android bean类型,Android Gson解析数组中多种类型
最近空闲时间在一款仿某条的app,一开始,采用的是api store中的数据源,但是这样,好多功能因为不能得到接口支持不能实现,因此只能......通过fiddler抓 某条 的接口了.. 在抓一个接 ...
- Android MIME类型结构
Android MIME类型的结构 MIMW类型标准:http://tools.ietf/html/rfc2046 根据MIME类型规范,MIME类型包含两部分:类型和子类型.下面是一些流行的MIME ...
- 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )
文章目录 一.Windows 平台运行的控制台应用程序类型 二.编译 Windows 平台运行的 Android 逆向程序 一.Windows 平台运行的控制台应用程序类型 hacktool 工程的类 ...
- 【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )
文章目录 一.Android 平台运行的 cmd 程序类型 二.Android 平台运行的 cmd 程序编译选项 三.编译 Android 平台的 cmd 可执行程序 一.Android 平台运行的 ...
- android 字符串转浮点,Android String类型转换为float、double和int的工具类方法
在做项目时遇到了需要把年份(String)转换为int类型,对年份进行比较,顺便提取为方法,保存下来方便以后使用. public class ConvertUtil { //把String转化为flo ...
- Android动画类型
动画类型 Android的animation由四种类型组成 <ignore_js_op> Android动画模式 Animation主要有两种动画模式: 一种是tweened anima ...
- android 字符转double,Android String类型转换为float、double和int的工具类方法
在做项目时遇到了需要把年份(String)转换为int类型,对年份进行比较,顺便提取为方法,保存下来方便以后使用. public class ConvertUtil { //把String转化为flo ...
最新文章
- Visual Studio进行Web性能测试- Part III
- 【MAC】记mac中django-admin.py 调用失败的解决方案
- 【填坑】初识钛极小龟NB-IoT物联网开发套件TiKit
- xdeepfm算法思维导图与代码
- PHP-客户端的IP地址伪造、CDN、反向代理、获取的那些事儿
- 大批工厂提前20天放假,而大家却都在玩金融
- Delphi中禁止WebBrowser右键的方法
- 从底层分析c和类c语言
- Microsoft 帐户异常登录活动,QQ邮箱代收hotmail邮件不成功
- mysql 5.6 64位解压版_MySQL 5.6 for Windows 解压缩版配置安装(win 10 64位亲测)附安装包下载链接...
- 计算机组成原理完整学习笔记(七):CPU 的结构与功能
- 计算机如何打开安全组策略,Win10系统无法打开本地安全策略如何解决
- Python实现二维码扫码登录
- 百度主页被“/?tn=88093251_85_hao_pg“劫持的一种解决办法
- cropperjs裁剪后图片变大的问题
- 明天太阳照常升起的概率是多少?
- 阿里,京东,蚂蚁面试题
- vue中循环图片不显示问题
- ...可变形参的使用
- 【转】4G手机打电话为什么会断网 4G上网和通话不能并存原因分析
热门文章
- 程序员的基本功:为什么非要学Python数据分析?答案早就写在JD上了...
- 你不知道的 Web 性能优化 | 原力计划
- 均薪连续三年过万,北上深人才需求大 !| 5G 人才报告
- 如何在 JavaScript 面试中过五关斩六将?
- Python 一键转 Java?“Google 翻译”你别闹
- 老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码 | 技术头条
- 前端开发者如何利用 CSS 实现酷炫的变色方案?
- 集 Python、C、R、Ruby 之所长,动态编程语言 Julia 1.0 正式发布
- 阿里 8.6 亿美元再押 ofo,与摩拜合并再无可能?
- 当科学家遇上流氓,被喧哗炒作的量子通信技术又将何时落地?