在通音过程中,在Android源码中如果开启录音功能,则在录音过程没有录音时间的显示:
如果在通话界面添加录音时间是的显示,可以在phone的InCallScreen.java中加入如下代码:
oncreate() 中加入:
timer = new Timer();
在onRecorderClick方法中加入:
if(timer !=null){
if(task !=null){
task.cancel(); //
Log.e("test","task" + task);
}
task = new MyTimerTask(); // 新建一个任务
timer.schedule(task, 1000, 1000); // timeTask
}
添加方法:
class MyTimerTask extends TimerTask {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen++;
// txtView.setText("" + recLen);
if(recLen == 9){
recLen2 ++;
recLen = 0;
}
if(recLen2 == 5){
mMinute ++;
recLen2 = 0;
}
if(mMinute == 9){
mMinute2 ++;
mMinute = 0;
}
if(mMinute2 == 5){
mhour ++;
mMinute2 = 0;
}
if(mhour == 9){
mhour2 ++;
mhour = 0;
}
if(1<=mhour && mhour <=9 && mhour2 <=2){
mRecordingTime.setText(getResources().getString(R.string.recordtime) + mhour2 + mhour +":"+mMinute2+mMinute +":" + recLen2 +recLen );
}else{
mRecordingTime.setText(getResources().getString(R.string.recordtime) + mMinute2+mMinute +":" + recLen2 +recLen );
}
if (!mflag) {
task.cancel();
Log.e("test","task.task.cancel==="+task.toString());
mRecordingTime.setText("");
recLen = 0;
mMinute = 0;
mhour = 0;
mRecordingTime.setVisibility(View.GONE);
}
}
});
}
};
如果以上代码看不太明白,请查看:http://blog.csdn.net/wangqilin8888/article/details/7415601
PS:后来发现在InCallScreen.java中有个小Bug就是,如果在通话过程中,按“等待”与“恢复”键,会出现录音时间记录混乱的情况,所以在“等待”按键时,要进行mflag = true;致使下次显示:00:00