Как воспроизвести звук на входящих или исходящих звонках? - PullRequest
1 голос
/ 11 января 2020

Я хочу воспроизводить звук при любых входящих или исходящих вызовах и останавливаться, когда вызов отключен. Я попробовал несколько кодов, и теперь я получаю, когда мой телефон звонит, отвечает и отключается. Но звук не играет должным образом. Я поставил код для воспроизведения звука на 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;
    }
}

}

...