Java 媒体播放录制的音频无法在Android上的扬声器上播放
我正在用Android做一个电话录音应用程序。我有一个服务,检测传入和传出呼叫,一旦该服务检测到传入或传出呼叫,它就会通过媒体播放器开始录制。录音很成功,但我无法在扬声器上播放。即使通过音频管理器启用扬声器,音量也非常低。请告诉我哪里可能出错 注意:我猜我的音频没有被正确录制,因为如果我通过手机音乐播放器播放录制的文件,那么即使在那里,我也无法在扬声器上播放该文件 下面是我用来开始录制的代码:Java 媒体播放录制的音频无法在Android上的扬声器上播放,java,android,media-player,android-mediaplayer,audio-recording,Java,Android,Media Player,Android Mediaplayer,Audio Recording,我正在用Android做一个电话录音应用程序。我有一个服务,检测传入和传出呼叫,一旦该服务检测到传入或传出呼叫,它就会通过媒体播放器开始录制。录音很成功,但我无法在扬声器上播放。即使通过音频管理器启用扬声器,音量也非常低。请告诉我哪里可能出错 注意:我猜我的音频没有被正确录制,因为如果我通过手机音乐播放器播放录制的文件,那么即使在那里,我也无法在扬声器上播放该文件 下面是我用来开始录制的代码: try{ MediaRecorder mediaRecorder = new MediaRecorde
try{
MediaRecorder mediaRecorder = new MediaRecorder();
if(AUDIO_SOURCE_TYPE.equalsIgnoreCase("VOICE_COMMUNICATION"))
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
}
else if(AUDIO_SOURCE_TYPE.equalsIgnoreCase("VOICE_UPLINK"))
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_UPLINK);
}
else if(AUDIO_SOURCE_TYPE.equalsIgnoreCase("VOICE_DOWNLINK"))
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK);
}
else if(AUDIO_SOURCE_TYPE.equalsIgnoreCase("MIC"))
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
}
else if(AUDIO_SOURCE_TYPE.equalsIgnoreCase("DEFAULT"))
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
}
else
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
}
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setOutputFile(getTempFilename());
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mediaRecorder.start();
以下是媒体播放代码:
final MediaPlayer mp=new MediaPlayer();
String uri= getIntent().getStringExtra("fileURI"); //fetches the string defining the path of file to be played
Uri fileURI = Uri.parse(uri);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setSpeakerphoneOn(true);
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, AudioManager.FLAG_PLAY_SOUND);
try{
try {
mp.setDataSource(getApplicationContext(), fileURI);
} catch (IOException e) {
e.printStackTrace();
}
}
mp.prepare();
}catch(Exception e){e.printStackTrace();}
mp.start();
尝试其他音频代码,即
MediaRecorder.AudioEncoder.AAC
。嗨,Neo,我已经尝试了所有组合,但它没有给我想要的结果。当我靠近手机时,录制的音频正在播放,但无法在扬声器上播放。您是否建议更改播放设置?您使用的源本身可能不够好。在PC上下载和播放时的音质如何?这样你至少知道这不是一个播放问题。你在多台设备上也试过吗?这可能是设备问题。我试着在PC上运行它。它抛出一个错误,我用来压缩文件的编解码器可能不正确。它最初是在HTC one上测试的。现在我也尝试了Nexus5,但是Nexus5的质量更差。还有其他提示吗?我还想指出,这个媒体播放器是在一个服务中运行的。我希望这不会造成问题。因为我有一个从这里引用的示例程序,它运行得非常好,符合我的要求