更改视频视图whit firebase

时间:2018-04-30 19:16:09

标签: android firebase firebase-realtime-database real-time

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

import javafx.application.Application;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Example extends Application{
    @Override
    public void start (Stage primaryStage) {
        Pane pane=new Pane();
        Label label=new Label();
        Button bt=new Button("Start");

        pane.getChildren().addAll(bt,label);

        bt.setOnAction(e->{
            for (int i=0;i<10000000;i++) label.setText(label.getText()+i);
        });

        Scene scene = new Scene(pane,1000,500);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

这是我的数据库 enter image description here

这是我的参数类:

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) {
            }
        });

我的应用的每个部分都有效,但我无法更改视频内的视频。问题是什么?

1 个答案:

答案 0 :(得分:1)

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

您可以在此处找到有何不同之处:https://firebase.google.com/docs/database/android/read-and-write