即时通讯试图创建和应用程序的录音和播放音频。它目前有2个按钮-1个用于录制,1个用于播放最后录制的声音。当我按录音按钮时,它的工作原理很完美。
然后,我尝试通过捕获音量增大按钮的单击来使其记录。(希望在按下按钮时使其记录)。
当我尝试从增大音量按钮进行记录时,它抛出了IllegalStateException和异常。
这是我如何处理音量上的点击动作的方法:
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
player.startRecording();
return true;
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
player.stopRecording();
return true;
}
return super.onKeyUp(keyCode, event);
}
提前谢谢,不好意思的英语
当您按住音量增大按钮时,它将连续触发onKeyDown事件。在每次这样的调用中,它都会调用player.stopRecording() ; ..这可能会导致问题,请尝试以下逻辑操作...
public class MainActivity extends ActionBarActivity {
int keyStatus=0;//public variable, 0=key released,1=key pressed
//
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
//player.startRecording();
if(keyStatus==0){
keyStatus=1;//setting this to 1 to ensure that this block is called only once during the key pressed state
Log.d("msg", "startRecording()");
}
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
Log.d("msg", "stopRecording()");
keyStatus=0;//reset keyStatus on key up event.
return true;
}
return super.onKeyUp(keyCode, event);
}
//
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句