我是android的新手并尝试使用MediaRecorder录制语音并成功创建音频文件。之后我用按钮单击移动到下一个活动也没有问题并且也成功播放声音但是当我移动到我来自的前一个活动时。将所有类引用和变量设置为null并保存audiofile为null因为我必须在活动start.i实现单例类策略时进行录制,但是它的类变量在返回时也会变为null。有很多描述提到代码。
oncreate()方法中的记录代码。 //
Bundle extras = this.getIntent().getExtras();
if (extras != null) {
setrecordtime = extras.getLong("RECORDTIME");
在此处查找录制时间,然后开始录制。 //
if (setrecordtime!=0&&setrecordtime < INFINITE) {
startrecordbutton.setVisibility(View.INVISIBLE);
stoprecordbutton.setVisibility(View.INVISIBLE);
startrecording();
// startrecording方法
private void startrecording() {
myrecordaudiofile = getAudiofilemedia();
if (myrecordaudiofile != null){
myaudiorecoreder = new MediaRecorder();
myaudiorecoreder.setAudioSource(MediaRecorder.AudioSource.MIC);
myaudiorecoreder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myaudiorecoreder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
myaudiorecoreder.setOutputFile(myrecordaudiofile.getAbsolutePath());
try {
myaudiorecoreder.prepare();
myaudiorecoreder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myrecordtextview.setText("RECORDING STARTED......");
setRecordstatus(true);
}
else
{
Toast.makeText(getApplicationContext(), "NO FILE TO RECORD", 0).show();
}
new Timer().schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
stoprecording();
//myrecordtextview.setText("RECORDING...STATUS");
}
});
}
}, setrecordtime);
}
进入下一个屏幕播放声音 //
case R.id.preview_button1:
Intent intent1 = new Intent(context, DisplayandPlay.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent1);
break;
从DisplayandPlay.class返回,然后保存文件,但音频文件变为null。 感谢任何有关audiorecord课程的建议或仅使用mediarecorder。