Android 在通话期间播放歌曲

Posted

技术标签:

【中文标题】Android 在通话期间播放歌曲【英文标题】:Android playing song during call 【发布时间】:2014-06-20 05:44:01 【问题描述】:

我正在尝试构建一个在通话期间播放歌曲的应用程序。打电话给某人时工作正常。但是在继续通话时无法播放歌曲。 我已将 mp3 文件放在 assets 文件夹中。这是我的代码:

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();
    

【问题讨论】:

您所说的“通话效果很好”是什么意思? 【参考方案1】:

我可以在调用 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;
        
    

【讨论】:

以上是关于Android 在通话期间播放歌曲的主要内容,如果未能解决你的问题,请参考以下文章

Android 语音通话录音无法在系统上播放

如何在 android 实时通话期间以编程方式发送 Dtmf 音?

在 Android 自定义 ROM 中修改通话中的语音播放

将歌曲添加到 Spotify 队列 Android 不会自动播放下一首歌曲

关闭应用程序后,Android 媒体播放器如何继续播放歌曲?

在 android 上的 spotify 中查找正在播放的歌曲