2017-04-07 94 views
1

我创建支持牛轧糖的视频捕获应用程序,但我捕获视频,该视频捕获并保存到默认相机文件夹,但结果代码为-1。我正在使用以下代码。视频采集牛轧糖?

public void startRecordingVideo() { 
    if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)) { 
     Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
     File mediaFile = new File(
       Environment.getExternalStorageDirectory().getAbsolutePath() + "/myvideo.mp4"); 
     videoUri = Uri.fromFile(mediaFile); 
     //intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri); 
     startActivityForResult(intent, VIDEO_CAPTURE); 
    } else { 
     Toast.makeText(this, "No camera on device", Toast.LENGTH_LONG).show(); 
    } 
} 

我在这里

if (requestCode == VIDEO_CAPTURE) { 
      //if (resultCode == RESULT_OK) { 
       int width = 0, DisplayWidth = 0; 
       //int height = 0, DisplayHeight = 0; 
       if (new File(Constants.APP_PATH + "/myvideo1.mp4").exists()) { 
        MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
        retriever.setDataSource(Constants.APP_PATH + "/myvideo1.mp4"); 
        Bitmap bmp = retriever.getFrameAtTime(); 
        width = bmp.getHeight(); 

        VideoPath = Constants.APP_PATH + "/myvideo1.mp4"; 
        DisplayMetrics displaymetrics = new DisplayMetrics(); 
        MainActivity.this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
        DisplayWidth = displaymetrics.widthPixels; 
        String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
        int VideoDuration = Integer.parseInt(time); 
        if (width >= DisplayWidth * 1.5 && VideoDuration <= Constants.VIDEO_UPPER_LIMIT) { 
         new ResizeVideoTask(VideoPath).execute(); 
        } else if (VideoDuration > Constants.VIDEO_UPPER_LIMIT) { 
         showTimeDialog(); 
        } else { 
         File afile = new File(VideoPath); 
         String path = Constants.APP_PATH + "/myvideo.mp4"; 
         File destfile = new File(path); 
         if (destfile.exists()) { 
          destfile.delete(); 
         } 
         copyFile(new FileInputStream(afile),new FileOutputStream(destfile)); 
         Intent switchIntent = new Intent(MainActivity.this,VideoActivity.class); 
         switchIntent.putExtra("URI", Uri.fromFile(destfile).toString()); 
         switchIntent.putExtra("FILE_PATH", path); 
         startActivity(switchIntent); 
        } 
        retriever.release(); 
       } 
      } else if (resultCode == RESULT_CANCELED) { 

      } else { 

      //} 
     } 
+0

你的结果是['RESULT_OK'](https://developer.android.com/reference/android/app/Activity.html#RESULT_OK)。为什么这是个问题? – CommonsWare

+0

我将删除它,并尝试但videouri和路径不会返回给我并生成未找到错误。 – Kuldeep

+0

然后,也许你应该编辑你的问题,并显示**是有问题的代码:你的'onActivityResult()'方法以及你如何尝试使用你所假设的'Uri'(而不是“路径”)去取回。 – CommonsWare

回答

0

首先把我的onActivityResult代码,你没有在ACTION_VIDEO_CAPTUREIntent通过EXTRA_OUTPUT。因此,相机应用程序将选择存储视频的位置,并且将通过Intent传送到onActivityResult()返回Uri。你没有使用它。

第二,如果你取消注释您intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);线(固定从前款的问题),您使用这里的videoUri定义不同于任何你正在使用的onActivityResult()

+0

感谢朋友,但已经尝试过,但结果代码是-1,intent data = null返回给我牛轧糖。 – Kuldeep

+0

@Kuldeep:我不知道“它”是什么。如果您没有'EXTRA_OUTPUT',并且相机应用程序未向您返回'Uri',那么您正在使用越野车相机应用程序。如果你现在包含'EXTRA_OUTPUT',你不会在'onActivityResult()'中得到'Uri'给你,但是你知道视频应该被记录在哪里。 – CommonsWare

+0

感谢朋友,但我改变了我的流程,并创建了手动相机和捕捉视频,其工作更好,更好。为什么:我没有得到任何回报的结果,所以改变这一点。谢谢你给我你的重要时间。 – Kuldeep

相关问题