//#ifdef APP-PLUS //条件编译
let vm = this;
let mServerType = '_http._tcp.';//服务类型
let NsdServiceInfo = plus.android.importClass('android.net.nsd.NsdServiceInfo');
let NsdManager = plus.android.importClass('android.net.nsd.NsdManager');
let Context = plus.android.importClass('android.content.Context');
// 导入后可以使用new方法创建类的实例对象
let nsd_service_info = new NsdServiceInfo();
let nsd_manager = new NsdManager();
//获取应用主Activity实例对象系统服务NSD_SERVICE方法
let mNsdManager = plus.android.runtimeMainActivity().getSystemService(Context.NSD_SERVICE);
//实列API接口监听回调函数
let mDiscoveryListener = plus.android.implements('android.net.nsd.NsdManager$DiscoveryListener', {
onServiceFound: function(service) {
//先发现设备服务再执行连接获取数据
//导入service类
plus.android.importClass(service);
//实列化连接服务接口监听回调函数
//注意NsdManager$ResolveListener中间使用$不是“.”
let mResolveListener = plus.android.implements('android.net.nsd.NsdManager$ResolveListener', {
onServiceResolved: function(services) {
//连接服务
let name = services.getServiceName();
let port = services.getPort();
let ip = services.getHost();
plus.android.importClass(ip); //导入services.getHost()类
ip = ip.getHostAddress();
let arry = {
name: name,
port: port,
ip: ip
};
}
});
mNsdManager.resolveService(service, mResolveListener);//启动连接服务
}
});
// 导入mNsdManager Java类对象
plus.android.importClass(mNsdManager);
mNsdManager.discoverServices(mServerType, 1, mDiscoveryListener);//启动监听服务(类型,常量,回调函数)参考java discoverServices需要携带的参数类型
//#endif
plus调用安卓所有原生大致实现方法:
1.let NsdServiceInfo= plus.android.importClass("java类")
2.let nsd_service_info= new NsdServiceInfo() new方法创建类的实例对象
3.let mNsdManager = plus.android.runtimeMainActivity().getSystemService(Context.NSD_SERVICE); //获取应用主Activity实例对象系统服务NSD_SERVICE方法
4.plus.android.implements 声明监听回调方法 (主要通过监听函数获取数据)
5.mNsdManager.discoverServices(mServerType, 1, mDiscoveryListener);//启动监听服务
https://android.googlesource.com/platform/development/+/master/samples/training/NsdChat/src/com/example/android/nsdchat/NsdHelper.java 需要引入的类和整个实现方法参考java源代码
3 个评论
要回复文章请先登录或注册
FullStack
DCloud_heavensoft
熊哥 (作者)