【发布时间】:2012-11-14 19:57:07
【问题描述】:
我开发了一个与音乐相关的安卓应用程序。我在处理来电时的媒体播放器时遇到问题。我想在通话期间暂停音频,并在通话结束后恢复。我需要建议是否使用带有 onstatechanged 的 TelephonyManager 来暂停和恢复音频(或)在来电期间暂停和恢复应用程序本身的任何其他方法。
【问题讨论】:
标签: android android-mediaplayer telephonymanager
我开发了一个与音乐相关的安卓应用程序。我在处理来电时的媒体播放器时遇到问题。我想在通话期间暂停音频,并在通话结束后恢复。我需要建议是否使用带有 onstatechanged 的 TelephonyManager 来暂停和恢复音频(或)在来电期间暂停和恢复应用程序本身的任何其他方法。
【问题讨论】:
标签: android android-mediaplayer telephonymanager
给你
在清单中包含以下权限。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
然后
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
} else if(state == TelephonyManager.CALL_STATE_IDLE) {
Play music
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
Pause music
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
在onDestroy注销它,成为一个优秀的安卓公民
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}
当用户接听电话时,CALL_STATE_OFFHOOK 将被调用。您可以在此处编写代码来暂停播放。
【讨论】:
phoneStateListener 设为实例变量?
在您的活动中使用onPause() 和onResume() 方法。当有来电时,会调用 onPause() 方法。挂断时调用 onResume()。
即使用户点击从其他应用发送的通知,这也会起作用。
【讨论】: