player interface part 2
* replace current time position with remaining time * show title and back button at the top
This commit is contained in:
		| @ -151,9 +151,10 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun startPlayer(streamUrl: String) { | ||||
|     fun startPlayer(streamUrl: String, title: String) { | ||||
|         val intent = Intent(this, PlayerActivity::class.java).apply { | ||||
|             putExtra(getString(R.string.intent_stream_url), streamUrl) | ||||
|             putExtra(getString(R.string.intent_title), title) | ||||
|         } | ||||
|         startActivity(intent) | ||||
|     } | ||||
|  | ||||
| @ -25,6 +25,7 @@ class PlayerActivity : AppCompatActivity() { | ||||
|     private lateinit var controller: StyledPlayerControlView | ||||
|  | ||||
|     private var streamUrl = "" | ||||
|     private var title = "" | ||||
|  | ||||
|     private var playWhenReady = true | ||||
|     private var currentWindow = 0 | ||||
| @ -45,6 +46,7 @@ class PlayerActivity : AppCompatActivity() { | ||||
|             playWhenReady = it.getBoolean(getString(R.string.state_is_playing)) | ||||
|         } | ||||
|         streamUrl = intent.getStringExtra(getString(R.string.intent_stream_url)).toString() | ||||
|         title = intent.getStringExtra(getString(R.string.intent_title)).toString() | ||||
|  | ||||
|         initActions() | ||||
|     } | ||||
| @ -107,7 +109,6 @@ class PlayerActivity : AppCompatActivity() { | ||||
|         player.seekTo(playbackPosition) | ||||
|         player.prepare() | ||||
|  | ||||
|  | ||||
|         player.addListener(object : Player.EventListener { | ||||
|             override fun onPlaybackStateChanged(state: Int) { | ||||
|                 super.onPlaybackStateChanged(state) | ||||
| @ -125,6 +126,7 @@ class PlayerActivity : AppCompatActivity() { | ||||
|                 } | ||||
|             } | ||||
|         }) | ||||
|         video_view.player = player | ||||
|  | ||||
|         // when the player controls get hidden, hide the bars too | ||||
|         video_view.setControllerVisibilityListener { | ||||
| @ -149,10 +151,14 @@ class PlayerActivity : AppCompatActivity() { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         video_view.player = player | ||||
|         exo_text_title.text = title // set media title | ||||
|     } | ||||
|  | ||||
|     private fun initActions() { | ||||
|         exo_close_player.setOnClickListener { | ||||
|             this.finish() | ||||
|         } | ||||
|  | ||||
|         exo_rew_10.setOnClickListener { | ||||
|             player.seekTo(player.currentPosition - rwdTime) | ||||
|         } | ||||
| @ -167,6 +173,8 @@ class PlayerActivity : AppCompatActivity() { | ||||
|         currentWindow = player.currentWindowIndex | ||||
|         playWhenReady = player.playWhenReady | ||||
|         player.release() | ||||
|  | ||||
|         Log.d(javaClass.name, "Released player") | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|  | ||||
| @ -164,7 +164,7 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) : | ||||
|         } | ||||
|  | ||||
|         Log.d(javaClass.name, "Playing stream: $streamUrl") | ||||
|         (activity as MainActivity).startPlayer(streamUrl) | ||||
|         (activity as MainActivity).startPlayer(streamUrl, ep.title) | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										5
									
								
								app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| <vector android:height="24dp" android:tint="#FFFFFF" | ||||
|     android:viewportHeight="24" android:viewportWidth="24" | ||||
|     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/> | ||||
| </vector> | ||||
| @ -1,11 +1,38 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:background="#73000000"> | ||||
|  | ||||
|     <LinearLayout | ||||
|         android:id="@+id/exo_top_controls" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginStart="12dp" | ||||
|         android:layout_marginTop="7dp" | ||||
|         android:layout_marginEnd="12dp" | ||||
|         android:gravity="center" | ||||
|         android:orientation="horizontal"> | ||||
|  | ||||
|         <ImageButton | ||||
|             android:id="@+id/exo_close_player" | ||||
|             style="@style/ExoStyledControls.Button.Center" | ||||
|             android:layout_width="34dp" | ||||
|             android:layout_height="34dp" | ||||
|             android:contentDescription="@string/close_player" | ||||
|             app:srcCompat="@drawable/ic_baseline_arrow_back_24" /> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/exo_text_title" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginEnd="34dp" | ||||
|             android:text="@string/text_title_ex" | ||||
|             android:textAlignment="center" | ||||
|             android:textColor="@color/exo_white" /> | ||||
|     </LinearLayout> | ||||
|  | ||||
|     <LinearLayout | ||||
|         android:id="@+id/exo_main_controls" | ||||
|         android:layout_width="match_parent" | ||||
| @ -24,7 +51,8 @@ | ||||
|             style="@style/ExoStyledControls.Button.Center.RewWithAmount" | ||||
|             android:layout_width="42dp" | ||||
|             android:layout_height="42dp" | ||||
|             android:tint="@color/exo_white"/> | ||||
|             android:contentDescription="@string/rewind_10" | ||||
|             android:tint="@color/exo_white" /> | ||||
|  | ||||
|  | ||||
|         <Space | ||||
| @ -37,7 +65,8 @@ | ||||
|             style="@style/ExoStyledControls.Button.Center.PlayPause" | ||||
|             android:layout_width="52dp" | ||||
|             android:layout_height="52dp" | ||||
|             android:layout_gravity="center" /> | ||||
|             android:layout_gravity="center" | ||||
|             android:contentDescription="@string/play_pause" /> | ||||
|  | ||||
|         <Space | ||||
|             android:layout_width="0dp" | ||||
| @ -48,7 +77,8 @@ | ||||
|             android:id="@+id/exo_ffwd_10" | ||||
|             style="@style/ExoStyledControls.Button.Center.FfwdWithAmount" | ||||
|             android:layout_width="42dp" | ||||
|             android:layout_height="42dp" /> | ||||
|             android:layout_height="42dp" | ||||
|             android:contentDescription="@string/forward_10" /> | ||||
|  | ||||
|         <Space | ||||
|             android:layout_width="0dp" | ||||
| @ -57,26 +87,21 @@ | ||||
|     </LinearLayout> | ||||
|  | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:id="@+id/exo_time_controls" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_gravity="bottom" | ||||
|         android:layout_marginStart="7dp" | ||||
|         android:layout_marginEnd="7dp" | ||||
|         android:layout_marginStart="12dp" | ||||
|         android:layout_marginEnd="12dp" | ||||
|         android:layout_marginBottom="@dimen/exo_styled_progress_margin_bottom"> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/exo_position" | ||||
|             style="@style/ExoStyledControls.TimeText.Position" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <View | ||||
|             android:id="@+id/exo_progress_placeholder" | ||||
|             android:layout_width="0dp" | ||||
|             android:layout_height="@dimen/exo_styled_progress_layout_height" | ||||
|             app:layout_constraintBottom_toBottomOf="parent" | ||||
|             app:layout_constraintEnd_toStartOf="@+id/exo_remaining" | ||||
|             app:layout_constraintStart_toEndOf="@+id/exo_position" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <TextView | ||||
| @ -87,5 +112,4 @@ | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
|  | ||||
| </FrameLayout> | ||||
| @ -30,6 +30,11 @@ | ||||
|     <string name="settings_secondary">Bevorzuge alternativen Stream</string> | ||||
|     <string name="settings_secondary_desc">Untertitle-Stream verwenden, sofern vorhanden</string> | ||||
|  | ||||
|     <!-- player --> | ||||
|     <string name="close_player">Player schließen</string> | ||||
|     <string name="rewind_10">10 Sekunden zurück</string> | ||||
|     <string name="play_pause">Abspielen/Pause</string> | ||||
|     <string name="forward_10">10 Sekunden vorwärts</string> | ||||
|     <!-- dialogs --> | ||||
|     <string name="save">speichern</string> | ||||
|     <string name="cancel">@android:string/cancel</string> | ||||
|  | ||||
| @ -39,6 +39,14 @@ | ||||
|     <string name="settings_secondary">Prefer secondary (sub) stream</string> | ||||
|     <string name="settings_secondary_desc">Use the subtitles stream if present</string> | ||||
|  | ||||
|     <!-- player --> | ||||
|     <string name="close_player">close player</string> | ||||
|     <string name="rewind_10">rewind 10 seconds</string> | ||||
|     <string name="play_pause">play/pause</string> | ||||
|     <string name="forward_10">forward 10 seconds</string> | ||||
|     <string name="time_min_sec" translatable="false">%1$02d:%2$02d</string> | ||||
|     <string name="time_hour_min_sec" translatable="false">%1$d:%2$02d:%3$02d</string> | ||||
|  | ||||
|     <!-- dialogs --> | ||||
|     <string name="save">save</string> | ||||
|     <string name="cancel">@android:string/cancel</string> | ||||
| @ -48,8 +56,6 @@ | ||||
|     <string name="login_desc">You need to login before you can use Teapod. The Login-Data will be stored encrypted on your device.</string> | ||||
|     <string name="login_failed_desc">Could not login. Please try again.</string> | ||||
|     <string name="password">Password</string> | ||||
|     <string name="time_min_sec" translatable="false">%1$02d:%2$02d</string> | ||||
|     <string name="time_hour_min_sec" translatable="false">%1$d:%2$02d:%3$02d</string> | ||||
|  | ||||
|     <!-- save keys --> | ||||
|     <string name="encrypted_preference_file_key" translatable="false">org.mosad.teapod.encrypted_preferences</string> | ||||
| @ -60,6 +66,7 @@ | ||||
|  | ||||
|     <!-- intents & states --> | ||||
|     <string name="intent_stream_url" translatable="false">intent_stream_url</string> | ||||
|     <string name="intent_title" translatable="false">intent_title</string> | ||||
|     <string name="state_resume_window" translatable="false">state_resume_window</string> | ||||
|     <string name="state_resume_position" translatable="false">state_resume_position</string> | ||||
|     <string name="state_is_playing" translatable="false">state_is_playing</string> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user