stacktrace0=java.util.concurrent.TimeoutException:
android.media.MediaRecorder.finalize() timed out after 10
seconds
at android.media.MediaRecorder.native_finalize(Native Method)
at android.media.MediaRecorder.finalize(MediaRecorder.java:1200)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:841)
if (isDirectoryExists)
{
MediaRecorder recorder= new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
recorder.setMaxDuration(30*60*1000);
if(recorder!=null)
{
recorder.prepare();
}
try
{
if(recorder!=null)
{
recorder.start();
isRecordingStarted=true;
}
}
catch (IllegalStateException ilse)
{
try
{
if(recorder!=null)
{
recorder.prepare();
}
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if(recorder!=null)
{
recorder.start();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
详细说明:这个问题主要是在android 4.3中得出的 当我们再次准备并开始时,第一次发生异常 媒体记录器。这个逻辑在4.0中成功运行.. 我不明白为什么会发生这种异常。
答案 0 :(得分:1)
似乎如果设备决定休眠,并且GC决定运行,那么这将会发生。
见下文:
有时(很少)系统会决定在中间睡觉 GC运行。
如果睡眠时间很长 - 超过10秒,将抛出concurrent.timeout异常。