Trick es insertar los medios de comunicación en base de datos antes de la grabación:
String fileName = "captureTemp.mp4";
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.TITLE, fileName);
cameraVideoURI = getContentResolver()
.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraVideoURI);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, MAXIMUM_VIDEO_SIZE);
startActivityForResult(intent, CAPTURE_VIDEO_INTENT);
y luego onActivityResult() Uso guardados cameraVideoUri para hacer referencia a vídeo grabado:
String[] projection =
{ MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE };
Cursor cursor = managedQuery(cameraVideoURI, projection, null, null, null);
int column_index_data =
cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
int column_index_size =
cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
cursor.moveToFirst();
String recordedVideoFilePath = cursor.getString(column_index_data);
int recordedVideoFileSize = cursor.getInt(column_index_size);
el "intento" en el intent.getData() da una excepción de puntero nulo ... ¿tiene alguna idea de por qué podría estar ocurriendo? –
@ShailAdi Probablemente ya haya resuelto esto, pero para cualquier otra persona que vea esto: la intención será nula cuando especifique 'MediaStore.EXTRA_MEDIA_OUTPUT'. Si desea utilizar este método, elimine 'MediaStore.EXTRA_MEDIA_OUTPUT' al crear la solicitud de intento. – Scutterman