使用 firebase 更改视频视图

change video view whit firebase

我有一个可以播放 videoview 视频的应用程序。此应用程序在 Firebase 数据库上有一个子事件侦听器。当我更改数据库(来自另一个应用程序)上的参数时,我想更改 videoview 中的视频。 代码仍然有效,但我听不到参数的变化。 这是代码

public class activity_main extends AppCompatActivity {

    private DatabaseReference mDatabase;
    VideoView videoview;
    TextView tV;
    String path;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("parametri").child("nowPlaying").setValue("video01");

        videoview = (VideoView) findViewById(R.id.videoView);
        tV = (TextView) findViewById(R.id.textView);

        path = "android.resource://" + getPackageName() + "/" + R.raw.video01;
        videoview.setVideoURI(Uri.parse(path));
        videoview.start();

        mDatabase.child("parametri").child("nowPlaying").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                tV.setText(value);
                Log.e("Valore attuale: " , value);

                switch (value) {
                    case "video01" :
                        tV.setText("Video01");
                        path = "android.resource://" + getPackageName() + "/" + R.raw.video01;
                        videoview.stopPlayback();
                        videoview.setVideoURI(Uri.parse(path));
                        videoview.start();
                        break;
                    case "video02" :
                        tV.setText("Video02");
                        path = "android.resource://" + getPackageName() + "/" + R.raw.video02;
                        videoview.stopPlayback();
                        videoview.setVideoURI(Uri.parse(path));
                        videoview.start();
                        break;
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });

这是我的数据库

这是我的 class 参数:

public class parametri {

    public String nowPlaying;

    public parametri () {

    }

    public parametri(String nowPlaying) {
        this.nowPlaying = nowPlaying;
    }

    public String getNowPlaying() {
        return nowPlaying;
    }

    public void setNowPlaying(String nowPlaying) {
        this.nowPlaying = nowPlaying;
    }
}

我的应用程序的每个部分都可以工作,但我无法更改 videoview 中的视频。有什么问题吗?

不要使用 addListenerForSingleValueEvent,而是使用 addValueEventListener。

你可以在这里找到不同之处:https://firebase.google.com/docs/database/android/read-and-write