前几天接到一个需求,我们的客户需要对手机网络接入点进行可用性测试,简单点说就是需要实现Android上的APN配置的添加,APN切换网络模式4G/3G/2G切换,我要调研下写个demo。 因为是要实现自动化测试,而且得合并到现有的拨测系统(C#项目)成为其中的一个模块,就需要用 ...
前几天接到一个需求,我们的客户需要对手机网络接入点进行可用性测试,简单点说就是需要实现Android上的APN配置的添加,APN切换网络模式4G/3G/2G切换,我要调研下写个demo。
因为是要实现自动化测试,而且得合并到现有的拨测系统(C#项目)成为其中的一个模块,就需要用C#来驱动Android测试。交互方式上首先想到的是撸个代码放Android上,定时从服务端获取任务命令然后执行,嗯,OWIN实现个webapi进行数据交互分分钟的事情,貌似可行。 不过又想到,我们测试万一网络切换坏了,就不能联网了那就完了。这样的话,就不能进行任何手机天线端的网络操作了。接着就想到USB交互 然后找到了这个命令:adb forward tcp:PCPort tcp:Androidport 作用是将当前环境的某个端口与Android的某个端口绑定。这样Android 内部请求Androidport端口号就和请求PC上的PCPort端口一样,反之亦然,手机需要打开USB调试。准备写的时候我又想到,我们做的是无人值守的主动测试,Android一会儿跑过来问问有没有执行命令,一会儿跑过来问问 感觉有点不大好,麻烦别人还得别人惦记着不是我的性格。。。 balabala一番思想斗争后决定用socket交互,Android端做服务端,要做啥 过来说下~~
Android的Server端通讯简要讯码:
SCServer :接收连接过来的客户端,并且保存到ClientManager中
public class SCServer implements Runnable { static Boolean Startd = false; static Integer Port; static ServerSocket serverSocket = null; ClientManager clientManager = new ClientManager(); public SCServer(int port) { Port = port; } @Override public void run() { if (!Startd) { try { serverSocket = new ServerSocket(Port); Startd = true; System.out.println("Startd :" + Port); } catch (IOException e) { e.printStackTrace(); } try { while (Startd) { Socket socket = serverSocket.accept(); clientManager.AddClient(socket); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void RegistCallBack(String comm, CallBack callBack) { CommManager.Add(comm, callBack); } public void UnRegistCallBack(String comm) { CommManager.Remove(comm); } public void Send(Integer clientID, String comm, Map<String, String> msgDatas) { clientManager.SendMsg(clientID, comm, msgDatas); }}
原标题:Android与.Net交互模拟用户屏幕操作添加APN和网络4G/3G切换
关键词:.NET
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。