Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 媒体播放录制的音频无法在Android上的扬声器上播放_Java_Android_Media Player_Android Mediaplayer_Audio Recording - Fatal编程技术网

Java 媒体播放录制的音频无法在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

我正在用Android做一个电话录音应用程序。我有一个服务,检测传入和传出呼叫,一旦该服务检测到传入或传出呼叫,它就会通过媒体播放器开始录制。录音很成功,但我无法在扬声器上播放。即使通过音频管理器启用扬声器,音量也非常低。请告诉我哪里可能出错

注意:我猜我的音频没有被正确录制,因为如果我通过手机音乐播放器播放录制的文件,那么即使在那里,我也无法在扬声器上播放该文件

下面是我用来开始录制的代码:

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的质量更差。还有其他提示吗?我还想指出,这个媒体播放器是在一个服务中运行的。我希望这不会造成问题。因为我有一个从这里引用的示例程序,它运行得非常好,符合我的要求