android物联网模块
移动便携设备,手机、平板是Android系统,在最底层传感器是检测模块。收集到的数据通过zigbee 发送给协调器,协调器给网关,最后到服务器,然后Android将服务器的数据外部调用(归根结底,还是与服务器的通信)。这时候用到的就是Web Service,而手机端就是客户端。完成这个调用,首先要在服务器端部署Web Service,之后再在客户端书写代码,访问接口,调用数据。把这个思路理清,接下来再去做,而我在这里首先将客户端的代码书写,服务器端在下一篇中给出详细的说明。
一、准备工作
1.SDK中并没有Web Service的类库,这就需要第三方类库调用,就是koasp2,简单的说,你得先导入一个jar包。完成之后如下图。
2.部署服务器端首先需要Tomcat,这是下一篇中才会用到的,我在这儿只是先把它准备好,客户端的简单调用用不到它。http://jingyan..com/article/86f4a73e5be03237d65269ef.html这是tomcat的安装教程,过程很详细;之后,http://www.hu.com/question/22893032这是将tomcat导入到ADT环境下的eclipse的教程,它的下载过程还是比较虐心的。
二、接下来就是代码的编写过程(注:这是客户端的)
1.首先还是Manifest,给它一个网络访问权限
2.书写xml布局文件(还是因为自己做得界面太丑,不粘了)
3.书写Activity。新建一个类(这只是代码示例,需要写的就是这些,可以传多个参数),
public class CommonWebService {
// 所调用的WebService的终端
public static String endpoint = "http://192.168.1.21:8080/hello/hellowordPort";
// 所调用的WebService的地址
public static String ip = "192.168.1.21";
// 所调用的WebService的命名空间
public static String namespace = "http://abcde/";
// 所调用的WebService中的方法
public static final String Infusion_METHOD = "MygetInfusion";
public void show_Infusion() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// 定义命名空间
String nameSpace = "http://abcde/";
// 定义调用方法名称
String methodName = "query_Infusion";
// endPoint以及soapAction
String endPoint = "http://192.168.1.21:8080/hello/hellowordPort";
String soapAction = "http://abcde/openlamp";
// 指定WebService的命名空间和调用方法
SoapObject soapObject = new SoapObject(nameSpace, methodName);
// 生成调用WebService方法调用的soap信息,并且指定Soap版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = soapObject;
//并不是dotnet开发的Web Service
envelope.dotNet = false;
// 输出
envelope.setOutputSoapObject(soapObject);
// 定义一个HttpTransportSE对象
HttpTransportSE transport = new HttpTransportSE(endPoint);
try {
transport.call(soapAction, envelope);
// transport.call(null, envelope);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
String result = null;
result = object.getProperty(0).toString();
Message message = handler_shuye.obtainMessage();
message.obj = result;
handler_shuye.sendMessage(message);
}
}).start();
}
public static String reslut_shuye;
private static Handler handler_shuye = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
// 将WebService得到的结果返回给TextView
reslut_shuye = msg.obj.toString();
};
};
}
4.在上述的代码中,需要注意的几点,你调用Web Service,你得先弄明白四个值:命名空间、调用的方法名称、EndPoint、SOAP Action。因为服务器端是自己部署,wsdl就要自己写,自己会部署服务器端了,这四个值也就一幕了然了。
安卓(Android)手机GPRS参数设置方法:点击桌面选择--设定--更多设置--移动网络--接入点名称--选项新建APN--名称:中国移动GPRS--APN:cmnet/cmwap--代理服务器:10.0.0.172--端口:80--用户名密码(不填)--服务器地址(不填)即可。iphone手机GPRS参数设置方法:IOS7版本之前首先点击iPhone手机上的“设置”;进入“蜂窝移动网络”,将蜂窝移动数据打开,再将下方的“蜂窝移动数据网络”点击打开,在“蜂窝移动数据”中的“APN”处填写“cmnet”即可。IOS7版本之后无需再进行设置,iphone手机自动默认为“cmnet”接入点上网使用。