From ff4d767fe21fef56c10481f6b558b14354a39d80 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Sat, 27 Aug 2022 18:52:17 -0700 Subject: [PATCH] basic video playback --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 2 + .../asgardius/page/s3manager/VideoPlayer.java | 191 +++--------------- .../main/res/layout/activity_video_player.xml | 41 +--- 4 files changed, 34 insertions(+), 201 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 60ddb43..f93d579 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,6 +35,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'com.google.android.exoplayer:exoplayer:2.18.1' implementation("io.minio:minio:8.4.3") testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 568d18b..956011a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="asgardius.page.s3manager"> + + = 30) { - mContentView.getWindowInsetsController().hide( - WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); - } else { - // Note that some of these constants are new as of API 16 (Jelly Bean) - // and API 19 (KitKat). It is safe to use them, as they are inlined - // at compile-time and do nothing on earlier devices. - mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); - } - } - }; - private View mControlsView; - private final Runnable mShowPart2Runnable = new Runnable() { - @Override - public void run() { - // Delayed display of UI elements - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.show(); - } - mControlsView.setVisibility(View.VISIBLE); - } - }; - private boolean mVisible; - private final Runnable mHideRunnable = new Runnable() { - @Override - public void run() { - hide(); - } - }; - /** - * Touch listener to use for in-layout UI controls to delay hiding the - * system UI. This is to prevent the jarring behavior of controls going away - * while interacting with activity UI. - */ - private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - switch (motionEvent.getAction()) { - case MotionEvent.ACTION_DOWN: - if (AUTO_HIDE) { - delayedHide(AUTO_HIDE_DELAY_MILLIS); - } - break; - case MotionEvent.ACTION_UP: - view.performClick(); - break; - default: - break; - } - return false; - } - }; - private ActivityVideoPlayerBinding binding; + + // url of video which we are loading. + String videoURL = "https://video.asgardius.company/download/videos/41780585-a935-4d53-84c8-45ce97141231-480.mp4"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.activity_video_player); + playerView = findViewById(R.id.player_view); + try { + // creating a variable for exoplayer + ExoPlayer player = new ExoPlayer.Builder(this).build(); + // Attach player to the view. + playerView.setPlayer(player); + MediaItem mediaItem = MediaItem.fromUri(videoURL); - binding = ActivityVideoPlayerBinding.inflate(getLayoutInflater()); - setContentView(binding.getRoot()); + // Set the media item to be played. + player.setMediaItem(mediaItem); + // Prepare the player. + player.prepare(); + // Start the playback. + player.play(); - mVisible = true; - mControlsView = binding.fullscreenContentControls; - mContentView = binding.fullscreenContent; - - // Set up the user interaction to manually show or hide the system UI. - mContentView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - toggle(); - } - }); - - // Upon interacting with UI controls, delay any scheduled hide() - // operations to prevent the jarring behavior of controls going away - // while interacting with the UI. - binding.dummyButton.setOnTouchListener(mDelayHideTouchListener); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - - // Trigger the initial hide() shortly after the activity has been - // created, to briefly hint to the user that UI controls - // are available. - delayedHide(100); - } - - private void toggle() { - if (mVisible) { - hide(); - } else { - show(); + } catch (Exception e) { + // below line is used for + // handling our errors. + System.out.println("Error : " + e.toString()); } } - - private void hide() { - // Hide UI first - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.hide(); - } - mControlsView.setVisibility(View.GONE); - mVisible = false; - - // Schedule a runnable to remove the status and navigation bar after a delay - mHideHandler.removeCallbacks(mShowPart2Runnable); - mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY); - } - - private void show() { - // Show the system bar - if (Build.VERSION.SDK_INT >= 30) { - mContentView.getWindowInsetsController().show( - WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); - } else { - mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); - } - mVisible = true; - - // Schedule a runnable to display UI elements after a delay - mHideHandler.removeCallbacks(mHidePart2Runnable); - mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY); - } - - /** - * Schedules a call to hide() in delay milliseconds, canceling any - * previously scheduled calls. - */ - private void delayedHide(int delayMillis) { - mHideHandler.removeCallbacks(mHideRunnable); - mHideHandler.postDelayed(mHideRunnable, delayMillis); - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml index 63c7b20..5a7b4e1 100644 --- a/app/src/main/res/layout/activity_video_player.xml +++ b/app/src/main/res/layout/activity_video_player.xml @@ -3,49 +3,18 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/fullscreenBackgroundColor" + android:background="@color/black" android:theme="@style/ThemeOverlay.AsgardiusS3Manager.FullscreenContainer" tools:context=".VideoPlayer"> - + + android:layout_height="match_parent"/> - - - - - -