4

是否有可能使代码类似于以下对视频执行相同操作的代码?如何从相机意图获取视频并将其保存到目录?

 if (resultCode == Activity.RESULT_CANCELED) { 
      // camera mode was canceled. 
     } else if (resultCode == Activity.RESULT_OK) { 

      // Took a picture, use the downsized camera image provided by default 
      Bitmap cameraPic = (Bitmap) data.getExtras().get("data"); 
      if (cameraPic != null) { 
       try { 
        savePic(cameraPic); 
       } catch (Exception e) { 
        Log.e(DEBUG_TAG, "saveAvatar() with camera image failed.", e); 
       } 
      } 

我所试图做的是能够使用照相机意向的视频并保存视频或视频的副本到我的指定的目录。这是我的代码必须采取剪辑:

private void initTakeClip(){ 
    Button takeClipButton = (Button) findViewById(R.id.takeClip); 
    takeClipButton.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      String strVideoPrompt = "Take your Video to add to your timeline!"; 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE); 
      startActivityForResult(Intent.createChooser(cameraIntent, strVideoPrompt), TAKE_CLIP_REQUEST); 
      } 
    }); 
} 

我只是不知道如何去然后让刚采取特定的视频,然后将其复制到我的SD /应用程序的名字/ PROJECT_NAME /目录。

同样是从内存中已经加入了剪辑我的目录时获得的名称/文件位置的情况下:

private void initAddClip(){ 
    Button addClipButton = (Button) findViewById(R.id.addClip); 
    addClipButton.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      String strAvatarPrompt = "Choose a picture to use as your avatar!"; 
      Intent pickVideo = new Intent(Intent.ACTION_PICK); 
      pickVideo.setType("video/*"); 
      startActivityForResult(Intent.createChooser(pickVideo, strAvatarPrompt), ADD_CLIP_REQUEST); 

     } 
    }); 
} 

任何/所有的帮助,将不胜感激。

回答

7

首先,你需要做的是从onActivityResult这样得到URI:

private String videoPath = ""; 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    Uri vid = data.getData(); 
    videoPath = getRealPathFromURI(vid); 


} 

public String getRealPathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

然后,一旦你有实际的路径存储为将videoPath那么你可以存储,使用

try { 

    FileInputStream fis = openFilePath(videoPath); 

    //this is where you set whatever path you want to save it as: 

    File tmpFile = new File(Environment.getExternalStorageDirectory(),"VideoFile.3gp"); 

    //save the video to the File path 
    FileOutputStream fos = new FileOutputStream(tmpFile); 

    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = fis.read(buf)) > 0) { 
    fos.write(buf, 0, len); 
    }  
    fis.close(); 
    fos.close(); 
} catch (IOException io_e) { 
    // TODO: handle error 
} 
+0

感谢Seantron .. – Kalpesh 2011-12-20 13:42:51

+2

FileInputStream fis = openFilePath(videoPath);在这个声明中,我很困惑,我看不懂它......你能帮我吗? – Kalpesh 2011-12-21 04:36:34

相关问题