Android 使用MediaRecorder和SurfaceView分别捕获和显示视频
我已经搜索了很多关于这个的话题,但无法解决我的问题 我有一个表面观察: 加载时为洋红色 按下绿色的“录制”按钮时,显示摄像机视图,显示实时摄像机进给,按钮变为红色的“停止” 按下红色“停止”按钮时,实时摄像机进纸停止,按钮变为绿色“记录” 下面是一些代码: [变量]Android 使用MediaRecorder和SurfaceView分别捕获和显示视频,android,camera,surfaceview,android-mediarecorder,Android,Camera,Surfaceview,Android Mediarecorder,我已经搜索了很多关于这个的话题,但无法解决我的问题 我有一个表面观察: 加载时为洋红色 按下绿色的“录制”按钮时,显示摄像机视图,显示实时摄像机进给,按钮变为红色的“停止” 按下红色“停止”按钮时,实时摄像机进纸停止,按钮变为绿色“记录” 下面是一些代码: [变量] /* For the surface view */ SurfaceHolder surfaceHolder; SurfaceView surfaceView; /* For saving the video to the dev
/* For the surface view */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView;
/* For saving the video to the device */
MediaRecorder mediaRecorder = null;
// directory name to store captured images and videos
private static final String IMAGE_DIRECTORY_NAME = "LapMaster";
private Uri fileUri; // file url to store image/video
// Activity request code
public static final int MEDIA_TYPE_VIDEO = 2;
/* For both */
Button cameraPreview;
Camera camera;
boolean previewing = false;
/*
* Called when the page is loaded
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
cameraPreview = (Button) findViewById(R.id.cameraPreview);
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record Video");
//-------------------------------//
mediaRecorder = new MediaRecorder();
//-----------------------------------------------------------//
mediaRecorder.setMaxDuration(180000); // 180 seconds
mediaRecorder.setMaxFileSize(5000000); // approx. 5 megabytes
surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
cameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(previewing == false)
{
camera = Camera.open();
if (camera != null)
{
try
{
camera.setPreviewDisplay(surfaceHolder);
Log.i("1", "SetPreviewDisplay() OK");
camera.startPreview();
//------------//
camera.unlock();
//----------------------------//
mediaRecorder.setCamera(camera);
//-----------------------------------------------------------//
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i("2", "Set sources OK");
//--------------------------------------//
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
//-----------------------------------//
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true)
{
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
String dest = fileUri.toString();
mediaRecorder.setOutputFile(dest);
}
Log.i("3", "setOutPutFile() OK");
//-------------------------//
try
{
//--------------------//
mediaRecorder.prepare();
Log.i("4", "prepare() OK");
//------------------//
mediaRecorder.start();
Log.i("5", "start() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
previewing = true;
cameraPreview.setBackgroundColor(Color.RED);
cameraPreview.setText("Stop");
Log.i("6", "setBackground(RED) and setText(Stop) OK");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else if(camera != null && (previewing == true))
{
//-------------------------//
try
{
//-----------------//
mediaRecorder.stop();
Log.i("7", "mediaRecorder stop() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
//---------------------//
mediaRecorder.release();
Log.i("8", "mediaRecorder release() OK");
camera.stopPreview();
camera.release();
camera = null;
Log.i("9", "camera stopPreview(), release() and set to null, OK");
previewing = false;
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record");
Log.i("10", "setBackground(RED) and setText(Record), OK");
}
}
});
}
/**
* Creating file uri to store image/video
*/
public Uri getOutputMediaFileUri(int type)
{
return Uri.fromFile(getOutputMediaFile(type));
}
/**
* returning image / video
*/
private static File getOutputMediaFile(int type)
{
// External sd card location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists())
{
if (!mediaStorageDir.mkdirs())
{
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
return mediaFile;
}
[在ONCREATE()中设置MEDIARECORDER和SURFACE]
/* For the surface view */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView;
/* For saving the video to the device */
MediaRecorder mediaRecorder = null;
// directory name to store captured images and videos
private static final String IMAGE_DIRECTORY_NAME = "LapMaster";
private Uri fileUri; // file url to store image/video
// Activity request code
public static final int MEDIA_TYPE_VIDEO = 2;
/* For both */
Button cameraPreview;
Camera camera;
boolean previewing = false;
/*
* Called when the page is loaded
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
cameraPreview = (Button) findViewById(R.id.cameraPreview);
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record Video");
//-------------------------------//
mediaRecorder = new MediaRecorder();
//-----------------------------------------------------------//
mediaRecorder.setMaxDuration(180000); // 180 seconds
mediaRecorder.setMaxFileSize(5000000); // approx. 5 megabytes
surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
cameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(previewing == false)
{
camera = Camera.open();
if (camera != null)
{
try
{
camera.setPreviewDisplay(surfaceHolder);
Log.i("1", "SetPreviewDisplay() OK");
camera.startPreview();
//------------//
camera.unlock();
//----------------------------//
mediaRecorder.setCamera(camera);
//-----------------------------------------------------------//
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i("2", "Set sources OK");
//--------------------------------------//
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
//-----------------------------------//
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true)
{
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
String dest = fileUri.toString();
mediaRecorder.setOutputFile(dest);
}
Log.i("3", "setOutPutFile() OK");
//-------------------------//
try
{
//--------------------//
mediaRecorder.prepare();
Log.i("4", "prepare() OK");
//------------------//
mediaRecorder.start();
Log.i("5", "start() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
previewing = true;
cameraPreview.setBackgroundColor(Color.RED);
cameraPreview.setText("Stop");
Log.i("6", "setBackground(RED) and setText(Stop) OK");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else if(camera != null && (previewing == true))
{
//-------------------------//
try
{
//-----------------//
mediaRecorder.stop();
Log.i("7", "mediaRecorder stop() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
//---------------------//
mediaRecorder.release();
Log.i("8", "mediaRecorder release() OK");
camera.stopPreview();
camera.release();
camera = null;
Log.i("9", "camera stopPreview(), release() and set to null, OK");
previewing = false;
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record");
Log.i("10", "setBackground(RED) and setText(Record), OK");
}
}
});
}
/**
* Creating file uri to store image/video
*/
public Uri getOutputMediaFileUri(int type)
{
return Uri.fromFile(getOutputMediaFile(type));
}
/**
* returning image / video
*/
private static File getOutputMediaFile(int type)
{
// External sd card location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists())
{
if (!mediaStorageDir.mkdirs())
{
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
return mediaFile;
}
[在ONCREATE()中使用MEDIARECORDER/SURFACE的按钮代码]
/* For the surface view */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView;
/* For saving the video to the device */
MediaRecorder mediaRecorder = null;
// directory name to store captured images and videos
private static final String IMAGE_DIRECTORY_NAME = "LapMaster";
private Uri fileUri; // file url to store image/video
// Activity request code
public static final int MEDIA_TYPE_VIDEO = 2;
/* For both */
Button cameraPreview;
Camera camera;
boolean previewing = false;
/*
* Called when the page is loaded
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
cameraPreview = (Button) findViewById(R.id.cameraPreview);
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record Video");
//-------------------------------//
mediaRecorder = new MediaRecorder();
//-----------------------------------------------------------//
mediaRecorder.setMaxDuration(180000); // 180 seconds
mediaRecorder.setMaxFileSize(5000000); // approx. 5 megabytes
surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
cameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(previewing == false)
{
camera = Camera.open();
if (camera != null)
{
try
{
camera.setPreviewDisplay(surfaceHolder);
Log.i("1", "SetPreviewDisplay() OK");
camera.startPreview();
//------------//
camera.unlock();
//----------------------------//
mediaRecorder.setCamera(camera);
//-----------------------------------------------------------//
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i("2", "Set sources OK");
//--------------------------------------//
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
//-----------------------------------//
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true)
{
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
String dest = fileUri.toString();
mediaRecorder.setOutputFile(dest);
}
Log.i("3", "setOutPutFile() OK");
//-------------------------//
try
{
//--------------------//
mediaRecorder.prepare();
Log.i("4", "prepare() OK");
//------------------//
mediaRecorder.start();
Log.i("5", "start() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
previewing = true;
cameraPreview.setBackgroundColor(Color.RED);
cameraPreview.setText("Stop");
Log.i("6", "setBackground(RED) and setText(Stop) OK");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else if(camera != null && (previewing == true))
{
//-------------------------//
try
{
//-----------------//
mediaRecorder.stop();
Log.i("7", "mediaRecorder stop() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
//---------------------//
mediaRecorder.release();
Log.i("8", "mediaRecorder release() OK");
camera.stopPreview();
camera.release();
camera = null;
Log.i("9", "camera stopPreview(), release() and set to null, OK");
previewing = false;
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record");
Log.i("10", "setBackground(RED) and setText(Record), OK");
}
}
});
}
/**
* Creating file uri to store image/video
*/
public Uri getOutputMediaFileUri(int type)
{
return Uri.fromFile(getOutputMediaFile(type));
}
/**
* returning image / video
*/
private static File getOutputMediaFile(int type)
{
// External sd card location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists())
{
if (!mediaStorageDir.mkdirs())
{
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
return mediaFile;
}
[单独的“文件”生成代码]
/* For the surface view */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView;
/* For saving the video to the device */
MediaRecorder mediaRecorder = null;
// directory name to store captured images and videos
private static final String IMAGE_DIRECTORY_NAME = "LapMaster";
private Uri fileUri; // file url to store image/video
// Activity request code
public static final int MEDIA_TYPE_VIDEO = 2;
/* For both */
Button cameraPreview;
Camera camera;
boolean previewing = false;
/*
* Called when the page is loaded
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
cameraPreview = (Button) findViewById(R.id.cameraPreview);
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record Video");
//-------------------------------//
mediaRecorder = new MediaRecorder();
//-----------------------------------------------------------//
mediaRecorder.setMaxDuration(180000); // 180 seconds
mediaRecorder.setMaxFileSize(5000000); // approx. 5 megabytes
surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
cameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(previewing == false)
{
camera = Camera.open();
if (camera != null)
{
try
{
camera.setPreviewDisplay(surfaceHolder);
Log.i("1", "SetPreviewDisplay() OK");
camera.startPreview();
//------------//
camera.unlock();
//----------------------------//
mediaRecorder.setCamera(camera);
//-----------------------------------------------------------//
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i("2", "Set sources OK");
//--------------------------------------//
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
//-----------------------------------//
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true)
{
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
String dest = fileUri.toString();
mediaRecorder.setOutputFile(dest);
}
Log.i("3", "setOutPutFile() OK");
//-------------------------//
try
{
//--------------------//
mediaRecorder.prepare();
Log.i("4", "prepare() OK");
//------------------//
mediaRecorder.start();
Log.i("5", "start() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
previewing = true;
cameraPreview.setBackgroundColor(Color.RED);
cameraPreview.setText("Stop");
Log.i("6", "setBackground(RED) and setText(Stop) OK");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else if(camera != null && (previewing == true))
{
//-------------------------//
try
{
//-----------------//
mediaRecorder.stop();
Log.i("7", "mediaRecorder stop() OK");
}
catch (Exception e)
{
e.printStackTrace();
}
//---------------------//
mediaRecorder.release();
Log.i("8", "mediaRecorder release() OK");
camera.stopPreview();
camera.release();
camera = null;
Log.i("9", "camera stopPreview(), release() and set to null, OK");
previewing = false;
cameraPreview.setBackgroundColor(Color.GREEN);
cameraPreview.setText("Record");
Log.i("10", "setBackground(RED) and setText(Record), OK");
}
}
});
}
/**
* Creating file uri to store image/video
*/
public Uri getOutputMediaFileUri(int type)
{
return Uri.fromFile(getOutputMediaFile(type));
}
/**
* returning image / video
*/
private static File getOutputMediaFile(int type)
{
// External sd card location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists())
{
if (!mediaStorageDir.mkdirs())
{
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
return mediaFile;
}
当我运行应用程序时,它可以正常加载,我可以按“录制”让SurfaceView(我假设MediaRecorder)工作,我也可以按“停止”来停止它。然而,如果我按下“记录”,似乎什么也没有发生,如果我再次按下它,我会得到通常的“X已停止工作”消息
我尝试过以下方法:
但我似乎无法让它正常工作
**我认为有几个问题:
- 是否将文件保存到SD李>
- 未正确锁定/关闭/调零摄像头
08-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo+,hn 19(0x636c6956e7473),sn(),族0,标志4
08-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo-,err=8
08-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo+,hn 19(0x636c69656e7473),sn(),族0,标志1024
2008-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo-,1
08-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo_代理+
08-23 12:08:29.835:D/libc(28017):[NET]getaddrinfo_proxy-,成功
08-23 12:08:29.855:D/libc(28017):[NET]getaddrinfo+,hn 15(0x6373692e677374),sn(),族0,标志4
08-23 12:08:29.855:D/libc(28017):[NET]getaddrinfo-,err=8
08-23 12:08:29.855:D/libc(28017):[NET]getaddrinfo+,hn 15(0x6373692e677374),sn(),族0,标志1024
2008-23 12:08:29.855:D/libc(28017):[NET]getaddrinfo-,1
08-23 12:08:29.855:D/libc(28017):[NET]getaddrinfo_代理+
2008-23 12:08:30.105:D/libc(28017):[NET]getaddrinfo_proxy-,成功
08-23 12:08:32.157:W/TextToSpeech(28017):讲话失败:未绑定到TTS引擎
08-23 12:08:34.439:I/1(28017):设置预览显示()正常
08-23 12:08:34.840:I/2(28017):设置震源正常
08-23 12:08:34.880:I/3(28017):setOutPutFile()正常
08-23 12:08:34.880:W/System.err(28017):java.io.FileNotFoundException:/file:/storage/emulated/0/Pictures/LapMaster/VID_20140823\u 120834.mp4:open失败:enoint(没有这样的文件或目录)
08-23 12:08:34.880:W/System.err(28017):位于libcore.io.IoBridge.open(IoBridge.java:409)
08-23 12:08:34.880:W/System.err(28017):位于java.io.FileOutputStream。(FileOutputStream.java:88)
08-23 12:08:34.880:W/System.err(28017):位于java.io.FileOutputStream。(FileOutputStream.java:128)
08-23 12:08:34.880:W/System.err(28017):位于java.io.FileOutputStream。(FileOutputStream.java:117)
08-23 12:08:34.880:W/System.err(28017):在android.media.MediaRecorder.prepare(MediaRecorder.java:852)上
08-23 12:08:34.880:W/System.err(28017):在net.learn2develop.lapmaster.TopGearLocationTracker$2.onClick(TopGearLocationTracker.java:263)
08-23 12:08:34.880:W/System.err(28017):在android.view.view.performClick(view.java:4480)上
08-23 12:08:34.880:W/System.err(28017):在android.view.view$PerformClick.run(view.java:18686)
08-23 12:08:34.880:W/System.err(28017):位于android.os.Handler.handleCallback(Handler.java:733)
08-23 12:08:34.880:W/System.err(28017):位于android.os.Handler.dispatchMessage(Handler.java:95)
08-23 12:08:34.880:W/System.err(28017):在android.os.Looper.loop(Looper.java:157)上
08-23 12:08:34.880:W/System.err(28017):位于android.app.ActivityThread.main(ActivityThread.java:5872)
08-23 12:08:34.880:W/System.err(28017):位于java.lang.reflect.Method.invokenactive(本机方法)
08-23 12:08:34.880:W/System.err(28017):位于java.lang.reflect.Method.invoke(Method.java:515)
08-23 12:08:34.880:W/System.err(28017):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
08-23 12:08:34.880:W/System.err(28017):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
08-23 12:08:34.880:W/System.err(28017):在dalvik.System.NativeStart.main(本机方法)
08-23 12:08:34.880:W/System.err(28017):原因:libcore.io.ErrnoException:open失败:enoint(没有这样的文件或目录)
08-23 12:08:34.880:W/System.err(28017):位于libcore.io.Posix.open(本机方法)
08-23 12:08:34.880:W/System.err(28017):位于libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
08-23 12:08:34.880:W/System.err(28017):位于libcore.io.IoBridge.open(IoBridge.java:393)
08-23 12:08:34.880:W/系统错误(28017):。。。还有16个
08-23 12:08:34.880:I/6(28017):后退(红色)和设置文本(停止)正常
08-23 12:08:34.880:I/编舞(28017):跳过71帧!应用程序可能在其主线程上做了太多工作。
08-23 12:08:41.667:E/MediaRecorder(28017):在无效状态下调用停止:4
08-23 12:08:41.667:W/System.err(28017):java.lang.IllegalStateException
08-23 12:08:41.667:W/System.err(28017):在android.media.MediaRecorder.stop(本机方法)上
08-23 12:08:41.667:W/System.err(28017):在net.learn2develop.lapmaster.TopGearLocationTracker$2.onClick(TopGearLocationTracker.java:291)
08-23 12:08:41.667:W/System.err(28017):在android.view.view.performClick(view.java:4480)上
08-23 12:08:41.667:W/System.err(28017):在android.view.view$PerformClick.run(view.java:18686)
08-23 12:08:41.667:W/System.err(28017):位于android.os.Handler.handleCallback(Handler.java:733)
08-23 12:08:41.667:W/System.err(28017):在android.os.Handler.dispatchMessage(Handler.ja)上