Android在通话中播放歌曲

Android在通话中播放歌曲,android,call,audio-player,Android,Call,Audio Player,我试图建立一个应用程序,在通话中播放歌曲。打电话给某人时,它工作正常。但它无法在继续通话时播放歌曲。 我已将mp3文件放在资产文件夹中。这是我的密码: if (TelephonyManager.CALL_STATE_OFFHOOK == state) { // active //Log.i(LOG_TAG, "OFFHOOK"); try { AssetFileDescriptor descriptor = getAssets().openFd("la.m

我试图建立一个应用程序,在通话中播放歌曲。打电话给某人时,它工作正常。但它无法在继续通话时播放歌曲。 我已将mp3文件放在资产文件夹中。这是我的密码:

if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
    // active
    //Log.i(LOG_TAG, "OFFHOOK");
    try {
        AssetFileDescriptor descriptor = getAssets().openFd("la.mp3");
        mp.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        descriptor.close();

        mp.prepare();
        mp.setVolume(1f, 1f);
        mp.setLooping(true);
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我可以在调用callIntent之前调用playAudio()来完成此操作-

public void playAudio() {
    try {
        if (m.isPlaying()) {
            Log.d("Playing the audio", "");
            m.stop();
            m.release();
            m = new MediaPlayer();
        }
        m.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
        AssetFileDescriptor descriptor = getAssets().openFd("test.mp3");
        m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        descriptor.close();
        m.prepare();
        m.setVolume(1f, 1f);
        m.setLooping(true);
        m.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void stopAudio() {
    if (m.isPlaying()) {
        Log.d("stop the audio", "");
        m.stop();
        m.release();
        m = new MediaPlayer();
    }

}

public class MyPhoneStateListener extends PhoneStateListener {

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            //Hangup
            case TelephonyManager.CALL_STATE_IDLE:
                stopAudio();
                audioManager.setSpeakerphoneOn(false);
                break;
            //Outgoing
            case TelephonyManager.CALL_STATE_OFFHOOK:
                break;
            //Incoming
            case TelephonyManager.CALL_STATE_RINGING:

                break;
        }
    }
}
你说的“打电话很好”是什么意思?