이것은 매 초마다 업데이트 진행 상황을 구현하는 간단한 예입니다.
플레이어가 재생되지 않는 동안 (ExoPlayer.addListener(Player.EventListener);
에서 이벤트를받을 수 있음) 및 Activity
이 일시 중지/삭제 된 경우에도 Handler.removeCallbacks(updateProgressAction)
을 사용해야합니다.
public class MainActivity extends AppCompatActivity {
private final Runnable updateProgressAction = new Runnable() {
@Override
public void run() {
updateProgress();
}
};
private TextView mTextView;
private Handler mHandler;
private SimpleExoPlayer mSimpleExoPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.my_text);
SimpleExoPlayerView simpleExoPlayerView = findViewById(R.id.player_view);
mSimpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector(new DefaultBandwidthMeter()));
simpleExoPlayerView.setPlayer(mSimpleExoPlayer);
Uri uri = Uri.parse("https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8");
String userAgent = Util.getUserAgent(this, "appName");
HlsMediaSource mediaSource = new HlsMediaSource(uri, new DefaultDataSourceFactory(this, userAgent), null, null);
mSimpleExoPlayer.prepare(mediaSource);
mSimpleExoPlayer.setPlayWhenReady(true);
mHandler = new Handler();
mHandler.post(updateProgressAction);
}
private void updateProgress() {
mTextView.setText("calculate time and format");
long delayMs = TimeUnit.SECONDS.toMillis(1);
mHandler.postDelayed(updateProgressAction, delayMs);
}
}