如何在Android应用程序中为每个请求提供顺序ID?

时间:2017-10-26 17:04:16

标签: android firebase firebase-realtime-database

我知道这个问题对许多用户来说可能看起来很模糊,但我会简单地详细说明这个问题。我正在尝试通过android构建一个对象识别应用程序。相机拍摄的照片将被发送到firebase数据库,并从那里通过python脚本获取照片并完成图像识别。所以我的问题是我如何编写一个应用程序代码,该应用程序将图像从应用程序推送到数据库,例如用户(任何应用程序用户)捕获的图像的键将按顺序排列:

  

image1,image2,image3 ....

这意味着如果'a'用户捕获图像,照片将上传到数据库,并带有“image 1 ”键。用户'b'拍摄照片后,将使用“image 2 ”键按下图像。请注意,应用程序可以由多个用户同时使用。那么关于我应该如何在android中实现这个的任何建议?

3 个答案:

答案 0 :(得分:2)

首先,对用户进行身份验证,然后获取每个用户的id,然后以更容易在以后检索的方式存储在数据库中。

像这样: -

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

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

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

现在userid位于users下,然后在userid下添加图片。

所以例子:

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

这样,每次用户捕获图像时,他都会有一个用户ID。 现在,对于图像,您必须将其发送到firebase storage,然后从那里获取链接并将其存储在数据库中。

示例:

  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();

基本上是第一行,您将图像添加到firebase存储中。然后您执行一个侦听器从存储中获取图像url并将其放入downloaduri

然后在数据库中添加图像: -

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

希望这有帮助!

答案 1 :(得分:1)

我上次使用firebase的时间大约是8-10个月,所以我不记得语法了。

当用户上传图片时,您可以使用Firebase的could storage将图片上传到云端。您可以相应地生成ID(key),并将其保存在数据库中,并将该图像的引用保存为value key。您可以阅读here如何做到这一点。

幸运的是,Firebase functions可以与云存储一起使用来访问和处理图像。您只需阅读Cloud storage triggers

答案 2 :(得分:1)

  

如果我没错,你必须保持这样的事情

  1. 将持有者文件夹图像放在firebase文件系统中。
  2. 占位符forder image_name,上传的user_name(如果需要,根据您的需要)和time_stamp在何时上传。
  3. 现在首先获取image_names,包含时间戳,然后基于时间戳获取图像文件。