Можно ли установить максимальное время, разрешенное для записи на Android, используя intent?

#android #video #android-intent

#Android #Видео #android-намерение

Вопрос:

Я использую android.provider.MediaStore.ACTION_VIDEO_CAPTURE . Мне было интересно, есть ли способ изменить максимальное время, разрешенное для записи. Я ПОПЫТАЛСЯ ДОБАВИТЬ Intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,60000);//max of 60 seconds , но он продолжает записывать, передавая это. Заранее спасибо.

Комментарии:

1. Пожалуйста, не этот MediaStore. EXTRA_DURATION_LIMIT указывается в секундах, а не в миллисекундах. Однако это работает только для устройств после версии 2.0.

Ответ №1:

На самом деле, MediaStore.EXTRA_DURATION_LIMIT укажите время в секундах, А НЕ в миллисекундах! Итак, вам просто нужно изменить свое значение с 60000 на 60 😉 Документация по Android

Ответ №2:

 Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra("android.intent.extra.durationLimit", 30000);
intent.putExtra("EXTRA_VIDEO_QUALITY", 0);
startActivityForResult(intent, ActivityRequests.REQUEST_TAKE_VIDEO);
 

Этот код хорошо работает в API 2.2, но ограничение продолжительности не работает в API 2.1

android.intent.extra.durationLimit к сожалению, оно было введено в API Level 8, so и недоступно в Eclair и ранее. Некоторые производители устройств могут иметь собственный способ установки максимальной продолжительности на старых устройствах, что объясняет, почему вы видели, как это работает в некоторых приложениях до Froyo.

Комментарии:

1. вы можете увидеть уровень API, на котором вводится каждая переменная, посмотрев в правую часть серой панели на сайте ресурсов Android. Например, смотрите эту переменную (и ее уровень API) здесь: developer.android.com/reference/android/provider /…

2. Проверьте также эту ссылку: netmite.com/android/mydroid/donut/packages/apps/Camera/src/com/… .. Это будет полезно для вас

3. 3000 здесь означает 50 минут, поскольку ограничение продолжительности указано в секундах, а не в миллисекундах

4. Вероятно, лучше использовать постоянное хранилище MediaStore. EXTRA_DURATION_LIMIT определено для «android.intent.extra.durationLimit».

Ответ №3:

В течение 30 секунд попробуйте этот код.

 intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 30);
 

Ответ №4:

Вот обновление Kotlin для запуска ACTION_VIDEO_CAPTURE Intent с EXTRA_DURATION_LIMIT установленным значением 60 секунд. Что касается putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60) , то в качестве значения для ограничения продолжительности используется значение в секундах.

 val recordVideoIntent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)

recordVideoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60)
startActivityForResult(recordVideoIntent, INTENT_VIDEO_RECORD_REQUEST)
 

Ответ №5:

Используйте это, здесь 60 — второй код:

 intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60);
 

Ответ №6:

Использование MediaRecorder

  /**
     * Starts a new recording.
     */
    public void start() throws IOException {

    recorder = new MediaRecorder();

    String state = android.os.Environment.getExternalStorageState();

    if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
        throw new IOException("SD Card is not mounted.  It is "   state
              ".");
    }

    // make sure the directory we plan to store the recording in exists
    File directory = new File(path).getParentFile();
    System.out.println("start() directory >  "   directory);
    if (!directory.exists() amp;amp; !directory.mkdirs()) {
        throw new IOException("Path to file could not be created.");
    }



    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // Sets the
    // audio source
    // to be used
    // for recording



    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // Sets
    // the
    // format
    // of
    // the
    // output
    // file
    // produced
    // during
    // recording.
    // 5 Minutes = 300000 Milliseconds

    recorder.setMaxDuration(300000); // Sets the maximum duration (in ms) of
    // the recording session



    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // Sets the
    // audio
    // encoder
    // to be
    // used for
    // recording.

    recorder.setOutputFile(path); // Sets the path of the output file to be
    // produced.
    recorder.prepare(); // Prepares the recorder to begin capturing and
    // encoding data.
    recorder.start(); // Recording is now started
 

}

Комментарии:

1. Спасибо, Дженнифер, я пытался использовать Media Recorder для записи видео, но он нестабилен на некоторых платформах, таких как samsung Galaxy. Я надеялся, что есть способ просто добавить максимальное время, потому что мне нужно все, что использует намерение action_capture. Есть идеи?

2. вы пробовали: android.provider. MediaStore. EXTRA_DURATION_LIMIT правильно??

3. Да, я пробовал это и это intent.putExtra(«android.intent.extra.durationLimit», 60000);. По-прежнему ничего.

4. попробуйте intent.putExtra(«android.provider. MediaStore. EXTRA_DURATION_LIMIT», 60000);.