0

ビデオがフォアグラウンドで再生されている間、VideoView のバッファーの割合を継続的に監視する必要があります。AsyncTask クラスを作成し、VideoView をそのクラスに渡しました。ただし、バッファ パーセンテージにアクセスしようとすると、常に 0 が返されます。Main アクティビティの onCreate メソッドでビデオの再生を初期化して開始しました。私のコード:

     public class MainActivity extends Activity {

static MediaController mc;
static VideoView vw;

/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

    mc = new MediaController(this);

    vw = (VideoView) findViewById(R.id.videoView);

    vw.setVideoPath("http://173.45.164.105:1935/live/myStream/playlist.m3u8");
    vw.requestFocus();
    vw.start();

    // Execute async task for stream error
    ConnCheck cc = new ConnCheck();
    cc.execute();

    Log.i("REACHED MAIN", "Started Playing");
}

}

    class ConnCheck extends AsyncTask<Void, Void, Void>{


@Override
protected Void doInBackground(Void... params) {
    while (MainActivity.vw.isPlaying() == true) {

        Log.i("HEY", "DOING STUFF");
    }
    return null;
}
4

1 に答える 1

1

メソッドでビデオをOnCreate()開始していますが、その時点では再生が開始されておらず、ビデオの開始直後に asynctask を実行しています。したがって、doInBackground()が実行されるとfalseMainActivity.vw.isPlaying()が返されるため、作成したループに vm が入ることはありません。開始と再生の違いを理解していただければ幸いです。 そして、あなたの問題の解決策は、このメソッドを実装することです

public abstract void onBufferingUpdate (MediaPlayer mp, int percent)
于 2013-07-25T16:03:16.483 に答える