El Arsenal de Android – Cámara

PhotoEasy reduce la complejidad de solicitar una imagen a través de la cámara, con varias configuraciones que pueden ayudarlo a personalizar el evento.

Atención, PhotoEasy está optimizado para las versiones 16 a 30 y usa funciones que requieren la presencia de una cámara, por lo que si decides usarla en producción tu aplicación no será identificada en la playStore de dispositivos sin cámara.

Instalar

  • Modo Gradle: agréguelo en su build.gradle raíz al final de los repositorios:
    allprojects {
     repositories {
      ...
      maven { url 'https://jitpack.io' }
     }
    }
    
    add the dependency:
    dependencies {
        implementation 'com.github.thorny84:PhotoEasy:1.0.2'
      }
    

  • Modo Maven:
    <repositories>
     <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
     </repository>
    </repositories>
    

    agregue la dependencia:

      <dependency>
        <groupId>com.github.thorny84</groupId>
        <artifactId>PhotoEasy</artifactId>
        <version>1.0.2</version>
      </dependency>
    

Uso

Ahora usemos el constructor para inicializar PhotoEasy en la actividad o fragmento así:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .build()

el único método de creación obligatorio es setActivity, sin PhotoEasy genera una IllegalArgumetException. build() abra la cámara de la aplicación del sistema.

El siguiente paso es obtener una imagen que hemos tomado. Para agregar onActivityResult de actividad después super:

photoEasy.onActivityResult(requestCode, resultCode, new OnPictureReady() {
   @Override
   public void onFinish(Bitmap thumbnail) {}
});

si falla la creación del mapa de bits, la miniatura será null.

Tipo de Mimica

Los tipos MIME admitidos son: Jpeg,Png,Webp. Para configurar el tipo de MIME, utilice el constructor de constructores con PhotoEasy.MimeType:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .setMimeType(PhotoEasy.MimeType.imagePng)
  .build()

El mimo predeterminado es Jpeg

Nombre de la imágen

Si queremos tener un nombre específico para el archivo de imagen, podemos hacer:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .setPhotoName("image name")
  .build()

Tipo de almacenamiento

Elegimos dónde queremos colocar nuestro archivo de imagen. Especifique el tipo de uso de almacenamiento PhotoEasy.StorageType:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .setStorageType(PhotoEasy.StorageType.media)
  .build()

Hay tres posibilidades de almacenamiento en photoeasy:

  • PhotoEasy.StorageType.internal Almacenamiento interno específico de la aplicación, destinado al uso exclusivo de su aplicación, no accesible para otras aplicaciones. La API cifra 29 imágenes.
  • PhotoEasy.StorageType.external Almacenamiento externo específico de la aplicación, estas imágenes están disponibles para otras aplicaciones solo con permisos.
  • PhotoEasy.StorageType.media Almacenamiento en el directorio de medios, estas imágenes son visibles para todas las aplicaciones sin los permisos necesarios. El tipo de almacenamiento predeterminado es PhotoEasy.StorageType.external. Algunos de estos requieren permisos solicitados por el usuario …

Autorizaciones

Utilizando PhotoEasy.StorageType.external o PhotoEasy.StorageType.media tienes que configurar permisos para guardar imágenes, al menos hasta API 28. PhotoEasy administra los permisos internamente pero si quieres administrarlos tienes que configurarlos:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .enableRequestPermission(false)
  .build()

esto podría generar excepciones inesperadas si usted no maneja los permisos de manera excelente. Dejando la administración de permisos a PhotoEasy, pero desea controlar las acciones después de la elección del usuario, puede usar:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .setExternalStoragePermission(myExternalStoragePermission)
  .build()

clase de extensión:

public class ExtStoPer extends ExternalStoragePermission {

  public ExtStoPer(Activity activity) {
    super(activity,RequestMode.alwaysRequest);
  }

  @Override
  public void requestPermissionRationale() {}

  @Override
  public void requestPermission() {}
}

RequestMode son los puntos para los que desea verificar los permisos:

  • RequestMode.alwaysRequest siempre pedirá permiso al usuario.
  • RequestMode.requestRationalControl solo le dará el control la segunda vez que se le pida permiso al usuario.
  • RequestMode.allControl te dará un control total.

Directorio personalizado

Con PhotoEasy.StorageType.media podemos guardar nuestra imagen en un directorio personalizado:

PhotoEasy photoEasy = PhotoEasy.builder()
  .setActivity(this)
  .setStorageType(PhotoEasy.StorageType.media)
  .saveInCustomDirectory("Custom_directory")
  .build()

para tener un directorio personal en la aplicación de la galería

.

Compruebe también

La actualización de CameraX hace que las cámaras duales simultáneas sean aún más fáciles

Publicado por Donovan McMurray – Ingeniero de relaciones con desarrolladores CámaraXLa biblioteca de cámaras Jetpack …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *