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
  • 未正确锁定/关闭/调零摄像头
**

有人能帮忙吗

谢谢

编辑:

我的LogCat搜索“OK”返回:

那么它似乎错过了4、5和7

以下是LogCat(突出显示“主要”错误):

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)上