如何使用Google Glass记录和保存视频

时间:2016-03-23 14:38:54

标签: android google-glass

我对android studio很新,用android开发。我已经尝试了几个月了,我需要使用Google Glass录制和保存视频。我目前的代码如下。这段代码的灵感来自https://developers.google.com/glass/develop/gdk/camera#images

当我运行此过程时,视频将开始录制,然后当录制停止时,它会给我选项“点击接受”当我点击时,没有任何反应。我明白这是因为我的方法“processVideoWhenReady”绝对没有。

我想知道是否有人可以帮助我在该方法中应该包含哪些内容来保存视频并允许用户在我的应用程序中查看该视频。

如果可能的话,任何有关Google Glass开发有用信息的文献或网站也将是一个巨大的帮助。谷歌的文档似乎对我没有多大帮助,而且非常有限。

import android.app.Activity;
import android.graphics.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.content.Intent;
import android.os.FileObserver;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.VideoView;

import com.google.android.glass.content.Intents;
import com.google.android.glass.widget.CardBuilder;

import java.io.File;
import java.io.IOException;


public class RecordActivity extends Activity {
  private static final int CAMERA_VID_REQUEST = 1337;
  static final int REQUEST_VIDEO_CAPTURE = 1;
  public VideoView mVideoView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //setContentView(R.layout.activity_record);
      takeVideo();
  }

  private void takeVideo(){
      Intent startVideo = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

      if (startVideo.resolveActivity(getPackageManager()) != null){
          startActivityForResult(startVideo, REQUEST_VIDEO_CAPTURE);
      }
      //RecordActivity.this.startActivityForResult(startVideo, CAMERA_VID_REQUEST);

  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data){
      //System.out.println("Entered onActivityResult() method");
      String a = getIntent().getStringExtra("record");
      System.out.println(a);
      if(requestCode == CAMERA_VID_REQUEST && resultCode == RESULT_OK) {
          //System.out.println("Result Okay");
          Uri videoUri = data.getData();
          mVideoView.setVideoURI(videoUri);
          String videoPath = data.getStringExtra(Intents.EXTRA_VIDEO_FILE_PATH);
          processVideoWhenReady(videoPath);
      }
      super.onActivityResult(requestCode, resultCode, data);
  }

  protected void processVideoWhenReady(final String videoPath){
      final File videoFile = new File(videoPath);
      if (videoFile.exists()){
          //Process Video

    }
    else {
        final File parentDirectory = videoFile.getParentFile();
        FileObserver observer = new FileObserver(parentDirectory.getPath(), FileObserver.CLOSE_WRITE | FileObserver.MOVED_TO) {
            private boolean isFileWritten;

            @Override
            public void onEvent(int event, String path) {
                if (!isFileWritten) {
                    //make sure file was created in directory expected
                    File affectedFile = new File(parentDirectory, path);
                    isFileWritten = affectedFile.equals(videoFile);

                    if (isFileWritten) {
                        stopWatching();

                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                processVideoWhenReady(videoPath);
                            }
                        });
                    }
                }

            }
        };

        observer.startWatching();
    }
}

}

0 个答案:

没有答案