我想要做的是在按下耳机按钮的同时录制声音.释放按钮后,录音停止.
这是我的代码:
@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 – 使用耳机按钮录制声音所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)