Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 使用耳机按钮录制声音大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的耳机中心按钮有问题.
我想要做的是在按下耳机按钮的同时录制声音.释放按钮后,录音停止.
这是我的代码

@Override
protected 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发送信号.因此,按下它会使麦克风短路,这就解释了为什么要录制静音.吮吸.不能做Push@R_776_10586@lk.

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

Boolean recording = false;

// don't need to override onKeyDown()
@Override
public Boolean onKeyUp(int keyCode,KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK) {
        if (recording)
            stopAndSaveRecording();
        else
            startRecording();
        recording = ! recording;
    }
    return true;
}

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。