gpt4 book ai didi

java - Android READ_PHONE_STATE 事件

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:33 25 4
gpt4 key购买 nike

我可以在 READ_PHONE_STATE 事件中使用循环吗?

我想在电话开始响铃到结束响铃时循环工作。用户开始调用以断开调用的情况也是如此。

这是我的广播接收器类

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
while (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
//wate for user shaking the phone
//call ansered
}
while (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
//do something while phone answered
//I want to work something during the calling time
}
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) {
//do some
}
}
}

最佳答案

您已经完成了所有必要的研究,只是可能不是您想要做的“循环”。

您需要的是在电话铃声响起时启动某些操作,并在铃声停止时停止。通话中也是如此。

要在电话响铃时处理事件,请开始在 CALL_STATE_RINGING 上执行某些操作,然后等待 CALL_STATE_OFFHOOKCALL_STATE_IDLE了解铃声何时停止。

用户调用电话时也是如此:当您的接收器收到 CALL_STATE_OFFHOOK 时启动某些操作并在收到 CALL_STATE_IDLE 时停止.

我会让您的 BroadcastReceiver 在 UI 线程中发送一条消息(或调用一个函数)来执行您需要执行的操作,然后在调用状态发生更改时发出通知。

您不需要在这些时间间隔内循环。您只想在正确的时间开始/停止做某事。你总是可以设置一些备份安全措施(例如:如果电话响了,3 分钟内没有任何反应,我会停止做某事),以确保你不会在你不想的时候继续运行某些东西。

关于java - Android READ_PHONE_STATE 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com