Sé que esta pregunta puede parecer ambigua para muchos usuarios, pero intentaré elaborarla brevemente. Estoy tratando de construir una aplicación de reconocimiento de objetos a través de Android. La foto capturada por la cámara se enviará a la base de datos de Firebase y, a partir de ahí, la foto se obtendrá mediante un script de Python y se realizará el reconocimiento de la imagen. Entonces, mi pregunta es cómo puedo codificar una aplicación que empujará la imagen de la aplicación a la base de datos, como la clave de las imágenes capturadas por el usuario (cualquier usuario de la aplicación) estará en secuencia:

imagen1, imagen2, imagen3 ....

Implica que si el usuario 'a' captura una imagen, la foto se cargará a la base de datos con la clave 'image 1 '. Después de que el usuario 'b' tome una foto, la imagen se presionará con la tecla 'imagen 2 '. Tenga en cuenta que la aplicación puede ser utilizada por varios usuarios simultáneamente. Entonces, ¿alguna sugerencia sobre cómo debería implementar esto en Android?

-1
Nuance 26 oct. 2017 a las 20:04

3 respuestas

La mejor respuesta

Primero, autentique al usuario, luego obtenga el id de cada usuario y almacénelo en la base de datos de esa manera es más fácil de recuperar más adelante.

Me gusta esto:-

DatabaseReference ref = 
FirebaseDatabase.getInstance().getReference("users");

Firebase user=FirebaseAuth.getInstance().getCurrentUser();

//to send to database
ref.child("uid").setValue(user.getUID());

Ahora tiene userid debajo de users, luego debajo de userid agregue una imagen.

Entonces ejemplo:

  {
  "users":{
     "userid":{
         "name": "peter"
         "image": "link_from_storage"
  }
 }
}

De esta manera, cada vez que un usuario captura una imagen, tendrá un ID de usuario para él. Ahora para la imagen, debe enviarla a firebase storage y luego tomar el enlace desde allí y almacenarla en la base de datos.

Ejemplo:

  StorageReference filepath=mStorage.child(uri.getLastPathSegment());

  filepath.putFile(uri).addOnSuccessListener(new 
  OnSuccessListener<UploadTask.TaskSnapshot>() {
   @Override                                                                         
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

String downloaduri=taskSnapshot.getDownloadUrl().toString();

Básicamente, en la primera línea, está agregando la imagen al almacenamiento de Firebase. Luego, hace un escucha para obtener la imagen url del almacenamiento y ponerla en downloaduri.

Luego para agregar una imagen en la base de datos: -

ref.child("image").setValue(downloaduri);

¡Espero que esto ayude!

2
Peter Haddad 26 oct. 2017 a las 17:57

La última vez que usé Firebase fue hace unos 8-10 meses, así que no recuerdo las sintaxis.

Puede usar podría almacenar de Firebase para cargar sus imágenes a la nube cuando los usuarios lo cargan. Puede generar una identificación (key) en consecuencia y guardarla en la base de datos con la referencia a esa imagen como value a esa key. Puede leer aquí cómo hacerlo.

Afortunadamente, las funciones de Firebase se pueden usar con el almacenamiento en la nube para acceder y procesar la imagen. Solo necesita leer sobre Disparadores de almacenamiento en la nube.

1
Srujan Barai 26 oct. 2017 a las 17:14

tienes que mantener algo como esto si no estoy equivocado

  1. Coloque la imagen de la carpeta del titular en el sistema de archivos firebase.
  2. Coloque el nombre del remitente del nombre del remitente, el nombre de usuario cargado (si es necesario en función de sus necesidades) y la marca de tiempo a qué hora se cargó.
  3. Ahora primero busque los nombres de imagen, con marcas de tiempo y luego archivos de imágenes de recuperación de marcas de tiempo basadas.
1
Sush 26 oct. 2017 a las 17:21