既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
mDataActivationState= 0
mUserMobileDataState= false
上面是 `adb shell dumpsys telephony.registry` 输出的一部分,提供了关于手机通话状态的信息。以下是这些信息的解释:
Phone Id=0: 表示手机上的电话 ID。通常,手机上可以有多个电话,每个电话都有一个唯一的 ID。在此示例中,ID 为 0,表示手机上的第一个电话。
mCallState=1: 表示来电状态。在这里,1 表示电话的状态是 CALL_STATE_RINGING,即正在响铃,表示当前有来电。
mRingingCallState=5: 表示正在响铃的来电状态。在这里,5 表示来电状态是 CALL_STATE_ALERTING,表示来电正在呼叫。
mForegroundCallState=0: 表示前台通话的状态。在这里,0 表示前台没有活动通话。
mBackgroundCallState=0: 表示后台通话的状态。在这里,0 表示后台没有活动通话。
mPreciseCallState=Ringing call state: 5, Foreground call state: 0, Background call state: 0, Disconnect cause: -1, Precise disconnect cause: -1: 提供了更详细的通话状态信息,包括来电状态、前台通话状态、后台通话状态以及断开原因等。
mCallDisconnectCause=-1: 表示通话断开原因,-1 表示未提供断开原因的信息。
mCallIncomingNumber=17000724942: 表示来电的号码。在这里,来电号码是 17000724942。
>
> 根据上述信息,手机正在响铃,当前有来电,来电状态为 CALL\_STATE\_ALERTING,来电号码是 17000724942。这是 telephony.registry 输出的一部分,用于提供电话状态和通话信息。
>
>
>
下面是一个Python示例,用于获取来电状态:
import subprocess
def get_call_state():
try:
output = subprocess.check_output([“adb”, “shell”, “dumpsys”, “telephony.registry”], universal_newlines=True)
lines = output.splitlines()
for line in lines:
if “mCallState” in line:
call_state = line.split(“=”)[1].strip()
return int(call_state)
except subprocess.CalledProcessError as e:
print(f"Error executing adb command: {e}")
return None
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036
![](https://img-blog.csdnimg.cn/56a03f7c838544e2944a1b28ae9ad720.png)
### 3. 自动接听来电
一旦你获取到了来电状态,你可以根据需要执行接听电话的操作。通常,来电状态为1表示来电正在响铃,此时我们可以模拟按下接听电话的按钮,使用以下代码:
def answer_call():
subprocess.call(‘adb shell input keyevent 5’, shell=True)
1. 建立自动化测试 在自动化测试中,你可以集成上述功能,以便在需要时自动接听来电。例如,你可以在特定测试用例中添加接听来电的逻辑,以确保应用程序在接听电话的情况下正常工作。
以下是一个示例,演示如何在自动化测试中使用ADB来监听来电和自动接听:
if name == “main”:
call_state = get_call_state()
if call_state is not None:
print(f"来电状态: {call_state}")
if call_state == 1: # 当来电状态为 CALL_STATE_RINGING 时
print(“接听电话中…”)
answer_call()
else:
print(“无法获取来电状态”)
### 完整代码
>
> 创建一个循环来定期检查来电状态,并在检测到来电时执行相关操作。以下是一个示例,用于不断检测来电状态:
>
>
>
import subprocess
import time
def get_call_state():
try:
output = subprocess.check_output([“adb”, “shell”, “dumpsys”, “telephony.registry”], universal_newlines=True)
lines = output.splitlines()
for line in lines:
if “mCallState” in line:
call_state = line.split(“=”)[1].strip()
return int(call_state)
except subprocess.CalledProcessError as e:
print(f"Error executing adb command: {e}")
return None
def answer_call():
subprocess.call(‘adb shell input keyevent 5’, shell=True)
if name == “main”:
while True:
call_state = get_call_state()
if call_state is not None:
print(f"来电状态: {call_state}")
if call_state == 1: # 当来电状态为 CALL_STATE_RINGING 时
print(“接听电话中…”)
answer_call()
else:
print(“无法获取来电状态”)
# 休眠一段时间后再次检测
time.sleep(5) # 5秒,你可以根据需要调整休眠时间
### 5. 注意事项
设备和制造商差异:不同的Android设备和制造商可能会有不同的实现方式,因此需要根据具体情况进行适配。
![img](https://img-blog.csdnimg.cn/img_convert/0b8dc8bf7455fccbb591bcac646af104.png)
![img](https://img-blog.csdnimg.cn/img_convert/1468bcb8b9df025a2b99473ef3abf165.png)
![img](https://img-blog.csdnimg.cn/img_convert/e4adedb224bef13c6fce2c0238c4d846.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**
验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**