【发布时间】:2013-08-09 07:29:15
【问题描述】:
我正在使用此代码来监听电话的状态。当电话到达时,它会暂停媒体播放器,但一旦我接听电话,它就会从监听扬声器(而不是铃声)再次开始播放。我还尝试从case TelephonyManager.CALL_STATE_IDLE: 中删除mediaPlayer.start(),在这种情况下它工作正常,但它不会再次启动(恢复)。有没有可用的标志来做到这一点?
private final PhoneStateListener phoneListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
try {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Toast.makeText(context, "Call is Coming",Toast.LENGTH_SHORT).show();
mediaPlayer.pause();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_IDLE:
mediaPlayer.start();
break;
default:
}
} catch (Exception ex) {
mediaPlayer.release();
}
}
};
}
或者有没有其他方法可以做到这一点?
【问题讨论】:
-
我对 Telephonymanager 不太熟悉,但我建议您使用 Soundpool 而不是 MediaPlayer 以获得更好的性能。
-
我会在默认情况下放一些东西,以查看您是否正在处理所有情况
标签: android