ошибка вызова MediaStore.ACTION_VIDEO_CAPTURE - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь создать приложение, которое позволяет запись видео.я знаю, что используя MediaStore.ACTION_IMAGE_CAPTURE, он на самом деле вызывает систему камер из моего приложения и после съемки изображения возвращается в мое приложение с результатом.

при использовании кода я обнаружил MediaStore.ACTION_VIDEO_CAPTURE.который я предполагаю, что это будет камера, но в режиме видео, а не в режиме захвата изображения.

код, который я использовал для вызова камеры в режиме видео:

Intent takeVideoFromCameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
Uri mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/Record/vid_"+ String.valueOf(System.currentTimeMillis()) + ".mp4"));
takeVideoFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(takeVideoFromCameraIntent, RESULT_OK);

при запуске приложенияс реальным устройством он вызывает камеру в режиме видео, а также позволяет записывать видео.однако, когда я нажимаю кнопку записи, чтобы закончить запись, он возвращается в мое приложение с сообщением о принудительном закрытии, говорящим, что камера не отвечает.

в 1-й, я думал, что видео не было захвачено, нокогда я искал файл, он действительно существует.

тогда я подумал, что это мой метод onActivityResult, который вызывает проблему, но после того, как я прокомментировал его с помощью / * ... * /, у него все еще осталась та же проблема,но в LogCat не отображается никаких подробностей.

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Я понимаю, что получил ошибку, потому что я добавляю к ней дополнительную информацию.мне просто нужно было

Intent takeVideoFromCameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(takeVideoFromCameraIntent, 1111);

, затем добавить onActivityResult с кодом запроса == 1111 (зависит от того, что вы ввели) и получить последний измененный файл, который состоит из расширения ".mp4"из папки по умолчанию камеры" DCIM / Camera "

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

    if(requestCode == 1111)//cam
    {
         File folder = new File(Environment.getExternalStorageDirectory(), "/DCIM/Camera");
         long folderModi = folder.lastModified();

    FilenameFilter filter = new FilenameFilter() 
    {
        public boolean accept(File dir, String name) 
        {
            return (name.endsWith(mp4));
        }
    };

    File[] folderList = folder.listFiles(filter);

    String recentName = "";

    for(int i=0; i<folderList.length;i++)
    {
        long fileModi = folderList[i].lastModified();

        if(folderModi == fileModi)
        {
            recentName = folderList[i].getName();
        }
    }
}

таким образом, я могу получить имя файла, а также выполнить с ним изменения (например, переименование).

надеюсь, что это поможет другим людям.=)

0 голосов
/ 28 января 2012

Я думаю, ваша проблема решена с помощью этого кода.


//create new Intent

 Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);  // create a file to save the video
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);  // set the image file name

    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // set the video image quality to high

    // start the Video Capture Intent
    startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);

Use this code in an activity and also set some property in xml file.
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

Если у вас есть другая проблема, пожалуйста, ответьте мне.

0 голосов
/ 25 января 2012

пожалуйста, добавьте свой logcat. Для захвата видео я использую класс MediaRecorder, я предлагаю вам использовать это. Если вы заинтересованы, я могу дать вам правильный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...