android–MediaRecorder– 记录调用应用程序

android–MediaRecorder– 记录调用应用程序,第1张

概述我正在尝试开发录制通话的应用程序.当我录制输出声音听起来非常有线–电子声音而不是别人的声音.这是我的代码:publicclassMainActivityextendsActivityimplementsOnClickListener{privateBooleanRecording;privateButtonbtn_REC;privateMediaRecordermrec;

我正在尝试开发录制通话的应用程序.

当我录制输出声音听起来非常有线 – 电子声音而不是
别人的声音.

这是我的代码:

public class MainActivity extends Activity implements OnClickListener {private Boolean Recording;private button btn_REC;private MediaRecorder mrec;private file audiofile = null;private static final String TAG = "SoundRecordingDemo";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    Recording = false;    mrec = new MediaRecorder();    btn_REC = (button) findVIEwByID(R.ID.btn_record);    btn_REC.setonClickListener(this);}@OverrIDepublic voID onClick(VIEw v){    if (!Recording)    {        try        {            startRecording();            Recording = true;        }        catch (IOException e1)        {            e1.printstacktrace();        }        btn_REC.setText("RECORDING");    }    else    {               stopRecording();        btn_REC.setText("RECORD");    }}protected voID startRecording() throws IOException {    mrec.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNlink);    mrec.setoutputFormat(MediaRecorder.OutputFormat.THREE_GPP);    mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);    if (audiofile == null) {        file sampleDir = Environment.getExternalStorageDirectory();        try {            audiofile = file.createTempfile("ibm", ".3gp", sampleDir);        } catch (IOException e) {            Log.e(TAG, "sdcard access error");            return;        }    }    mrec.setoutputfile(audiofile.getabsolutePath());    mrec.prepare();    mrec.start();}protected voID stopRecording() {    mrec.stop();    mrec.release();    processaudiofile();}protected voID processaudiofile() {    ContentValues values = new ContentValues(3);    long current = System.currentTimeMillis();    values.put(MediaStore.Audio.Media.Title, "audio" + audiofile.getname());    values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));    values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");    values.put(MediaStore.Audio.Media.DATA, audiofile.getabsolutePath());    ContentResolver contentResolver = getContentResolver();    Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;    Uri newUri = contentResolver.insert(base, values);    sendbroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_file, newUri));}

}

当我试图将AudioSource更改为上行链路或语音呼叫时,它仍然是相同的.
当我把它定义为MIC时,所有工作都很好,但当我打电话时,这个奇怪的声音开始……

有什么想法吗?

谢谢!

解决方法:

使用mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

但是,由于Call Recording不合法,所以许多设备不支持(MediaRecorder.AudioSource.VOICE_CALL / MediaRecorder.AudioSource.VOICE_DOWNlink),可以在某些设备上运行.

我在LG测试过它并且工作正常,但没有使用Nexus设备.

所以相反,它们使用所有设备都允许的MediaRecorder.AudioSource.MIC.

总结

以上是内存溢出为你收集整理的android – MediaRecorder – 记录调用应用程序全部内容,希望文章能够帮你解决android – MediaRecorder – 记录调用应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存