Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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 第一次调用后,如何在ChildEventListener中传递条件onChildAdded?_Java_Android_Firebase Realtime Database - Fatal编程技术网

Java 第一次调用后,如何在ChildEventListener中传递条件onChildAdded?

Java 第一次调用后,如何在ChildEventListener中传递条件onChildAdded?,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我使用firebase ChildEventListner作为聊天应用程序。 在这个应用程序中,我在onChildAdded中传递了一个条件,即如果消息senderId添加的新孩子在活动中播放声音。 下面是我的代码 rootRef.child("Messages").child(MessageSenderId).child(MessageReceiverId).addChildEventListener(new ChildEventListener() @Override

我使用firebase ChildEventListner作为聊天应用程序。 在这个应用程序中,我在onChildAdded中传递了一个条件,即如果消息senderId添加的新孩子在活动中播放声音。 下面是我的代码

rootRef.child("Messages").child(MessageSenderId).child(MessageReceiverId).addChildEventListener(new ChildEventListener()
@Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s)
            {
                Messages messages=dataSnapshot.getValue(Messages.class);
                messageslist.add(messages);
                messagesAdapter.notifyDataSetChanged();
                messageList.smoothScrollToPosition(messageList.getAdapter().getItemCount());

                if (messages.from.equals(MessageSenderId))
                {
                    MediaPlayer IncomingMessageSound=MediaPlayer.create(MessageActivity.this,R.raw.incoming_message_sound);
                    IncomingMessageSound.start();
                }
            }
但这是一种工作方式,当我转到消息“活动”时,声音会播放senderId times添加的子项总数。这意味着,若收到的信息比活动开始时播放的声音多15倍。之后就不会有声音了


因此,我的问题是当senderId添加新节点时,如何传递适当的条件,而不是播放声音意味着在接收消息时播放声音(而不是通知声音)

这本质上归结为知道用户是否已经看到特定消息。或者更准确地说:如果用户还没有看到,是否有任何消息,因为即使有多条新消息,您可能只想播放一个声音

也可以在这里看到这一点,以及前面的答案: