@picsa/capacitor-video-player 7.1.0 → 7.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CapacitorVideoPlayer.podspec +17 -17
  2. package/LICENSE +21 -21
  3. package/android/build.gradle +71 -71
  4. package/android/src/main/AndroidManifest.xml +3 -3
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayer.java +71 -71
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/CapacitorVideoPlayerPlugin.java +1256 -1256
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/FullscreenExoPlayerFragment.java +1595 -1595
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/MyRunnable.java +21 -21
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Notifications/NotificationCenter.java +61 -61
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/AdapterVideoList.java +47 -47
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/ModelVideo.java +49 -49
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/PickerVideoFragment.java +119 -119
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/PickerVideo/VideoRecyclerViewHolder.java +65 -65
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FilesUtils.java +101 -101
  15. package/android/src/main/java/com/jeep/plugin/capacitor/capacitorvideoplayer/Utilities/FragmentUtils.java +32 -32
  16. package/android/src/main/res/drawable/bg_round_rect_white_50.xml +9 -9
  17. package/android/src/main/res/drawable/bg_rounded_rectangle_white_corner_rounded.xml +10 -10
  18. package/android/src/main/res/drawable/exo_close_btn.xml +11 -11
  19. package/android/src/main/res/drawable/gradient_transparent_middle.xml +12 -12
  20. package/android/src/main/res/drawable/ic_arrow_left.xml +5 -5
  21. package/android/src/main/res/drawable/ic_baseline_lq.xml +7 -7
  22. package/android/src/main/res/drawable/ic_exo_icon_fastforward.xml +35 -35
  23. package/android/src/main/res/drawable/ic_exo_icon_pause.xml +26 -26
  24. package/android/src/main/res/drawable/ic_exo_icon_play.xml +36 -36
  25. package/android/src/main/res/drawable/ic_exo_icon_rewind.xml +35 -35
  26. package/android/src/main/res/drawable/ic_expand.xml +5 -5
  27. package/android/src/main/res/drawable/ic_fit.xml +5 -5
  28. package/android/src/main/res/drawable/ic_image_background.xml +12 -12
  29. package/android/src/main/res/drawable/ic_img_16_9_background.xml +10 -10
  30. package/android/src/main/res/drawable/ic_img_9_16_background.xml +10 -10
  31. package/android/src/main/res/drawable/ic_outline_lock.xml +5 -5
  32. package/android/src/main/res/drawable/ic_outline_lock_open.xml +5 -5
  33. package/android/src/main/res/drawable/ic_pip_white.xml +5 -5
  34. package/android/src/main/res/drawable/ic_views.xml +18 -18
  35. package/android/src/main/res/drawable/ic_zoom.xml +5 -5
  36. package/android/src/main/res/layout/bridge_layout_main.xml +15 -15
  37. package/android/src/main/res/layout/exo_playback_control_view.xml +289 -289
  38. package/android/src/main/res/layout/exoplayer_layout_youtube.xml +361 -361
  39. package/android/src/main/res/layout/fragment_fs_exoplayer.xml +50 -50
  40. package/android/src/main/res/layout/fragment_picker_video.xml +21 -21
  41. package/android/src/main/res/layout/row_video.xml +76 -76
  42. package/android/src/main/res/values/colors.xml +14 -14
  43. package/android/src/main/res/values/strings.xml +3 -3
  44. package/android/src/main/res/values/styles.xml +3 -3
  45. package/dist/docs.json +14 -14
  46. package/ios/Plugin/CapacitorVideoPlayer.swift +63 -63
  47. package/ios/Plugin/CapacitorVideoPlayerPlugin.h +10 -10
  48. package/ios/Plugin/CapacitorVideoPlayerPlugin.m +22 -22
  49. package/ios/Plugin/CapacitorVideoPlayerPlugin.swift +631 -631
  50. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.AVPlayerViewController.swift +59 -59
  51. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.File.swift +126 -126
  52. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Fullscreen.swift +94 -94
  53. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Notifications.swift +140 -140
  54. package/ios/Plugin/Extensions/CapacitorVideoPlayerPlugin.Observers.swift +180 -180
  55. package/ios/Plugin/Info.plist +24 -24
  56. package/ios/Plugin/VideoPicker/VideoHelper.swift +127 -127
  57. package/ios/Plugin/VideoPicker/VideoPickerViewController.swift +144 -144
  58. package/ios/Plugin/VideoPlayer/Extensions/AVURLAsset.swift +18 -18
  59. package/ios/Plugin/VideoPlayer/Extensions/AllOrientationAVPlayerController.swift +12 -12
  60. package/ios/Plugin/VideoPlayer/Extensions/CMTime.swift +23 -23
  61. package/ios/Plugin/VideoPlayer/Extensions/LandscapeAVPlayerController.swift +12 -12
  62. package/ios/Plugin/VideoPlayer/Extensions/Notification.Name.swift +18 -18
  63. package/ios/Plugin/VideoPlayer/Extensions/PortraitAVPlayerController.swift +12 -12
  64. package/ios/Plugin/VideoPlayer/Extensions/View.swift +54 -54
  65. package/ios/Plugin/VideoPlayer/FullScreenVideoPlayerView.swift +601 -601
  66. package/ios/Plugin/VideoPlayer/Models/Video.swift +28 -28
  67. package/ios/Plugin/VideoPlayer/Models/VideoModel.swift +42 -42
  68. package/package.json +92 -92
  69. package/readme.md +196 -190
@@ -1,361 +1,361 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
- xmlns:app="http://schemas.android.com/apk/res-auto"
4
- xmlns:tool="http://schemas.android.com/tools"
5
- android:layout_width="match_parent"
6
- android:layout_height="match_parent"
7
- android:background="#59000000"
8
- android:visibility="visible"
9
- app:layout_constraintEnd_toEndOf="parent"
10
- app:layout_constraintStart_toStartOf="parent"
11
- app:layout_constraintTop_toTopOf="parent">
12
-
13
-
14
- <androidx.constraintlayout.widget.ConstraintLayout
15
- android:id="@+id/layout_header_view"
16
- android:layout_width="0dp"
17
- android:layout_height="wrap_content"
18
- android:layout_marginTop="10dp"
19
- android:layout_marginEnd="20dp"
20
- android:orientation="horizontal"
21
- app:layout_constraintEnd_toStartOf="@+id/right_buttons"
22
- app:layout_constraintStart_toStartOf="parent"
23
- app:layout_constraintTop_toTopOf="parent">
24
-
25
- <ImageButton
26
- android:id="@+id/exo_close"
27
- android:layout_width="48dp"
28
- android:layout_height="48dp"
29
- android:layout_gravity="center"
30
- android:background="?actionBarItemBackground"
31
- android:ellipsize="end"
32
- android:scaleX="1.3"
33
- android:scaleY="1.3"
34
- android:src="@drawable/ic_arrow_left"
35
- tool:ignore="MissingConstraints"
36
- android:contentDescription="Back button"/>
37
-
38
- <androidx.appcompat.widget.AppCompatTextView
39
- android:id="@+id/header_tv"
40
- android:layout_width="match_parent"
41
- android:layout_height="wrap_content"
42
- android:layout_gravity="center"
43
- android:ellipsize="end"
44
- android:maxLines="2"
45
- android:paddingStart="50dp"
46
-
47
- android:text="Main text title"
48
- android:textColor="@color/white"
49
- android:textSize="18sp"
50
- app:layout_constraintBottom_toTopOf="@id/header_below"
51
- app:layout_constraintStart_toEndOf="@id/exo_close"
52
- app:layout_constraintTop_toTopOf="parent"
53
-
54
- app:layout_constraintWidth_max="wrap" />
55
-
56
- <androidx.appcompat.widget.AppCompatTextView
57
- android:id="@+id/header_below"
58
- android:layout_width="match_parent"
59
- android:layout_height="wrap_content"
60
- android:layout_gravity="center"
61
- android:ellipsize="end"
62
- android:maxLines="2"
63
- android:paddingStart="50dp"
64
- android:text="Subtitle"
65
- android:textColor="@color/white"
66
- android:textSize="12sp"
67
- app:layout_constraintTop_toBottomOf="@+id/header_tv"
68
- app:layout_constraintStart_toEndOf="@id/exo_close"
69
- app:layout_constraintWidth_max="wrap"
70
- app:layout_constraintWidth_percent="0.9" />
71
-
72
-
73
- </androidx.constraintlayout.widget.ConstraintLayout>
74
-
75
- <LinearLayout
76
- android:id="@+id/right_buttons"
77
- android:layout_width="wrap_content"
78
- android:layout_height="wrap_content"
79
- android:layout_marginTop="10dp"
80
- app:layout_constraintTop_toTopOf="parent"
81
- app:layout_constraintEnd_toEndOf="@id/lock_layout"
82
- app:layout_constraintStart_toEndOf="@id/layout_header_view">
83
-
84
- <androidx.mediarouter.app.MediaRouteButton
85
- android:id="@+id/media_route_button"
86
- android:layout_width="48dp"
87
- android:layout_height="48dp"
88
- android:layout_weight="1"
89
- android:mediaRouteTypes="user"
90
- android:background="?actionBarItemBackground"
91
- app:layout_constraintTop_toTopOf="parent"
92
- app:layout_constraintStart_toStartOf="parent"
93
- app:layout_constraintEnd_toStartOf="@id/exo_pip"
94
- android:visibility="gone"/>
95
-
96
- <ImageButton
97
- android:id="@+id/exo_pip"
98
- android:layout_width="48dp"
99
- android:layout_height="48dp"
100
- android:background="?actionBarItemBackground"
101
- android:src="@drawable/ic_pip_white"
102
- app:layout_constraintEnd_toStartOf="@id/exo_resize"
103
- app:layout_constraintTop_toTopOf="parent"
104
- app:layout_constraintStart_toEndOf="@id/media_route_button"
105
- app:layout_constraintBottom_toBottomOf="parent"
106
- android:visibility="gone"
107
- android:contentDescription="Picture in picture button"/>
108
-
109
- <ImageButton
110
- android:id="@+id/exo_resize"
111
- android:layout_width="48dp"
112
- android:layout_height="48dp"
113
- android:layout_gravity="center"
114
- android:background="?actionBarItemBackground"
115
- android:src="@drawable/ic_expand"
116
- app:layout_constraintEnd_toEndOf="parent"
117
- app:layout_constraintTop_toTopOf="parent"
118
- app:layout_constraintStart_toEndOf="@id/exo_pip"
119
- app:layout_constraintBottom_toBottomOf="parent"
120
- android:visibility="gone"
121
- android:contentDescription="Resize button"/>
122
-
123
- </LinearLayout>
124
-
125
- <LinearLayout
126
- android:id="@+id/lock_layout"
127
- android:layout_width="wrap_content"
128
- android:layout_height="wrap_content"
129
- android:layout_marginTop="10dp"
130
- app:layout_constraintTop_toTopOf="parent"
131
- app:layout_constraintEnd_toEndOf="parent"
132
- app:layout_constraintStart_toEndOf="@id/right_buttons">
133
-
134
- <ImageButton
135
- android:id="@+id/player_lock"
136
- android:layout_width="48dp"
137
- android:layout_height="48dp"
138
- android:layout_gravity="center"
139
- android:background="?actionBarItemBackground"
140
- app:layout_constraintEnd_toEndOf="parent"
141
- app:layout_constraintTop_toTopOf="parent"
142
- app:layout_constraintStart_toEndOf="parent"
143
- app:layout_constraintBottom_toBottomOf="parent"
144
- android:src="@drawable/ic_outline_lock"
145
- android:visibility="gone"
146
- android:contentDescription="Lock button"/>
147
- </LinearLayout>
148
-
149
-
150
- <androidx.constraintlayout.widget.Barrier
151
- android:id="@+id/barrier_left"
152
- android:layout_width="wrap_content"
153
- android:layout_height="wrap_content"
154
- app:barrierDirection="left"
155
- app:constraint_referenced_ids="exo_pause,exo_play" />
156
-
157
- <ImageButton
158
- android:id="@+id/exo_rew"
159
- style="@style/ExoMediaButton.Rewind"
160
- android:layout_marginRight="40dp"
161
- android:src="@drawable/ic_exo_icon_rewind"
162
- android:visibility="visible"
163
- app:layout_constraintBottom_toBottomOf="@id/exo_play"
164
- app:layout_constraintRight_toLeftOf="@+id/barrier_left"
165
- app:layout_constraintTop_toTopOf="@id/exo_play"
166
- android:background="?actionBarItemBackground"/>
167
-
168
- <ImageButton
169
- android:id="@+id/exo_ffwd"
170
- style="@style/ExoMediaButton.FastForward"
171
- android:layout_marginLeft="40dp"
172
- android:src="@drawable/ic_exo_icon_fastforward"
173
- android:visibility="visible"
174
- app:layout_constraintBottom_toBottomOf="@id/exo_play"
175
- app:layout_constraintLeft_toRightOf="@+id/barrier_right"
176
- app:layout_constraintTop_toTopOf="@id/exo_play"
177
- android:background="?actionBarItemBackground"/>
178
-
179
- <androidx.constraintlayout.widget.Barrier
180
- android:id="@+id/barrier_right"
181
- android:layout_width="wrap_content"
182
- android:layout_height="wrap_content"
183
- app:barrierDirection="right"
184
- app:constraint_referenced_ids="exo_pause,exo_play" />
185
-
186
- <ImageButton
187
- android:id="@+id/exo_play"
188
- style="@style/ExoMediaButton.Play"
189
- android:layout_width="56dp"
190
- android:layout_height="56dp"
191
- android:src="@drawable/ic_exo_icon_play"
192
- app:layout_constraintBottom_toBottomOf="parent"
193
- app:layout_constraintEnd_toEndOf="parent"
194
- app:layout_constraintStart_toStartOf="parent"
195
- app:layout_constraintTop_toTopOf="parent"
196
- android:background="?actionBarItemBackground"/>
197
-
198
- <ImageButton
199
- android:id="@+id/exo_pause"
200
- style="@style/ExoMediaButton.Pause"
201
- android:layout_width="56dp"
202
- android:layout_height="56dp"
203
- android:src="@drawable/ic_exo_icon_pause"
204
- app:layout_constraintBottom_toBottomOf="parent"
205
- app:layout_constraintEnd_toEndOf="parent"
206
- app:layout_constraintStart_toStartOf="parent"
207
- app:layout_constraintTop_toTopOf="parent"
208
- android:background="?actionBarItemBackground"/>
209
-
210
- <LinearLayout
211
- android:id="@+id/cast_info"
212
- android:layout_width="match_parent"
213
- android:layout_height="wrap_content"
214
- android:layout_marginStart="20dp"
215
- android:layout_marginBottom="10dp"
216
- android:layout_marginEnd="20dp"
217
- android:orientation="horizontal"
218
- app:layout_constraintBottom_toTopOf="@+id/videoTimeContainer"
219
- app:layout_constraintEnd_toEndOf="parent"
220
- app:layout_constraintStart_toStartOf="parent">
221
-
222
- <androidx.appcompat.widget.AppCompatTextView
223
- android:id="@+id/cast_message"
224
- android:layout_width="wrap_content"
225
- android:layout_height="wrap_content"
226
- android:layout_gravity="center"
227
- android:maxLines="2"
228
- android:textColor="@color/white"
229
- android:layout_marginEnd="10dp"
230
- android:textSize="18sp"
231
- app:layout_constraintStart_toStartOf="parent"
232
- app:layout_constraintTop_toTopOf="parent"
233
- app:layout_constraintWidth_max="wrap"
234
- app:layout_constraintWidth_percent="0.9"
235
- android:visibility="gone"
236
- android:text="Casting Video" />
237
-
238
- <LinearLayout
239
- android:id="@+id/quality"
240
- android:layout_width="wrap_content"
241
- android:layout_height="wrap_content"
242
- android:orientation="horizontal"
243
- app:layout_constraintStart_toEndOf="parent"
244
- app:layout_constraintTop_toBottomOf="@id/layout_header_view">
245
-
246
- <ImageView
247
- android:id="@+id/quality_icon"
248
- android:layout_width="wrap_content"
249
- android:layout_height="wrap_content"
250
- android:layout_gravity="center"
251
- android:src="@drawable/ic_baseline_lq"
252
- android:visibility="gone"
253
- app:layout_constraintTop_toBottomOf="@+id/header_below"
254
- app:layout_constraintStart_toStartOf="parent"
255
- app:layout_constraintWidth_max="wrap"/>
256
-
257
- <androidx.appcompat.widget.AppCompatTextView
258
- android:id="@+id/resolution_label"
259
- android:layout_width="wrap_content"
260
- android:layout_height="wrap_content"
261
- android:layout_gravity="center"
262
- android:ellipsize="end"
263
- android:maxLines="1"
264
- android:text="1280x720p"
265
- android:paddingStart="3dp"
266
- android:textColor="@color/white"
267
- android:textSize="12sp"
268
- android:visibility="gone"
269
- app:layout_constraintTop_toBottomOf="@+id/header_below"
270
- app:layout_constraintStart_toEndOf="@id/quality_icon"
271
- app:layout_constraintWidth_max="wrap"
272
- app:layout_constraintWidth_percent="0.9" />
273
-
274
- </LinearLayout>
275
-
276
- </LinearLayout>
277
-
278
-
279
- <LinearLayout
280
- android:id="@+id/videoTimeContainer"
281
- android:layout_width="match_parent"
282
- android:layout_height="wrap_content"
283
- android:layout_marginStart="20dp"
284
- android:layout_marginEnd="20dp"
285
- android:layout_marginBottom="10dp"
286
- android:orientation="horizontal"
287
- app:layout_constraintBottom_toBottomOf="parent"
288
- app:layout_constraintEnd_toEndOf="parent"
289
- app:layout_constraintStart_toStartOf="parent">
290
-
291
- <TextView
292
- android:id="@id/exo_position"
293
- android:layout_width="wrap_content"
294
- android:layout_height="wrap_content"
295
- android:layout_gravity="center"
296
- android:textColor="@color/white"
297
- android:textSize="14sp"
298
- app:layout_constraintBottom_toBottomOf="@id/exo_progress"
299
- app:layout_constraintStart_toStartOf="parent"
300
- app:layout_constraintTop_toTopOf="@+id/exo_progress"
301
- tool:text="00:00" />
302
-
303
- <androidx.media3.ui.DefaultTimeBar
304
- android:id="@+id/exo_progress"
305
- android:layout_width="0dp"
306
- android:layout_height="wrap_content"
307
- android:layout_gravity="center"
308
-
309
- android:layout_weight="1"
310
- app:buffered_color="@color/white_50"
311
- app:played_color="#FFFFFF"
312
- app:scrubber_color="#FFFFFF"
313
- app:unplayed_color="@color/white_20" />
314
-
315
- <TextView
316
- android:id="@id/exo_duration"
317
- android:layout_width="wrap_content"
318
- android:layout_height="wrap_content"
319
- android:layout_gravity="center_vertical"
320
- android:gravity="right"
321
- android:textColor="@color/white"
322
- android:textSize="14sp"
323
- app:layout_constraintBottom_toBottomOf="@id/exo_progress"
324
- app:layout_constraintStart_toEndOf="@+id/exo_progress"
325
- app:layout_constraintTop_toTopOf="@+id/exo_progress"
326
- tool:text="00:00" />
327
-
328
- </LinearLayout>
329
-
330
- <androidx.constraintlayout.widget.Guideline
331
- android:id="@+id/guideline"
332
- android:layout_width="wrap_content"
333
- android:layout_height="wrap_content"
334
- android:orientation="horizontal"
335
- app:layout_constraintGuide_begin="10dp" />
336
-
337
- <androidx.constraintlayout.widget.Guideline
338
- android:id="@+id/guideline2"
339
- android:layout_width="wrap_content"
340
- android:layout_height="wrap_content"
341
- android:orientation="vertical"
342
- app:layout_constraintGuide_begin="20dp" />
343
-
344
- <!-- add horizontal end guide line -->
345
- <androidx.constraintlayout.widget.Guideline
346
- android:id="@+id/guideline3"
347
- android:layout_width="wrap_content"
348
- android:layout_height="wrap_content"
349
- android:orientation="horizontal"
350
- app:layout_constraintGuide_end="10dp" />
351
-
352
- <!-- add vertical end guide line -->
353
- <androidx.constraintlayout.widget.Guideline
354
- android:id="@+id/guideline4"
355
- android:layout_width="wrap_content"
356
- android:layout_height="wrap_content"
357
- android:orientation="vertical"
358
- app:layout_constraintGuide_end="20dp" />
359
-
360
-
361
- </androidx.constraintlayout.widget.ConstraintLayout>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:app="http://schemas.android.com/apk/res-auto"
4
+ xmlns:tool="http://schemas.android.com/tools"
5
+ android:layout_width="match_parent"
6
+ android:layout_height="match_parent"
7
+ android:background="#59000000"
8
+ android:visibility="visible"
9
+ app:layout_constraintEnd_toEndOf="parent"
10
+ app:layout_constraintStart_toStartOf="parent"
11
+ app:layout_constraintTop_toTopOf="parent">
12
+
13
+
14
+ <androidx.constraintlayout.widget.ConstraintLayout
15
+ android:id="@+id/layout_header_view"
16
+ android:layout_width="0dp"
17
+ android:layout_height="wrap_content"
18
+ android:layout_marginTop="10dp"
19
+ android:layout_marginEnd="20dp"
20
+ android:orientation="horizontal"
21
+ app:layout_constraintEnd_toStartOf="@+id/right_buttons"
22
+ app:layout_constraintStart_toStartOf="parent"
23
+ app:layout_constraintTop_toTopOf="parent">
24
+
25
+ <ImageButton
26
+ android:id="@+id/exo_close"
27
+ android:layout_width="48dp"
28
+ android:layout_height="48dp"
29
+ android:layout_gravity="center"
30
+ android:background="?actionBarItemBackground"
31
+ android:ellipsize="end"
32
+ android:scaleX="1.3"
33
+ android:scaleY="1.3"
34
+ android:src="@drawable/ic_arrow_left"
35
+ tool:ignore="MissingConstraints"
36
+ android:contentDescription="Back button"/>
37
+
38
+ <androidx.appcompat.widget.AppCompatTextView
39
+ android:id="@+id/header_tv"
40
+ android:layout_width="match_parent"
41
+ android:layout_height="wrap_content"
42
+ android:layout_gravity="center"
43
+ android:ellipsize="end"
44
+ android:maxLines="2"
45
+ android:paddingStart="50dp"
46
+
47
+ android:text="Main text title"
48
+ android:textColor="@color/white"
49
+ android:textSize="18sp"
50
+ app:layout_constraintBottom_toTopOf="@id/header_below"
51
+ app:layout_constraintStart_toEndOf="@id/exo_close"
52
+ app:layout_constraintTop_toTopOf="parent"
53
+
54
+ app:layout_constraintWidth_max="wrap" />
55
+
56
+ <androidx.appcompat.widget.AppCompatTextView
57
+ android:id="@+id/header_below"
58
+ android:layout_width="match_parent"
59
+ android:layout_height="wrap_content"
60
+ android:layout_gravity="center"
61
+ android:ellipsize="end"
62
+ android:maxLines="2"
63
+ android:paddingStart="50dp"
64
+ android:text="Subtitle"
65
+ android:textColor="@color/white"
66
+ android:textSize="12sp"
67
+ app:layout_constraintTop_toBottomOf="@+id/header_tv"
68
+ app:layout_constraintStart_toEndOf="@id/exo_close"
69
+ app:layout_constraintWidth_max="wrap"
70
+ app:layout_constraintWidth_percent="0.9" />
71
+
72
+
73
+ </androidx.constraintlayout.widget.ConstraintLayout>
74
+
75
+ <LinearLayout
76
+ android:id="@+id/right_buttons"
77
+ android:layout_width="wrap_content"
78
+ android:layout_height="wrap_content"
79
+ android:layout_marginTop="10dp"
80
+ app:layout_constraintTop_toTopOf="parent"
81
+ app:layout_constraintEnd_toEndOf="@id/lock_layout"
82
+ app:layout_constraintStart_toEndOf="@id/layout_header_view">
83
+
84
+ <androidx.mediarouter.app.MediaRouteButton
85
+ android:id="@+id/media_route_button"
86
+ android:layout_width="48dp"
87
+ android:layout_height="48dp"
88
+ android:layout_weight="1"
89
+ android:mediaRouteTypes="user"
90
+ android:background="?actionBarItemBackground"
91
+ app:layout_constraintTop_toTopOf="parent"
92
+ app:layout_constraintStart_toStartOf="parent"
93
+ app:layout_constraintEnd_toStartOf="@id/exo_pip"
94
+ android:visibility="gone"/>
95
+
96
+ <ImageButton
97
+ android:id="@+id/exo_pip"
98
+ android:layout_width="48dp"
99
+ android:layout_height="48dp"
100
+ android:background="?actionBarItemBackground"
101
+ android:src="@drawable/ic_pip_white"
102
+ app:layout_constraintEnd_toStartOf="@id/exo_resize"
103
+ app:layout_constraintTop_toTopOf="parent"
104
+ app:layout_constraintStart_toEndOf="@id/media_route_button"
105
+ app:layout_constraintBottom_toBottomOf="parent"
106
+ android:visibility="gone"
107
+ android:contentDescription="Picture in picture button"/>
108
+
109
+ <ImageButton
110
+ android:id="@+id/exo_resize"
111
+ android:layout_width="48dp"
112
+ android:layout_height="48dp"
113
+ android:layout_gravity="center"
114
+ android:background="?actionBarItemBackground"
115
+ android:src="@drawable/ic_expand"
116
+ app:layout_constraintEnd_toEndOf="parent"
117
+ app:layout_constraintTop_toTopOf="parent"
118
+ app:layout_constraintStart_toEndOf="@id/exo_pip"
119
+ app:layout_constraintBottom_toBottomOf="parent"
120
+ android:visibility="gone"
121
+ android:contentDescription="Resize button"/>
122
+
123
+ </LinearLayout>
124
+
125
+ <LinearLayout
126
+ android:id="@+id/lock_layout"
127
+ android:layout_width="wrap_content"
128
+ android:layout_height="wrap_content"
129
+ android:layout_marginTop="10dp"
130
+ app:layout_constraintTop_toTopOf="parent"
131
+ app:layout_constraintEnd_toEndOf="parent"
132
+ app:layout_constraintStart_toEndOf="@id/right_buttons">
133
+
134
+ <ImageButton
135
+ android:id="@+id/player_lock"
136
+ android:layout_width="48dp"
137
+ android:layout_height="48dp"
138
+ android:layout_gravity="center"
139
+ android:background="?actionBarItemBackground"
140
+ app:layout_constraintEnd_toEndOf="parent"
141
+ app:layout_constraintTop_toTopOf="parent"
142
+ app:layout_constraintStart_toEndOf="parent"
143
+ app:layout_constraintBottom_toBottomOf="parent"
144
+ android:src="@drawable/ic_outline_lock"
145
+ android:visibility="gone"
146
+ android:contentDescription="Lock button"/>
147
+ </LinearLayout>
148
+
149
+
150
+ <androidx.constraintlayout.widget.Barrier
151
+ android:id="@+id/barrier_left"
152
+ android:layout_width="wrap_content"
153
+ android:layout_height="wrap_content"
154
+ app:barrierDirection="left"
155
+ app:constraint_referenced_ids="exo_pause,exo_play" />
156
+
157
+ <ImageButton
158
+ android:id="@+id/exo_rew"
159
+ style="@style/ExoMediaButton.Rewind"
160
+ android:layout_marginRight="40dp"
161
+ android:src="@drawable/ic_exo_icon_rewind"
162
+ android:visibility="visible"
163
+ app:layout_constraintBottom_toBottomOf="@id/exo_play"
164
+ app:layout_constraintRight_toLeftOf="@+id/barrier_left"
165
+ app:layout_constraintTop_toTopOf="@id/exo_play"
166
+ android:background="?actionBarItemBackground"/>
167
+
168
+ <ImageButton
169
+ android:id="@+id/exo_ffwd"
170
+ style="@style/ExoMediaButton.FastForward"
171
+ android:layout_marginLeft="40dp"
172
+ android:src="@drawable/ic_exo_icon_fastforward"
173
+ android:visibility="visible"
174
+ app:layout_constraintBottom_toBottomOf="@id/exo_play"
175
+ app:layout_constraintLeft_toRightOf="@+id/barrier_right"
176
+ app:layout_constraintTop_toTopOf="@id/exo_play"
177
+ android:background="?actionBarItemBackground"/>
178
+
179
+ <androidx.constraintlayout.widget.Barrier
180
+ android:id="@+id/barrier_right"
181
+ android:layout_width="wrap_content"
182
+ android:layout_height="wrap_content"
183
+ app:barrierDirection="right"
184
+ app:constraint_referenced_ids="exo_pause,exo_play" />
185
+
186
+ <ImageButton
187
+ android:id="@+id/exo_play"
188
+ style="@style/ExoMediaButton.Play"
189
+ android:layout_width="56dp"
190
+ android:layout_height="56dp"
191
+ android:src="@drawable/ic_exo_icon_play"
192
+ app:layout_constraintBottom_toBottomOf="parent"
193
+ app:layout_constraintEnd_toEndOf="parent"
194
+ app:layout_constraintStart_toStartOf="parent"
195
+ app:layout_constraintTop_toTopOf="parent"
196
+ android:background="?actionBarItemBackground"/>
197
+
198
+ <ImageButton
199
+ android:id="@+id/exo_pause"
200
+ style="@style/ExoMediaButton.Pause"
201
+ android:layout_width="56dp"
202
+ android:layout_height="56dp"
203
+ android:src="@drawable/ic_exo_icon_pause"
204
+ app:layout_constraintBottom_toBottomOf="parent"
205
+ app:layout_constraintEnd_toEndOf="parent"
206
+ app:layout_constraintStart_toStartOf="parent"
207
+ app:layout_constraintTop_toTopOf="parent"
208
+ android:background="?actionBarItemBackground"/>
209
+
210
+ <LinearLayout
211
+ android:id="@+id/cast_info"
212
+ android:layout_width="match_parent"
213
+ android:layout_height="wrap_content"
214
+ android:layout_marginStart="20dp"
215
+ android:layout_marginBottom="10dp"
216
+ android:layout_marginEnd="20dp"
217
+ android:orientation="horizontal"
218
+ app:layout_constraintBottom_toTopOf="@+id/videoTimeContainer"
219
+ app:layout_constraintEnd_toEndOf="parent"
220
+ app:layout_constraintStart_toStartOf="parent">
221
+
222
+ <androidx.appcompat.widget.AppCompatTextView
223
+ android:id="@+id/cast_message"
224
+ android:layout_width="wrap_content"
225
+ android:layout_height="wrap_content"
226
+ android:layout_gravity="center"
227
+ android:maxLines="2"
228
+ android:textColor="@color/white"
229
+ android:layout_marginEnd="10dp"
230
+ android:textSize="18sp"
231
+ app:layout_constraintStart_toStartOf="parent"
232
+ app:layout_constraintTop_toTopOf="parent"
233
+ app:layout_constraintWidth_max="wrap"
234
+ app:layout_constraintWidth_percent="0.9"
235
+ android:visibility="gone"
236
+ android:text="Casting Video" />
237
+
238
+ <LinearLayout
239
+ android:id="@+id/quality"
240
+ android:layout_width="wrap_content"
241
+ android:layout_height="wrap_content"
242
+ android:orientation="horizontal"
243
+ app:layout_constraintStart_toEndOf="parent"
244
+ app:layout_constraintTop_toBottomOf="@id/layout_header_view">
245
+
246
+ <ImageView
247
+ android:id="@+id/quality_icon"
248
+ android:layout_width="wrap_content"
249
+ android:layout_height="wrap_content"
250
+ android:layout_gravity="center"
251
+ android:src="@drawable/ic_baseline_lq"
252
+ android:visibility="gone"
253
+ app:layout_constraintTop_toBottomOf="@+id/header_below"
254
+ app:layout_constraintStart_toStartOf="parent"
255
+ app:layout_constraintWidth_max="wrap"/>
256
+
257
+ <androidx.appcompat.widget.AppCompatTextView
258
+ android:id="@+id/resolution_label"
259
+ android:layout_width="wrap_content"
260
+ android:layout_height="wrap_content"
261
+ android:layout_gravity="center"
262
+ android:ellipsize="end"
263
+ android:maxLines="1"
264
+ android:text="1280x720p"
265
+ android:paddingStart="3dp"
266
+ android:textColor="@color/white"
267
+ android:textSize="12sp"
268
+ android:visibility="gone"
269
+ app:layout_constraintTop_toBottomOf="@+id/header_below"
270
+ app:layout_constraintStart_toEndOf="@id/quality_icon"
271
+ app:layout_constraintWidth_max="wrap"
272
+ app:layout_constraintWidth_percent="0.9" />
273
+
274
+ </LinearLayout>
275
+
276
+ </LinearLayout>
277
+
278
+
279
+ <LinearLayout
280
+ android:id="@+id/videoTimeContainer"
281
+ android:layout_width="match_parent"
282
+ android:layout_height="wrap_content"
283
+ android:layout_marginStart="20dp"
284
+ android:layout_marginEnd="20dp"
285
+ android:layout_marginBottom="10dp"
286
+ android:orientation="horizontal"
287
+ app:layout_constraintBottom_toBottomOf="parent"
288
+ app:layout_constraintEnd_toEndOf="parent"
289
+ app:layout_constraintStart_toStartOf="parent">
290
+
291
+ <TextView
292
+ android:id="@id/exo_position"
293
+ android:layout_width="wrap_content"
294
+ android:layout_height="wrap_content"
295
+ android:layout_gravity="center"
296
+ android:textColor="@color/white"
297
+ android:textSize="14sp"
298
+ app:layout_constraintBottom_toBottomOf="@id/exo_progress"
299
+ app:layout_constraintStart_toStartOf="parent"
300
+ app:layout_constraintTop_toTopOf="@+id/exo_progress"
301
+ tool:text="00:00" />
302
+
303
+ <androidx.media3.ui.DefaultTimeBar
304
+ android:id="@+id/exo_progress"
305
+ android:layout_width="0dp"
306
+ android:layout_height="wrap_content"
307
+ android:layout_gravity="center"
308
+
309
+ android:layout_weight="1"
310
+ app:buffered_color="@color/white_50"
311
+ app:played_color="#FFFFFF"
312
+ app:scrubber_color="#FFFFFF"
313
+ app:unplayed_color="@color/white_20" />
314
+
315
+ <TextView
316
+ android:id="@id/exo_duration"
317
+ android:layout_width="wrap_content"
318
+ android:layout_height="wrap_content"
319
+ android:layout_gravity="center_vertical"
320
+ android:gravity="right"
321
+ android:textColor="@color/white"
322
+ android:textSize="14sp"
323
+ app:layout_constraintBottom_toBottomOf="@id/exo_progress"
324
+ app:layout_constraintStart_toEndOf="@+id/exo_progress"
325
+ app:layout_constraintTop_toTopOf="@+id/exo_progress"
326
+ tool:text="00:00" />
327
+
328
+ </LinearLayout>
329
+
330
+ <androidx.constraintlayout.widget.Guideline
331
+ android:id="@+id/guideline"
332
+ android:layout_width="wrap_content"
333
+ android:layout_height="wrap_content"
334
+ android:orientation="horizontal"
335
+ app:layout_constraintGuide_begin="10dp" />
336
+
337
+ <androidx.constraintlayout.widget.Guideline
338
+ android:id="@+id/guideline2"
339
+ android:layout_width="wrap_content"
340
+ android:layout_height="wrap_content"
341
+ android:orientation="vertical"
342
+ app:layout_constraintGuide_begin="20dp" />
343
+
344
+ <!-- add horizontal end guide line -->
345
+ <androidx.constraintlayout.widget.Guideline
346
+ android:id="@+id/guideline3"
347
+ android:layout_width="wrap_content"
348
+ android:layout_height="wrap_content"
349
+ android:orientation="horizontal"
350
+ app:layout_constraintGuide_end="10dp" />
351
+
352
+ <!-- add vertical end guide line -->
353
+ <androidx.constraintlayout.widget.Guideline
354
+ android:id="@+id/guideline4"
355
+ android:layout_width="wrap_content"
356
+ android:layout_height="wrap_content"
357
+ android:orientation="vertical"
358
+ app:layout_constraintGuide_end="20dp" />
359
+
360
+
361
+ </androidx.constraintlayout.widget.ConstraintLayout>