如何识别当前正在运行android测试的设备?

如何识别当前正在运行android测试的设备?,android,gradle,Android,Gradle,我连接了多个设备,并运行gradle命令“connectedCheck”,该命令在多个设备上运行测试 ConnectedCheck按顺序在所有设备上执行测试。我想获取当前正在运行测试的设备的序列号 android是否提供了一种实现这一点的方法?您可以获得android设备的许多详细信息,如: //Get the instance of TelephonyManager TelephonyManager tm=(TelephonyManager)getSystemService(Co

我连接了多个设备,并运行gradle命令“connectedCheck”,该命令在多个设备上运行测试

ConnectedCheck按顺序在所有设备上执行测试。我想获取当前正在运行测试的设备的序列号


android是否提供了一种实现这一点的方法?

您可以获得android设备的许多详细信息,如:

//Get the instance of TelephonyManager  
    TelephonyManager  tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);  

    //Calling the methods of TelephonyManager the returns the information  
    String IMEINumber=tm.getDeviceId();  
    String subscriberID=tm.getDeviceId();  
    String SIMSerialNumber=tm.getSimSerialNumber();  
    String networkCountryISO=tm.getNetworkCountryIso();  
    String SIMCountryISO=tm.getSimCountryIso();  
    String softwareVersion=tm.getDeviceSoftwareVersion();  
    String voiceMailNumber=tm.getVoiceMailNumber();  

    //Get the phone type  
    String strphoneType="";  

    int phoneType=tm.getPhoneType();  

    switch (phoneType)   
    {  
            case (TelephonyManager.PHONE_TYPE_CDMA):  
                       strphoneType="CDMA";  
                           break;  
            case (TelephonyManager.PHONE_TYPE_GSM):   
                       strphoneType="GSM";                
                           break;  
            case (TelephonyManager.PHONE_TYPE_NONE):  
                        strphoneType="NONE";                
                            break;  
     }  
要获取设备型号名称,我们使用:

public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
    return capitalize(model);
} else {
    return capitalize(manufacturer) + " " + model;
}
}


private String capitalize(String s) {
if (s == null || s.length() == 0) {
    return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
    return s;
} else {
    return Character.toUpperCase(first) + s.substring(1);
}
} 

我找到了解决办法!事实上,一开始就没有问题

问题:Gradle android插件运行测试的任务是“connectedCheck”。它对连接到主机的android设备数量进行测试。现在,当我@Ignore一个测试时,它将在所有这些设备上被忽略,因为我只想对失败的设备这样做

解决方案:添加一个自定义jUnit注释,该注释接受设备序列ID的字符串值数组。通过扩展覆盖来编写自定义测试运行程序,以检查Build.Device是否与注释中提供的相同(如果对方法进行了注释)


如果要忽略它,以便仅跳过注释中指定的设备。

是的,您可以得到类似GT-19300的结果。很抱歉,您可能误解了我的问题。我不是问如何从总体上了解这些细节。我想在运行时获得当前正在运行测试的设备的详细信息。测试运行程序在所有连接的设备上逐个执行测试。是否有一种方法可以通过编程知道在给定实例中测试当前正在哪个设备上运行。是的,这就是为什么我给了你多个代码,你可以从中获得型号,无论是GSM还是CDMA,IMEI号码,用户id等。好的,你没有得到它。不要介意。但是如果你仍然感兴趣,可以看看GradleAndroid插件和“connectedCheck”任务。