Audio整合后測試出錯,希望hyman老師和同學(xué)們看下
在audio整合章節(jié)的測試,log拋出一個異常,
異常1 E/InputEventReceiver(17950):?Exception?dispatching?input?event. ?E/MessageQueue-JNI(17950):?Exception?in?MessageQueue?callback:?handleReceiveCallback ?java.lang.NullPointerException ?at?com.imoc_recorder.view.AudioManager.release(AudioManager.java:98) ?at?com.imoc_recorder.view.AudioManager.cancel(AudioManager.java:103) ?at?com.imoc_recorder.view.AudioRecorderButton.onTouchEvent(AudioRecorderButton.java:154) ?異常2 /AndroidRuntime(17950):?FATAL?EXCEPTION:?main ?E/AndroidRuntime(17950):?java.lang.NullPointerException at?com.imoc_recorder.view.AudioManager.release(AudioManager.java:98) ?at?com.imoc_recorder.view.AudioManager.cancel(AudioManager.java:103) ?at?com.imoc_recorder.view.AudioRecorderButton.onTouchEvent(AudioRecorderButton.java:154) ?兩個異常都是在同一個地方出錯 ?AudioRecorderButton.java->onTouchEvent(MotionEvent?event)->if?(!isRecording||mTime<0.6f)? ?->mAudioManager.cancel();->release();->mMediaRecorder.stop(); 我上網(wǎng)查了下沒發(fā)現(xiàn)什么錯誤,希望老師和同學(xué)們指點,為什么會錯,跟老師的代碼一樣阿 其實我是長按,不知道為什么會進到這里 public?boolean?onTouchEvent(MotionEvent?event)?{ ????????int?action?=?event.getAction(); ????????int?x?=?(int)?event.getX(); ????????int?y?=?(int)?event.getY(); ???????? //????????try?{ ????????????switch?(action)?{ ????????????case?MotionEvent.ACTION_DOWN: ????????????????changeState(STATE_RECORDING); ????????????????break; ????????????case?MotionEvent.ACTION_MOVE: ????????????????if?(isRecording)?{ ????????????????????if?(wantToCancel(x,y))?{ ????????????????????????changeState(STATE_WANT_TO_CANCEL); ????????????????????}else?{ ????????????????????????changeState(STATE_RECORDING); ????????????????????} ????????????????} ????????????????break; ????????????case?MotionEvent.ACTION_UP: ????????????????if?(!mReady)?{ ????????????????????reset(); ????????????????????return?super.onTouchEvent(event); ????????????????} ????????????????if?(!isRecording||mTime<0.6f)?{//時間短,還沒有來得及repared ????????????????????mDailogManager.tooShort(); ????????????????????mAudioManager.cancel(); ????????????????????mHandler.sendEmptyMessageDelayed(MSG_DIALOG_DIMISS,?1300);//1.3秒后關(guān)閉tooshort ????????????????}else????if?(mCurState==STATE_RECORDING)?{//正常錄制結(jié)束 ????????????????????//release ????????????????????mDailogManager.dimissDialog(); ????????????????????mAudioManager.release(); ????????????????????//callbackToAct ????????????????????if?(mListener?!=?null)?{ ????????????????????????mListener.onFinish(mTime,?mAudioManager.getCurrentFilePath()); ????????????????????} ????????????????}else?if?(mCurState==STATE_WANT_TO_CANCEL)?{? ????????????????????//cancel ????????????????????mDailogManager.dimissDialog(); ????????????????????mAudioManager.cancel(); ????????????????} ????????????????reset(); ????????????????break; ???????????????? ???????????????? ???????public?void?release()?{ ????????????mMediaRecorder.stop(); ????????????mMediaRecorder.release(); ????????????mMediaRecorder?=?null; ????????} ????????public?void?cancel()?{ ????????????release(); ????????????if?(mCurrentFilePath?!=?null)?{ ????????????????File?file?=?new?File(mCurrentFilePath); ????????????????file.delete(); ????????????????mCurrentFilePath?=?null; ????????} ????}
2015-05-13
我看你是在release()方法里面拋出的空指針,錯誤行應(yīng)該就一個對象mMediaRecorder吧,你看看你是不是cancel還是某個方法里面誤把mMediaRecorder置null了。
2015-05-14
不給源碼不知道什么心態(tài)。這么長時間的視頻讓我們開著視頻對代碼找錯我真是醉了。
2015-05-14
同樣的問題。不知道怎么回事。
2015-05-13
2015-05-13
我認(rèn)真的排查過,只有release()里置空過