视频录制功能在眼镜上崩溃,但在手机上没有

时间:2014-08-07 07:37:47

标签: android android-activity android-camera google-glass

知道发生了什么事吗?错误消息会一直提示:MediaRecorder start failed: -19android.media.MediaRecorder.start(Native Method)

我是Android编程世界的新手,我很困惑。为什么它会在眼镜上崩溃并在手机上完美运行。我目前正在为Vuzix智能眼镜开发一个简单的视频录制应用程序。

这是我到目前为止所做的:

     @Override
     public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);

           recording = false;

           mediaRecorder = new MediaRecorder();
           initMediaRecorder();

           setContentView(R.layout.video_main);

           SurfaceView myVideoView = (SurfaceView)findViewById(R.id.videoview);
           surfaceHolder = myVideoView.getHolder();
           surfaceHolder.addCallback(this);
           surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

           myButton = (Button)findViewById(R.id.mybutton);
           myButton.setOnClickListener(myButtonOnClickListener);
       }

       private Button.OnClickListener myButtonOnClickListener
       = new Button.OnClickListener(){

     @Override
     public void onClick(View arg0) {
         // TODO Auto-generated method stub
         if(recording)
         {
             mediaRecorder.stop();
             mediaRecorder.release();
             finish();
         }
         else
         {
             mediaRecorder.start();
             recording = true;
             myButton.setText("STOP");
         }
     }};

    @Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
     // TODO Auto-generated method stub

    }
    @Override
    public void surfaceCreated(SurfaceHolder arg0) {
     // TODO Auto-generated method stub
     prepareMediaRecorder();
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder arg0) {
     // TODO Auto-generated method stub

    }

    private void initMediaRecorder(){

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
        CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
        mediaRecorder.setProfile(camcorderProfile_HQ);
        mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
        //mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
        //mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
    }

    private void prepareMediaRecorder(){

        mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());

        try 
        {
            mediaRecorder.prepare();
        } 
        catch (IllegalStateException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

2 个答案:

答案 0 :(得分:1)

Vuzix高级支持专家Todd Ferguson来到这里。我的一位客户告诉我这个帖子,我想我会在这里发布我给他的答案,以帮助你。

如果您对此有任何疑问,请通过todd_ferguson@vuzix.com与我联系。

  

嗯。显然,使用TextureView的方法似乎并不存在   为我们工作。我不得不将它改回SurfaceView来获取它   工作。我还必须将视频帧率设置为24并增加   解决方案,因为函数getOptimalPreviewSize()是基于   在预览表面的大小和返回一个奇怪的分辨率   我会将TextureView怪异添加到bug列表中,因为它应该是   使用我们的API版本。帧率问题是相机驱动程序   问题和已知的错误。谢谢你带来这个   注意。我们将在即将推出的版本中解决这些问题。

此致

Todd R Ferguson

答案 1 :(得分:0)

我也在修补录像机并遇到同样的错误。我收到错误消息"错误100",发现这已经是issue一段时间了。录音机可以在我的手机上运行,​​但不适用于谷歌眼镜。所以暂时我想我们必须使用existing video recorder并从那里开始,或者完成当前项目并等待问题得到解决。 : - )