2

これはビデオビューへの私のコードです

try {

            // Start the MediaController
            MediaController mediacontroller = new MediaController(
                    SingleItemView.this);
            mediacontroller.setAnchorView(videoview);
            // Get the URL from String VideoURL
            videoview.setMediaController(mediacontroller);
            videoview.setVideoURI(Uri.parse(video));
            videoview.requestFocus();
            videoview.setKeepScreenOn(true);

            videoview
                    .setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        // Close the progress bar and play the video
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            mProgressDialog.dismiss();
                            videoview.start();
                        }
                    });
        } catch (Exception e) {
            mProgressDialog.dismiss();
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

ただし、ビデオ ストリームが機能していない場合、ダイアログは残ります。

ビデオが機能していない場合、ダイアログをメイン アクティビティに戻したい..

どうやってやるの?

ダイアログを入れてみましたが、まだ機能していません。理由はわかりません..

前もって感謝します :)

編集:私もこのように試みますが、まだ機能しません

try {
                    // Start the MediaController
                    MediaController mediacontroller = new MediaController(
                            SingleTrackActivity.this);
                    mediacontroller.setAnchorView(videoview);
                    // Get the URL from String VideoURL
                    videoview.setMediaController(mediacontroller);
                    videoview.setVideoURI(Uri.parse(duration));
                    videoview.requestFocus();
                    videoview.setKeepScreenOn(true);

                    videoview
                            .setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                // Close the progress bar and play the video
                                public void onPrepared(
                                        MediaPlayer mediaPlayer) {
                                    pDialog.dismiss();
                                    videoview.start();
                                }
                            });
                } catch (Exception e) {
                    AlertDialog alertDialog = new AlertDialog.Builder(
                            SingleTrackActivity.this).create();

                    // Setting Dialog Title
                    alertDialog.setTitle("Alert Dialog");

                    // Setting Dialog Message
                    alertDialog.setMessage("Video Play Error :"
                            + e.toString());

                    pDialog.dismiss();

                    System.out.println("Video Play Error :" + e.toString());
                    finish();
                }
4

1 に答える 1

2

メディア プレーヤーの作業は、コードから非同期で行われます。メディアのセットアップに失敗した場合、コードがメソッドを終了した後に失敗が発生します。同時に、onPreparedListenerメディアが状態に入らなかったため、呼び出されませんでしたPREPARED。したがって、次を追加してみてくださいOnErrorListener

videoview.setOnErrorListener(new MediaPlayer.OnErrorListener(){
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // inform the user something went wrong
        mProgressDialog.dismiss();
        return true;
    }
});

これが機能しない場合は、メディア プレーヤー / ビデオビューに対して取得しているコールバックを確認してください。

于 2013-10-02T07:22:30.587 に答える