#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);.