现在我们要测试两台终端的接通率,这里我只写VoLTE视频通话的呼叫,一般使用移动卡,且开通VOLTE业务。视频通话功能!
我们基于uiautomatior框架。在uiautomatior中有来电监听API的UIwatchar,不懂得百度;一般在在自动化的时候,监听是为了测试过程会有来电中断测试,所以监听一有来电就挂掉,不让它影响测试;
我们这里监听不是为了挂断,是为了接听,思路很简单:当有来电(VoLTE视频通话)来电,就接听等场景就行。
开发需求:volte 通话次数50 次、通话时长180s、间隔时间30s、呼叫超时时间30s
VoLTE视频通话:
代码如下:匆匆忙忙写的,格式很乱,被注释的语句请忽略(或者删除),只看中文注释
package uiauto;
//import util.Bundle;
//import util.RemoteException;
//import util.UiObjectNotFoundException;
import util.Common;
import util.PackageEvent;
import util.CmdAdb;
import util.ImgCompare;
import util.Location;
import util.Selector;
import util.FileUtil;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import android.os.Bundle;
import android.os.RemoteException;
import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.core.UiWatcher;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class Answerphone extends UiAutomatorTestCase {
// Common common = new Common();
// PackageEvent packageEvent = new PackageEvent();
private static final long TIME_OUT = 10 * 60 * 1000;
private long currentTime;
private boolean flag = true;
long eslcape = 0;
public void testAnswerphone() throws Exception{//Exception
int count=1;
int count1=1;
UiObject JietingOne = new UiObject(new UiSelector().text("视频通话来电"));//��Ƶͨ������视频通话来电
// UiObject VOLTEcall = new UiObject(new UiSelector().resourceId("com.android.dialer:id/callStateLabel"));//��Ƶͨ������视频通话来电
UiObject VOLTEcall = new UiObject(new UiSelector().resourceId("com.android.dialer:id/videoCallIcon"));//��Ƶͨ������VOLET来电小图标
//1/
/*UiWatcher inComingWatcher = new MyWatcher();
getUiDevice().registerWatcher("来电", inComingWatcher);
getUiDevice().pressBack();
// UiObject dialButton = new UiObject(new UiSelector().resourceId("com.android.sprdlauncher1:id/workspace"));
System.out.println("waiting for incoming");
currentTime = System.currentTimeMillis();
while (flag && eslcape < TIME_OUT) {
// VOLTEcall.clickAndWaitForNewWindow();
Runtime.getRuntime().exec("input keyevent KEYCODE_CALL");//接听
eslcape = System.currentTimeMillis() - currentTime;
}
assertFalse("没有收到来电", flag);
}
class MyWatcher implements UiWatcher {
// @Override
public boolean checkForCondition() {
// UiObject inCall = new UiObject(new UiSelector().resourceId("com.android.dialer:id/IncomingCallRejectButton"));
UiObject VOLTEcall = new UiObject(new UiSelector().resourceId("com.android.dialer:id/callStateLabel"));//��Ƶͨ������视频通话来电
while (eslcape < TIME_OUT) {
if (VOLTEcall.exists()) {
System.out.println("you have a call");
try {
// VOLTEcall.clickAndWaitForNewWindow();
System.out.println("22222222222");
Runtime.getRuntime().exec("input keyevent KEYCODE_CALL");//接听
flag = false;