package com.puntoz.pro;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.WindowManager;

import androidx.media3.common.MediaItem;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector;
import androidx.media3.ui.AspectRatioFrameLayout;
import androidx.media3.ui.PlayerView;

@UnstableApi
public class PlayerActivity extends Activity {

    PlayerView playerView;
    ExoPlayer player;
    Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle b) {
        super.onCreate(b);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        playerView = new PlayerView(this);
        playerView.setUseController(true);
        playerView.setControllerShowTimeoutMs(10000);
        playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);

        setContentView(playerView);

        DefaultTrackSelector selector = new DefaultTrackSelector(this);

        player = new ExoPlayer.Builder(this)
                .setTrackSelector(selector)
                .build();

        playerView.setPlayer(player);

        String url = getIntent().getStringExtra("url");
        if (url == null) url = "";

        MediaItem item = new MediaItem.Builder()
                .setUri(Uri.parse(url))
                .build();

        player.setMediaItem(item);
        player.prepare();
        player.play();

        handler.postDelayed(() -> playerView.hideController(), 10000);
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        playerView.showController();
        handler.removeCallbacksAndMessages(null);
        handler.postDelayed(() -> playerView.hideController(), 10000);
        return super.dispatchKeyEvent(event);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
        if (player != null) {
            player.release();
            player = null;
        }
    }
}
