我正在开发一个改进Android应用程序自动化测试的项目。我想做的事情非常“简单”:我有一个非常简单的SIP客户端,它具有基本的用户界面,只需阅读Android开发者网站(https://developer.android.com/guide/topics/connectivity/sip.html)上接收和拨打SIP电话的API指南。
我需要从我的电脑远程控制这个应用程序,连接在同一个本地网络或相同的wifi,通过发送命令或类似的(不与手机交互)到我的手机上正常运行的应用程序。示例我发布了调用 sipAddress 的方法initiateCall()(在应用程序中,sipAddress是从文本框中获取的),我想要做的是:
我认为解决方案必须是关于网络服务的,但我没有更好的想法,我不知道如何开始以及从哪里开始解决这个问题,这就是我需要你帮助的原因。 / p>
public void initiateCall() {
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
// set up the listener for outgoing calls
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
updateStatus(call, 2);
}
@Override
public void onCallEnded(SipAudioCall call) {
updateStatus("Call End");
}
};
call = manager.makeAudioCall(me.getUriString(), sipAddress,
listener, 30);
} catch (Exception e) {
Log.i("WalkieTalkieActivity/InitiateCall",
"Error when trying to close manager.", e);
if (me != null) {
try {
manager.close(me.getUriString());
} catch (Exception ee) {
Log.i("WalkieTalkieActivity/InitiateCall",
"Error when trying to close manager.", ee);
ee.printStackTrace();
}
}
if (call != null) {
call.close();
}
}
}
答案 0 :(得分:0)
你可以做REST API风格。您需要设置简约的网络服务器。
如果您访问了url phoneip/ctrl/makecall?number=yournumber
我们调用的服务器端方法,如果设置正确的话。然后你可以调用方法并使用GET或POST变量作为参数。
您必须查看Java Webserver Libraries / Frameworks。你可以选择一个轻量级的。例如this one。 然后,您还可以非常轻松地添加安全功能(验证以保护它)。
sparkjava的例子
import static spark.Spark.*;
....
get("/ctrl/makecall", (request, response) -> {
String phonenum = request.queryParams("number"); //may not be accurate; you have to determine the GET variable called "number" in that case; you can rename it; see docs!!!
//call your method with proper arguments
});