Я хочу воспроизводить звук при любых входящих или исходящих вызовах и останавливаться, когда вызов отключен. Я попробовал несколько кодов, и теперь я получаю, когда мой телефон звонит, отвечает и отключается. Но звук не играет должным образом. Я поставил код для воспроизведения звука на CALL_STATE_RINGING . Но он воспроизводится, когда мой вызов отключен.
Вот код, который я пробовал ...
Это мой класс приемника Broadcast.
public class PhoneStateBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
}
}
И это класс, где я получаю ГОСУДАРСТВО ..
public class CustomPhoneStateListener extends PhoneStateListener {
//private static final String TAG = "PhoneStateChanged";
private Context context; //Context to make Toast if required
private static MediaPlayer mPlayer;
private boolean isRinging = false;
CustomPhoneStateListener(Context context) {
super();
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
//when Idle i.e no call
if (isRinging) {
mPlayer.stop();
Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show();
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
//when Off hook i.e in call
//Make intent and start your service here
Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_RINGING:
//when Ringing
if (!isRinging) {
mPlayer = MediaPlayer.create(context, R.raw.ring_ring);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.start();
Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show();
/* mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);*/
isRinging = true;
}
break;
default:
break;
}
}
}