2010-11-08 25 views
5

Estoy teniendo problemas para crear una función básica de captura de video en mi aplicación. Quiero llamar a la herramienta de captura de video predeterminada de mi dispositivo y guardar el archivo en una ubicación específica.Captura de video ignorando el dilema EXTRA_OUTPUT

De la documentación esto se logra al proporcionar un Uri en EXTRA_OUTPUT, sin embargo, lo que está sucediendo es que esto se ignora por completo y el video se está escribiendo en la ubicación del medio de almacenamiento habitual.

Mi código es muy simple:

 Intent i = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE); 
     String SD_CARD_TEMP = Environment.getExternalStorageDirectory() 
     + File.separator + MEDIA_TEMP ;  
     i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(SD_CARD_TEMP));  
     startActivityForResult(i, ACTIVITY_CAPTURE_VIDEO); 

El MEDIA_TEMP constante se establece en 'media_temp'. También intenté usar un archivo en lugar de una cadena y usar Uri.fromFile(), pero eso no hizo diferencia.

Si alguien tiene alguna idea de por qué este código no se está comportando como la documentación que debería decir .. por favor dígame :-)

PS. El desarrollo se está llevando a cabo en vivo en HTC Desire HD, no emulador ..

Gracias,

de Dave

+0

Está trabajando con mi código en mi HTC desire HD (os 2.2). Entonces puede ser que se haya solucionado en esta versión del sistema operativo u otra cosa. Sé que esta es una publicación anterior, pero no quería que nadie codificara contra htc desire hd para dejar de intentar – dds

Respuesta

3

Tengo el mismo problema. Funciona en stock Android, pero no funciona en dispositivos HTC o SonyEricsson.

Parece que su aplicación de cámara se comporta de manera diferente a la predeterminada.

Creo que la única posibilidad sería pedirle al proveedor de medios el último video grabado y obtener la ruta desde allí. Luego copie el archivo en su propio directorio y elimínelo del proveedor de medios.

No muy inteligente y propenso a errores, pero tal vez la única manera.

¿Alguien tiene una idea mejor?

+0

Idea interesante ... que podría ser una buena solución a prueba de errores – Dave

+0

¿funciona esta idea? cómo obtener el último video grabado? – ghostCoder

1

que estoy haciendo algo similar en Nexus One y funciona, pero el mismo código no funciona en el htc aria. por lo tanto, es probable que tenga algo que ver con las actividades que realmente se ejecutan en los diferentes dispositivos y si respetan ese parámetro o no.

6

Después de pasar 13 horas tratando de averiguar lo que estaba pasando con esta API cámara ...

que estaba usando la intención de la cámara y el EXTRA_OUTPUT para especificar dónde desea guardar el archivo, y que estaba siendo ignorada !

Esta aplicación trabajó un par de semanas antes, y no hay actualizaciones del sistema operativo se había producido en ese momento ..

que puede haber descubierto el origen del problema:

Si hay aplicaciones instaladas en el teléfono que interactúa con, o intercepta la API de la cámara, ¡parte de la API puede romperse!

descubrí esto después de una maratón de 13 horas de depuración, tratando todas las posibles combinaciones de API, y siguiendo todas las sugerencias sobre stackoverflow ..

Mis manos estaban cansando sostener el teléfono, así que construyeron un teléfono se destacan de un perchero para anclar el teléfono a mi escritorio, con la cámara apuntando a un tarro de mantequilla de maní.

En un golpe de suerte, como estaba depurando con mis fotos de mantequilla de maní, la aplicación Google Goggles apareció una notificación diciendo que había "reconocido" algo en mi imagen!

Esto me llevó a desinstalar INMEDIATAMENTE las gafas de google, y de repente, las imágenes comienzan a guardarse en mi URI personalizado como solían hacerlo !!!

Esto fue en una Samsung Stratosphere.

+1

+1 por el viaje en el que me acabas de llevar. Me sentí como si estuviera sentado a tu lado tomando infinitas fotos de un tarro de mantequilla de maní. –

Cuestiones relacionadas