当我们创建一个android应用程序时,我们希望从互联网上获取该图像,而不是手动插入图像,并且使用此过程,该应用程序的大小将变小。因此,使用firebase我们可以做到这一点。我们可以创建存储桶,然后可以在其中插入图像并直接进入我们的应用程序。但是,如果我们要更改该图像,而不是该图像,我们想插入新的图像,那么我们必须在代码中进行更改,但是在这里,我们的解决方案是我们可以使用实时在应用程序中实时获取该图像然后我们可以从firebase更改该图像,并实时更改我们的应用程序图像,而无需在代码中进行更改。注意,我们将使用Java语言实现该项目。
从Firebase实时检索图像的步骤
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
第2步:将您的应用连接到Firebase
在android studio中,转到最上方栏中的“工具”选项,然后单击“ firebase”选项,然后单击“连接到firebase”按钮。请参阅了解如何将应用程序连接到Firebase。
步骤3:将依赖项添加到build.gradle(Module:app)
导航到Gradle脚本> build.gradle(Module:app)并将以下依赖项添加到“依赖项”部分。
implementation ‘com.google.firebase:firebase-database:19.6.0’
implementation ‘com.squareup.picasso:picasso:2.71828’
现在,同步将同步现在右上角的选择项目。
步骤4:在AndroidManifest.xml文件中添加Internet权限
导航到AndroidManifest.xml文件,并添加以下权限以在应用程序中获得Internet权限。
第5步:在Firebase存储上添加图片并复制该图片的链接
在firebase中,转到存储选项,然后单击“入门”按钮
之后,单击“上传文件”选项以在Firebase存储上插入图像。
之后,单击插入的图像,然后在右侧部分中显示图像详细信息,然后单击访问令牌并复制图像URL。
步骤6:将该图像URL添加到实时数据库中
转到“实时数据库”选项,然后单击“创建数据库”按钮。
单击“入门”按钮后,为数据库安全规则选择选项锁定模式。之后,单击+选项为数据库创建一个子节点。
在该名称之后,该子节点将图像URL插入值部分,然后单击“添加”按钮。
然后转到规则部分,因为我们是在锁定模式下创建此数据库的,但是我们必须在应用程序中读取该数据库。在规则部分中,转到读取部分行,然后将其从false更改为true。
步骤7:使用activity_main.xml和MainActivity。 Java文件
转到activity_main.xml和MainActivity。 Java文件并参考以下代码。以下是activity.main.xml和MainActivity的代码。 Java文件。
XML
Java
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
public class MainActivity extends AppCompatActivity {
// Initializing the ImageView
ImageView rImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// getting ImageView by its id
rImage = findViewById(R.id.rImage);
// we will get the default FirebaseDatabase instance
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
// we will get a DatabaseReference for the database root node
DatabaseReference databaseReference = firebaseDatabase.getReference();
// Here "image" is the child node value we are getting
// child node data in the getImage variable
DatabaseReference getImage = databaseReference.child("image");
// Adding listener for a single change
// in the data at this location.
// this listener will triggered once
// with the value of the data at the location
getImage.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// getting a DataSnapshot for the location at the specified
// relative path and getting in the link variable
String link = dataSnapshot.getValue(String.class);
// loading that data into rImage
// variable which is ImageView
Picasso.get().load(link).into(rImage);
}
// this will called when any problem
// occurs in getting data
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
// we are showing that error message in toast
Toast.makeText(MainActivity.this, "Error Loading Image", Toast.LENGTH_SHORT).show();
}
});
}
}