Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase赢得';t触发数据更改事件_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase赢得';t触发数据更改事件

Java Firebase赢得';t触发数据更改事件,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在Android应用程序中使用Firebase。我正在尝试使用Firebase作为NOSQL数据库,这是我的数据检索对象 public class FirebaseManager { private static final String DB_REF = "mainframeradio"; private static final String STREAM_REF = "streams"; public static List<MediaStream>

我在Android应用程序中使用Firebase。我正在尝试使用Firebase作为NOSQL数据库,这是我的数据检索对象

public class FirebaseManager {

    private static final String DB_REF = "mainframeradio";
    private static final String STREAM_REF = "streams";

    public static List<MediaStream> getMediaStreams(Context context) {
        final List<MediaStream> mediaStreams = new ArrayList<>();
        FirebaseDatabase db = FirebaseDatabase.getInstance();
        DatabaseReference dbRef = db.getReference(STREAM_REF);

        dbRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Map<String, Object> streams = (Map<String, Object>) dataSnapshot.getValue();

                if (!streams.isEmpty()) {
                    for (Object stream : streams.values()) {
                        String protocol = (String) ((Map) stream).get("protocol");
                        String host = (String) ((Map) stream).get("host");
                        int port = (int) ((Map) stream).get("port");
                        String media = (String) ((Map) stream).get("media");
                        String metadata = (String) ((Map) stream).get("metadata");
                        String streamName = (String) ((Map) stream).get("streamName");

                        MediaStream mediaStream = new MediaStream(protocol, host, port, media, metadata, streamName);
                        mediaStreams.add(mediaStream);
                    }
                } else {
                    L.d("No media streams found on the server.");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                L.w("Couldn't read the stream info from Firebase.");
            }
        });

        return mediaStreams;
    }
}
公共类FirebaseManager{
专用静态最终字符串DB_REF=“mainframeradio”;
私有静态最终字符串STREAM\u REF=“streams”;
公共静态列表getMediaStreams(上下文){
最终列表mediaStreams=新的ArrayList();
FirebaseDatabase db=FirebaseDatabase.getInstance();
DatabaseReference dbRef=db.getReference(STREAM_REF);
dbRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Map streams=(Map)dataSnapshot.getValue();
如果(!streams.isEmpty()){
for(对象流:streams.values()){
字符串协议=(字符串)((映射)流).get(“协议”);
字符串主机=(字符串)((映射)流).get(“主机”);
int port=(int)((Map)stream.get(“port”);
字符串媒体=(字符串)((映射)流).get(“媒体”);
字符串元数据=(字符串)((映射)流).get(“元数据”);
String streamName=(String)((Map)stream.get(“streamName”);
MediaStream MediaStream=新的MediaStream(协议、主机、端口、媒体、元数据、流名称);
添加(mediaStream);
}
}否则{
L.d(“在服务器上找不到媒体流”);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
L.w(“无法从Firebase读取流信息。”);
}
});
返回媒体流;
}
}
问题是事件不会从我调用它的活动中触发

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);

    // Set components.
    this.playerView = findViewById(R.id.playerView);
    this.songTitleTextView = findViewById(R.id.songTitleTextView);
    this.albumArt = findViewById(R.id.albumArt);

    // Hide both the navigation and status bar (immersive).
    ViewManager.setFullscreenImmersive(getWindow());

    List<MediaStream> mediaStreams = FirebaseManager.getMediaStreams(this);
    System.out.print(mediaStreams);
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u播放器);
//设置组件。
this.playerView=findviewbyd(R.id.playerView);
this.songTitleTextView=findviewbyd(R.id.songTitleTextView);
this.albumArt=findViewById(R.id.albumArt);
//隐藏导航栏和状态栏(沉浸式)。
setFullscreenImmersive(getWindow());
List mediaStreams=FirebaseManager.getMediaStreams(this);
系统输出打印(mediaStreams);
}
我只想从firebase检索数据。这是数据库


如有任何帮助,将不胜感激。

请尝试以下方法检索数据:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference("streams");

reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
   String hosts=datas.child("host").getValue().toString();
   String medias=datas.child("media").getValue().toString();
   String metadata=datas.child("metadata").getValue().toString();
   String ports=datas.child("port").getValue().toString();
   String protocol=datas.child("protocol").getValue().toString();
   String steamname=datas.child("streamName").getValue().toString();


 }
@Override
 public void onCancelled(DatabaseError databaseError) {
  }
 });

datasnapshot是
,然后您将能够在子
0
中迭代并获取数据

尝试以下操作以检索数据:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference("streams");

reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
   String hosts=datas.child("host").getValue().toString();
   String medias=datas.child("media").getValue().toString();
   String metadata=datas.child("metadata").getValue().toString();
   String ports=datas.child("port").getValue().toString();
   String protocol=datas.child("protocol").getValue().toString();
   String steamname=datas.child("streamName").getValue().toString();


 }
@Override
 public void onCancelled(DatabaseError databaseError) {
  }
 });

datasnapshot是
streams
,然后您将能够在子
0
中迭代并获取数据

谢谢,将尝试并让您知道。我在LogCat
DatabaseError上收到一个数据库错误:权限被拒绝
目前没有。我将更改并重试。谢谢,我将尝试并让您知道。我在LogCat上收到一个数据库错误
DatabaseError:Permission denied
目前没有。我将更改它并重试。