gpt4 book ai didi

android - 来电时停止和启动音乐

转载 作者:IT王子 更新时间:2023-10-28 23:40:10 26 4
gpt4 key购买 nike

我在 Android 中实现了一个从 URL 播放媒体的 Activity 。

为了在来电时添加暂停功能,我创建了一个接收器,它在来电时设置一个变量。 Activity 在 onPause() 中读取这个变量,暂停音乐并重置它。当调用完成并恢复 Activity 时,音乐在 onResume() 中恢复。

只要 Activity 具有焦点,它就可以正常工作。如果我在播放音乐时返回主屏幕,然后调用,则不会调用 onPause()。因此,我无法停止和开始音乐。

有没有人实现了一个媒体播放器来拦截来电/去电并正确停止/开始音乐?

最佳答案

你可以做一些事情:

首先,您可以使用 PhoneStateListener 监听通话状态的变化。您可以在 TelephonyManager 中注册监听器:

PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
//Incoming call: Pause music
} else if(state == TelephonyManager.CALL_STATE_IDLE) {
//Not in call: Play music
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
//A call is dialing, active or on hold
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}

记得在不再需要监听器时使用 PhoneStateListener.LISTEN_NONE 取消注册:

TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}

For more information read the documentation .

您可以做的另一件事是收听广播 android.intent.action.PHONE_STATE。它将包含额外的 TelephonyManager.EXTRA_STATE,它将为您提供有关调用的信息。 Take a look at the documentation here .

请注意,在这两种情况下,您都需要 android.permission.READ_PHONE_STATE 权限。

关于android - 来电时停止和启动音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610464/

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