2011-12-18 10 views
7

Me preguntaba cómo decirle a Android que mi aplicación es una aplicación de cámara, por lo que otras aplicaciones saben que pueden iniciar mi aplicación para obtener una imagen. P. ej. Con pixlr-o-matic puede seleccionar una imagen de la galería o puede solicitarla desde la aplicación de cámara que elija.android: cómo registrar mi aplicación como "aplicación de cámara"

editar: ¿cómo devuelvo la imagen a la aplicación de la llamada?

Respuesta

11

Esto se hace con filtros de intención. Agregue la siguiente etiqueta a su manifiesta:

<activity android:name=".CameraActivity" android:clearTaskOnLaunch="true"> 
    <intent-filter> 
     <action android:name="android.media.action.IMAGE_CAPTURE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Ahora su aplicación aparecerá en la lista cuando el usuario quiere hacer una foto.

EDIT:

Esta es la forma correcta de devolver un mapa de bits:

Uri saveUri = (Uri) getIntent().getExtras().getParcelable(MediaStore.EXTRA_OUTPUT); 

if (saveUri != null) 
{ 
    // Save the bitmap to the specified URI (use a try/catch block) 
    outputStream = getContentResolver().openOutputStream(saveUri); 
    outputStream.write(data); // write your bitmap here 
    outputStream.close(); 
    setResult(RESULT_OK); 
} 
else 
{ 
    // If the intent doesn't contain an URI, send the bitmap as a Parcelable 
    // (it is a good idea to reduce its size to ~50k pixels before) 
    setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap)); 
} 

También puede comprobar el androide incorporado Camera app source code.

+0

lo siento, se olvidó de algo- Acabo de editar la pregunta – stoefln

+0

He editado mi respuesta. – Dalmas

+0

¿No hay un problema con poner imágenes grandes en Extras? ¿No sería mejor devolver el camino a la imagen? – stoefln

3

Debe especificar un filtro de intención para su actividad, que especificará que su aplicación se puede iniciar para tomar una foto.

<intent-filter> 
      <action android:name="android.media.action.IMAGE_CAPTURE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

Hope this helps!

+0

¿Te ayudó? –

+0

lo siento, se olvidó de algo- Acabo de editar la pregunta – stoefln

Cuestiones relacionadas