0

ビデオ録画用のカメラ アプリで組み込みの Android インテントを使用しています。私のアプリはカメラ アプリケーションを起動してビデオを録画できますが、組み込みのカメラ アプリの停止ボタンをクリックするとアプリがクラッシュし、ビデオを保存するディレクトリを確認すると、録画されたビデオがそのディレクトリに保存されます。

これが私のコードです。確認してください。

Button makeVideo = (Button) findViewById(R.id.makeVideo );
            makeVideo.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v) 
                {

                    Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);

                    Uri fileUri = getOutputMediaFileUri(); // create a file to save the video

                    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the video file name

                    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

                    startActivityForResult(intent, REQUEST_VIDEO_CAPTURED);

                }
            });




    /** Create a file Uri for saving an image or video */
     private static Uri getOutputMediaFileUri() 
     {
         return Uri.fromFile(getOutputMediaFile());
     }

     /** Create a File for saving an image or video */
     private static File getOutputMediaFile() 
     {
         // To be safe, you should check that the SDCard is mounted
         // using Environment.getExternalStorageState() before doing this.

         File mediaStorageDir = new File(Environment.getExternalStorageDirectory().getPath(), "My Videos");
         // This location works best if you want the created images to be shared
         // between applications and persist after your app has been uninstalled.

         // Create the storage directory if it does not exist
         if (!mediaStorageDir.exists()) 
         {
             if (!mediaStorageDir.mkdirs()) 
             {
                 Log.d("MyCameraApp", "failed to create directory");
                 return null;
             }
         }

         // Create a media file name
         String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
         File mediaFile;
         mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4");
         return mediaFile;
     }


@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);

            if (resultCode == RESULT_OK)
            {
                if (requestCode == REQUEST_VIDEO_CAPTURED) 
                {
                    uriVideo = data.getData();

                }
            }
    }

ここに私のlogcatがありますここに画像の説明を入力

4

2 に答える 2

0

API は、指定したパスを処理できません

mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4");

試してみてください:

mediaFile = new File(mediaStorageDir.getPath() + "VID_" + timeStamp + ".mp4");

多分それはそれを解決するか、より単純な時間形式を行います:

mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_temp.mp4");
于 2013-10-26T08:12:54.963 に答える
0
mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4");

File.sepatorシステム依存です。File には、File と String の 2 つのパラメータを取るコンストラクタがあります。

mediaFile = new File(mediaStorageDir,  "VID_" + timeStamp + ".mp4");
于 2013-10-26T08:15:12.723 に答える