Я использую этот код для прослушивания состояния телефона. при поступлении вызова он приостанавливает воспроизведение медиаплеера, но как только я забираю вызов, он снова начинает воспроизведение с прослушивания динамика (а не от звонка). и я также попытался с удалением mediaPlayer.start()
от case TelephonyManager.CALL_STATE_IDLE:
, в этом случае он отлично работает, но он не запускается (возобновляется) снова. Есть ли какой-либо флаг для этого?Media Player проигрывает после получения вызова?
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 для пути повышения производительности. –
Я бы поместил что-то в случай по умолчанию, чтобы посмотреть, обрабатываете ли вы все случаи –
, этот вопрос похож на этот http://stackoverflow.com/questions/5610464/stopping-starting-music-on-incoming-calls – artsylar