6

以下のアクティビティは正常に機能しますが、画面をクリックした場合にのみ mediaController が表示されます。2 つ目の問題は、メディア コントローラーが 3 秒間しか表示されないことです。この問題を解決するにはどうすればよいですか?

public class PlayingActivity extends Activity
{

    private VideoView mVideoView;
    private EditText mPath;
    MediaController mediaController;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.playingactivity);
        mPath = (EditText) findViewById(R.id.path);
        mPath.setText(GlobalVariable.getstrEmail());
        mVideoView = (VideoView) findViewById(R.id.surface_view);
        Uri uri = Uri.parse("/sdcard/download/test.mp3");
        mediaController = new MediaController(this);
        mediaController.findFocus();
        mediaController.setEnabled(true);
        mediaController.show(0);
        mediaController.setAnchorView(mVideoView);
        mVideoView.setMediaController(mediaController);
        mVideoView.setVideoURI(uri);
        mVideoView.start();
    }
}
4

4 に答える 4

19
mediaController.requestFocus();

ビデオが開始するとすぐに表示されます(クリックする必要はありません)

mVideoView.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mediaController.show(0);
            }
        });

画面に残します。それが役に立てば幸い

于 2012-08-01T07:27:54.290 に答える
2

フォーカスをリクエストしたり、show メソッドで 0 を指定したりしても、うまくいきませんでした。

問題は、MediaController クラスのデフォルトのタイムアウトが 3000 ミリ秒または 3 秒であることです。そして、その show() メソッドは、指定されたパラメーターをデフォルトのパラメーターに置き換えます。これは、Google でテストされていないコードに起因する愚かなバグです。

デフォルト値を目的の値に置き換えるというお粗末な回避策を実装する必要があります。

以下のコードを試してください。それはうまくいくはずです。

mediaControls = new MediaController(getActivity()){
        @Override
        public void show (int timeout){
            if(timeout == 3000) timeout = 20000; //Set to desired number
            super.show(timeout);
        }
    };
mVideoView.setMediaController(mediaControls);
于 2015-05-19T21:24:27.293 に答える
1

ネオの提案は完璧です。しかし、「mp.start()」を onPrepared(MediaPlayer mp) メソッドに追加したいと思います。これがないと、メディア ファイルの再生が開始されません。

于 2013-11-19T11:35:20.777 に答える