· 133·
第3期
魏永畅,等:基于Android系统的光谱传感物联网移动终端设计
ds—new
Dataoutputstream
Dataoutputstream
定选择某一个环境节点后会跳转到时间段选择页面,用户可
以选择时间段从而获取此时间段内采集的所有环境信息。
环境信息菜单请求服务器获取数据的方式与光谱信息菜单
的方式相同。
(socket.get()utputStream());
3)将注册信息传送给服务器
ds.writeUTF(register-info);
4)关闭输出流与Socket
以上所涉及到的网络通信均采用SOap协议。So印(简单
对象访问协议)是一种标准化的通信规范,主要用于web服
务。S0ap基于XML标准,用于在分布式环境中发布信息,并
执行远程过程调用。使用Soap不用考虑任何特定的传输协议
(通常选用H1vrP协议),就能使数据序列化口“。本实例中
S0ap调用webService的获取光谱数据具体步骤如下:
1)添加ksoap2包。webService是一种基于SOAP协议
的远程调用标准,通过webservice可以将不同的操作系统平
台,不同技术,不同语言整合在一块。在Android sDK中没
ds.close():
socket.close();
其中ip指服务器IP地址,port指服务器连接端口,reg—
ister-info指客户端发送至服务器的注册信息。
登录功能的实现使用Soap协议与服务器进行通信(Soap
协议将在节点信息模块介绍),服务器端将用户名和密码与数
据库用户表中的信息进行匹配,匹配成功后登录成功。
2.2节点信息模块
在移动终端节点展示界面上采用双List列表形式展示,
有提供调用webService的库,因此需要使用第三方的SDK
来调用webservice。在这里采用ksoap2第三方SDK。
2)指定命名空间和调用的方法名,如:
String namespace一”http://spectrum—data”;
Stringmethodname一”spectrunLdata”;
左边一列展示Block信息,右边一列显示所选Block下的节点
信息。为了区分光谱节点以及环境节点,在界面底部设置菜
单栏,分别为光谱信息、环境信息及个人信息,由图3所示。底
部菜单栏的设计提高了移动终端功能开发的灵活性,因为各
个菜单栏下的开发相互独立,可以分别开发最后合并,方便日
后由于移动终端功能的改变对于模块的增加修改。
为实现菜单栏左右滑动切换页面view的效果,移动终端
中采用ViewPager类。其为Android扩展包v4中的类。建
立底部菜单栏的方法如下:
Soapobjectreq—new Soapobject(namespace,methodname);
3)设置调用方法的参数值:
req.addProperty(”username”,username);
req.addProperty(”block”,blockname);
req.addProperty(”llghtnode”,lightnode);
req.addProperty(”time”,time);
1)为底部菜单栏新建一个布局。
2)将ViewPage添加到页面布局,其下方添加底部菜单
栏布局。
4)生成调用webService方法的Soap请求信息。该信
息由SoapSerializationEnvelope描述:
SoapSerializationEnvelope envelope—new SoapSerializationEn—
veIope(SoapEnvelope.VERlO);
3)为每个菜单对应的页面内容建立各自的布局,通过适
配器关联各个页面与ViewPager。
4)监听viewPager与底部菜单栏事件,进行页面的切换
enveIope.bodyout—req;
展示。
5)创建HttpTransportssE对象,访问云服务器url:
String URL=”IP-port”+/spectrumdata
/services/spectrum—data”;
■冒圈■■l
8L蝴'
光谴节虚"}
光蕾节点2号
光诣节点3号
珲墒毫盎1号
肄壤节蠢2母
环怖盛a号
耳曩$融粤
R唆$赢礴
薜境节赢6譬
札OCK
2
HttpTransportSE transport—new HttpTransportSE(URL);
6)使用call方法调用webService方法:
transport.calI(null,envelope);
7)使用getResponse方法获得webService返回的结果:
result一(Soapobject)envelope.getResponse();
8)解析返回的内容。
*}慨
1{q悼■
■
≠^t■■●酶
Ⅷ
—————一——●■—_
在进行网络请求时需创建一个新的线程。Android4.o
之后在主线程里执行网络请求会报NetworkOnMainThread—
Exception的异常。网络请求会耗费大量时间,造成主线程
的阻塞,使移动终端运行时出现阻塞卡顿,所以不能在主
图3节点信息展示界面
登陆成功后会跳转到节点显示界面,此界面默认获取云
数据库中用户名下的Block并进行显示。在光谱信息菜单栏
时,当选择具体的Block后,移动终端会向服务器上传用户名
以及Block信息以请求对应Block下的光谱节点信息,云服
务器从数据库中获取对应数据后传输给移动终端进行展示。
环境节点包括温度、湿度、二氧化碳浓度与光照强度节
点。页面上的环境信息节点被选择后会跳转环境节点数据
显示页面,此页面会显示4种环境节点采集的最新数据。特
线程里进行网络请求。创建线程并启动的方法为:
Thread t1=new Thread(webInstance);
t1.start();
其中webInstance是创建的网络请求类的对象。
2.3数据信息模块
2.3.1数据绘图
经光谱感知节点采集到的数据信息为204个离散的光
万方数据
全部评论(0)