4

標準でビデオビューを作成しましmedia controllerた。でメソッドを呼び出して動画を再生できたので、動画は自己準備が完了すると自動的に再生されます。start()setOnPreparedListener

ただし、私がやりたいのは、ビデオをスタンバイにすることです(自動的に再生しない)ので、ユーザーはビデオビューをタップ/クリック/タッチしてビデオを開始する必要があります。

私はいくつかのグーグルを行いました。また、ビデオビューでメソッドsetOnTouchListenerを呼び出してみstart()ました。しかし、結果は予想外で (混乱もあり)、ポップアップ ダイアログが表示され、「ビデオを再生できません」と表示されます。

これは完全なコードです:

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

        txtTitle = (TextView)findViewById(R.id.txtTitle);
        player = (VideoView)findViewById(R.id.player);

        Bundle video = getIntent().getExtras();

        if(video != null)
        {
            id = video.getString("id");
            title = video.getString("title");
            rtsp = video.getString("rtsp");
        }

        txtTitle.setText(title);

        pDialog = new ProgressDialog(this);
        pDialog.setTitle("Please Wait...");
        pDialog.setMessage("Buffering...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(this);
            mediacontroller.setAnchorView(player);
            // Get the URL from String VideoURL
            Uri uri = Uri.parse(rtsp);
            player.setMediaController(mediacontroller);
            player.setVideoURI(uri); 
            player.setBackgroundColor(Color.WHITE);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        player.requestFocus();
        player.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer arg0) {
                // TODO Auto-generated method stub
                pDialog.dismiss();
                player.setBackgroundColor(Color.TRANSPARENT);
                //the video will be played if i call the start() method here
            }
        });

        player.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                //"The video cant be played" pop up dialog appeared, video wont start
                player.start();
                return false;
            }
        });
    }

メソッドを入れると遊べるのに、入れると遊べないので戸惑いました。start()setOnPreparedListenersetOnTouchListener

これが問題に関連しているかどうかはわかりませんが、ビデオビューで YouTube ビデオ(RTSP リンク) をバッファリングしています。

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

1

これはコメントのはずですが、私の評判は十分ではありません。私はあなたがメソッドを呼び出しているのを見ないので、おそらくプレイヤーが状態にあるときprepare()に呼び出そうとしています。コールバックで ofオブジェクトを設定しようとするかもしれません。start()initializedonTouchListenerplayeronPrepared()

于 2015-02-11T13:16:40.873 に答える