Android在通话中播放歌曲
我试图建立一个应用程序,在通话中播放歌曲。打电话给某人时,它工作正常。但它无法在继续通话时播放歌曲。 我已将mp3文件放在资产文件夹中。这是我的密码: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
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;
}
}
}
你说的“打电话很好”是什么意思?