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 实时通话期间以编程方式发送 Dtmf 音?
将歌曲添加到 Spotify 队列 Android 不会自动播放下一首歌曲