Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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
Android 无法使用三星Galaxy S2录制,但可以通过麦克风使用其他手机录制_Android_Record_Galaxy_Mediarecorder - Fatal编程技术网

Android 无法使用三星Galaxy S2录制,但可以通过麦克风使用其他手机录制

Android 无法使用三星Galaxy S2录制,但可以通过麦克风使用其他手机录制,android,record,galaxy,mediarecorder,Android,Record,Galaxy,Mediarecorder,然而,我的应用程序无法从麦克风在三星Galaxy S2中录制,它已经从麦克风在其他手机中录制 Recorder.setAudioSource(MediaRecorder.AudioSource.MIC); Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 在我的代码中,我从0到4选择源类型,选择编

然而,我的应用程序无法从麦克风在三星Galaxy S2中录制,它已经从麦克风在其他手机中录制

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
在我的代码中,我从0到4选择源类型,选择编码器类型为amr nb、amr wb、aac或default,选择输出格式类型为.3gp、.mp4或.amr,还选择音频通道为1或2。 我尝试了所有向上的组合。这些组合中至少有一种适用于许多手机。但没有一款能在三星GalaxyS2上运行。它记录了文件,记录的持续时间为真,但声音只是沉默


在我对这个问题的网络研究中,我发现它可能来自麦克风类型。虽然在我的代码中我选择了默认的音频源类型,麦克风,语音下行,语音上行,语音通话,但它无法工作。然后,我将音频源类型设置为硬0、1、2、3、4,而不是MediaRecorder.AudioSource.MIC等。但它也无法工作…

我在S2上遇到问题,应用程序会锁定麦克风而不会释放它,特别是如果您正在进行快速开发周期,在卸载应用程序并重新安装新版本的同时锁定并释放麦克风。有时它会在一段时间后解锁,但确保麦克风可用的可靠方法是在尝试失败后重新启动手机

我已经能够在AudioRecord对象中使用以下设置录制音频:


谢谢你,亚伦。我的应用程序在电话通话开始时开始录制,通话结束时停止录制。记录的持续时间是真实的,但只有沉默。所以我不确定麦克风是开放的还是免费的。当我的应用程序运行时,如何测试麦克风是否可用?您可以通过调用getState函数来测试麦克风是否可用。如果等于STATE_UNINITIALIZED(未初始化),则表示您无法抓取麦克风。如果您试图录制对话音频,您可能希望研究使用MediaRecorder.AudioSource.VOICE_下行链路或MediaRecorder.AudioSource.VOICE_上行链路作为麦克风源。通过设置AudioSource Recorder.AudioSource2,我在S2中成功录制了对话语音;当音频源设置为two2时,Galaxy S2上运行的my api会记录上行和下行语音。但我不明白为什么是2?2等于MediaRecorder.AudioSource.VOICE_上行
int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
  MediaRecorder.AudioSource.MIC,               //audio source
  16000,                                       //16kHz sample rate
  AudioFormat.CHANNEL_IN_MONO,                 //channel
  AudioFormat.ENCODING_PCM_16BIT,              //encoding
  buffer_size );                               //buffer size