android – 使用耳机按钮录制声音

android – 使用耳机按钮录制声音,第1张

概述我的耳机中心按钮有问题. 我想要做的是在按下耳机按钮的同时录制声音.释放按钮后,录音停止. 这是我的代码: @Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tex 我的耳机中心按钮有问题.
我想要做的是在按下耳机按钮的同时录制声音.释放按钮后,录音停止.
这是我的代码:

@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    text = (TextVIEw) findVIEwByID(R.ID.text);}public boolean onKeyDown(int keyCode,KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_headSETHOOK && shouldContinue == true) {        shouldContinue = false;        text.setText("KEY DOWN");                    audioRecorder = new MediaRecorder();                    audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);                    audioRecorder                            .setoutputFormat(MediaRecorder.OutputFormat.THREE_GPP);                    audioRecorder                            .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);                    audioRecorder.setoutputfile(Environment                            .getExternalStorageDirectory().getabsolutePath()                            + "/test.3gp");                    try {                        audioRecorder.prepare();                    } catch (IllegalStateException e) {                        e.printstacktrace();                    } catch (IOException e) {                        e.printstacktrace();                    }                    audioRecorder.start();                }    return false;}public boolean onKeyUp(int keyCode,KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_headSETHOOK) {        text.setText("KEY UP");        audioRecorder.stop();        audioRecorder.release();        shouldContinue=true;    }    return false;}

问题是,当我按住我的耳机按钮时,麦克风会以某种方式禁用并导致空声音文件,但是如果没有按住该按钮(例如,如果我在onCreate中移动audioRecorder代码),一切正常(录制声音).

所有我想知道是否可以在按下中置耳机按钮的情况下录制声音,或者它是硬件问题而我无能为力.

解决方法 抱歉,但我认为由于硬件原因无法完成.

AndroID耳机插孔有4个连接:Tip = leftAudio,Ring = RightAudio,Ring2 = Ground,Sleeve = Mic. (我可能有Ring2& Ground反转). headsetHook按钮通过短接Ring2和Sleeve发送信号.因此,按下它会使麦克风短路,这就解释了为什么要录制静音.吮吸.不能做PushToTalk.

一个选项是在onKeyDown上开始录制,并在再次单击时停止录制.即使这不是直截了当的,因为如果按下按钮的时间足够长,你将获得多个onKeyDowns.因此,跳过onKeyDown并使用onKeyUp.它避免了“Google Now”Mediabutton的麻烦.就像是…

boolean recording = false;// don't need to overrIDe onKeyDown()@OverrIDepublic boolean onKeyUp(int keyCode,KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_headSETHOOK) {        if (recording)            stopAndSaveRecording();        else            startRecording();        recording = ! recording;    }    return true;}

请注意,您将在结束点击期间录制静音.

总结

以上是内存溢出为你收集整理的android – 使用耳机按钮录制声音全部内容,希望文章能够帮你解决android – 使用耳机按钮录制声音所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存