问题是我在使用recorder的时候 程序没有响应,recorder.start() 的功能是 录音+ 画声纹。
原本当使用多线程的调用,用runnable,暂停按钮是没有反应的(延迟好几秒),不能及时结束线程。估计是在UI更新上的问题(可是不是已经用新线程了嘛?)
然后现在用的handler的switch 来写,也是延迟的问题
错误依然是 主线程要处理太多东西。
下面的代码,遇到的问题就是 当我点击完start之后,再点击stop按钮,是没有反应的。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_play:
Message msg = Message.obtain();
msg.what = 1;
mhandler.sendMessage(msg);
break;
case R.id.btn_stop:
msg = Message.obtain();
msg.what = 0;
mhandler.sendMessage(msg);
break;
}
}
Handler mhandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
ss = path + "/" + ss + ".wav";
mRecorder.setOutputFile(ss);
mRecorder.prepare();
mRecorder.start();
break;
case 0:
mRecorder.stop();
mRecorder.release();
break;
}
}
};
}
Since you want to execute
recorder.start()
outside the main thread, the key is who created the mhandler in your code? If it is created in the UI thread, then if you passmhandler.sendMessage
orpost(Runnable)
these methods, the corresponding code will still be executed in the main thread.