@capgo/capacitor-video-player 8.2.11 → 8.2.12
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.
- package/README.md +16 -5
- package/android/src/main/java/com/capgo/videoplayer/FullscreenExoPlayerFragment.java +25 -14
- package/android/src/main/java/com/capgo/videoplayer/PickerVideo/VideoRecyclerViewHolder.java +7 -9
- package/android/src/main/java/com/capgo/videoplayer/VideoPlayerPlugin.java +403 -447
- package/dist/docs.json +16 -21
- package/dist/esm/definitions.d.ts +9 -9
- package/dist/esm/definitions.js.map +1 -1
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/VideoPlayerPlugin/VideoPlayerPlugin.swift +1 -1
- package/package.json +2 -2
|
@@ -46,7 +46,7 @@ import org.json.JSONObject;
|
|
|
46
46
|
)
|
|
47
47
|
public class VideoPlayerPlugin extends Plugin {
|
|
48
48
|
|
|
49
|
-
private final String pluginVersion = "8.2.
|
|
49
|
+
private final String pluginVersion = "8.2.12";
|
|
50
50
|
|
|
51
51
|
// Permission alias constants
|
|
52
52
|
private static final String PERMISSION_DENIED_ERROR = "Unable to access media videos, user denied permission request";
|
|
@@ -293,27 +293,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
293
293
|
return;
|
|
294
294
|
}
|
|
295
295
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
296
|
-
bridge
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
312
|
-
call.resolve(ret);
|
|
313
|
-
}
|
|
296
|
+
bridge.getActivity().runOnUiThread(
|
|
297
|
+
new Runnable() {
|
|
298
|
+
@Override
|
|
299
|
+
public void run() {
|
|
300
|
+
JSObject ret = new JSObject();
|
|
301
|
+
ret.put("method", "isPlaying");
|
|
302
|
+
if (fsFragment != null) {
|
|
303
|
+
boolean playing = fsFragment.isPlaying();
|
|
304
|
+
ret.put("result", true);
|
|
305
|
+
ret.put("value", playing);
|
|
306
|
+
call.resolve(ret);
|
|
307
|
+
} else {
|
|
308
|
+
ret.put("result", false);
|
|
309
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
310
|
+
call.resolve(ret);
|
|
314
311
|
}
|
|
315
312
|
}
|
|
316
|
-
|
|
313
|
+
}
|
|
314
|
+
);
|
|
317
315
|
} else {
|
|
318
316
|
ret.put("result", false);
|
|
319
317
|
ret.put("message", "player is not defined");
|
|
@@ -334,28 +332,26 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
334
332
|
return;
|
|
335
333
|
}
|
|
336
334
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
337
|
-
bridge
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
354
|
-
call.resolve(ret);
|
|
355
|
-
}
|
|
335
|
+
bridge.getActivity().runOnUiThread(
|
|
336
|
+
new Runnable() {
|
|
337
|
+
@Override
|
|
338
|
+
public void run() {
|
|
339
|
+
JSObject ret = new JSObject();
|
|
340
|
+
ret.put("method", "play");
|
|
341
|
+
if (fsFragment != null) {
|
|
342
|
+
fsFragment.play();
|
|
343
|
+
boolean playing = fsFragment.isPlaying();
|
|
344
|
+
ret.put("result", true);
|
|
345
|
+
ret.put("value", true);
|
|
346
|
+
call.resolve(ret);
|
|
347
|
+
} else {
|
|
348
|
+
ret.put("result", false);
|
|
349
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
350
|
+
call.resolve(ret);
|
|
356
351
|
}
|
|
357
352
|
}
|
|
358
|
-
|
|
353
|
+
}
|
|
354
|
+
);
|
|
359
355
|
} else {
|
|
360
356
|
ret.put("result", false);
|
|
361
357
|
ret.put("message", "player is not defined");
|
|
@@ -376,27 +372,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
376
372
|
return;
|
|
377
373
|
}
|
|
378
374
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
379
|
-
bridge
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
395
|
-
call.resolve(ret);
|
|
396
|
-
}
|
|
375
|
+
bridge.getActivity().runOnUiThread(
|
|
376
|
+
new Runnable() {
|
|
377
|
+
@Override
|
|
378
|
+
public void run() {
|
|
379
|
+
JSObject ret = new JSObject();
|
|
380
|
+
ret.put("method", "pause");
|
|
381
|
+
if (fsFragment != null) {
|
|
382
|
+
fsFragment.pause();
|
|
383
|
+
ret.put("result", true);
|
|
384
|
+
ret.put("value", true);
|
|
385
|
+
call.resolve(ret);
|
|
386
|
+
} else {
|
|
387
|
+
ret.put("result", false);
|
|
388
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
389
|
+
call.resolve(ret);
|
|
397
390
|
}
|
|
398
391
|
}
|
|
399
|
-
|
|
392
|
+
}
|
|
393
|
+
);
|
|
400
394
|
} else {
|
|
401
395
|
ret.put("result", false);
|
|
402
396
|
ret.put("message", "player is not defined");
|
|
@@ -417,27 +411,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
417
411
|
return;
|
|
418
412
|
}
|
|
419
413
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
420
|
-
bridge
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
436
|
-
call.resolve(ret);
|
|
437
|
-
}
|
|
414
|
+
bridge.getActivity().runOnUiThread(
|
|
415
|
+
new Runnable() {
|
|
416
|
+
@Override
|
|
417
|
+
public void run() {
|
|
418
|
+
JSObject ret = new JSObject();
|
|
419
|
+
ret.put("method", "getDuration");
|
|
420
|
+
if (fsFragment != null) {
|
|
421
|
+
int duration = fsFragment.getDuration();
|
|
422
|
+
ret.put("result", true);
|
|
423
|
+
ret.put("value", duration);
|
|
424
|
+
call.resolve(ret);
|
|
425
|
+
} else {
|
|
426
|
+
ret.put("result", false);
|
|
427
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
428
|
+
call.resolve(ret);
|
|
438
429
|
}
|
|
439
430
|
}
|
|
440
|
-
|
|
431
|
+
}
|
|
432
|
+
);
|
|
441
433
|
} else {
|
|
442
434
|
ret.put("result", false);
|
|
443
435
|
ret.put("message", "player is not defined");
|
|
@@ -458,27 +450,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
458
450
|
return;
|
|
459
451
|
}
|
|
460
452
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
461
|
-
bridge
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
477
|
-
call.resolve(ret);
|
|
478
|
-
}
|
|
453
|
+
bridge.getActivity().runOnUiThread(
|
|
454
|
+
new Runnable() {
|
|
455
|
+
@Override
|
|
456
|
+
public void run() {
|
|
457
|
+
JSObject ret = new JSObject();
|
|
458
|
+
ret.put("method", "getCurrentTime");
|
|
459
|
+
if (fsFragment != null) {
|
|
460
|
+
int curTime = fsFragment.getCurrentTime();
|
|
461
|
+
ret.put("result", true);
|
|
462
|
+
ret.put("value", curTime);
|
|
463
|
+
call.resolve(ret);
|
|
464
|
+
} else {
|
|
465
|
+
ret.put("result", false);
|
|
466
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
467
|
+
call.resolve(ret);
|
|
479
468
|
}
|
|
480
469
|
}
|
|
481
|
-
|
|
470
|
+
}
|
|
471
|
+
);
|
|
482
472
|
} else {
|
|
483
473
|
ret.put("result", false);
|
|
484
474
|
ret.put("message", "player is not defined");
|
|
@@ -507,27 +497,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
507
497
|
}
|
|
508
498
|
final int cTime = (int) Math.round(value);
|
|
509
499
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
510
|
-
bridge
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
526
|
-
call.resolve(ret);
|
|
527
|
-
}
|
|
500
|
+
bridge.getActivity().runOnUiThread(
|
|
501
|
+
new Runnable() {
|
|
502
|
+
@Override
|
|
503
|
+
public void run() {
|
|
504
|
+
JSObject ret = new JSObject();
|
|
505
|
+
ret.put("method", "setCurrentTime");
|
|
506
|
+
if (fsFragment != null) {
|
|
507
|
+
fsFragment.setCurrentTime(cTime);
|
|
508
|
+
ret.put("result", true);
|
|
509
|
+
ret.put("value", cTime);
|
|
510
|
+
call.resolve(ret);
|
|
511
|
+
} else {
|
|
512
|
+
ret.put("result", false);
|
|
513
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
514
|
+
call.resolve(ret);
|
|
528
515
|
}
|
|
529
516
|
}
|
|
530
|
-
|
|
517
|
+
}
|
|
518
|
+
);
|
|
531
519
|
} else {
|
|
532
520
|
ret.put("result", false);
|
|
533
521
|
ret.put("message", "player is not defined");
|
|
@@ -548,27 +536,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
548
536
|
return;
|
|
549
537
|
}
|
|
550
538
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
551
|
-
bridge
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
567
|
-
call.resolve(ret);
|
|
568
|
-
}
|
|
539
|
+
bridge.getActivity().runOnUiThread(
|
|
540
|
+
new Runnable() {
|
|
541
|
+
@Override
|
|
542
|
+
public void run() {
|
|
543
|
+
JSObject ret = new JSObject();
|
|
544
|
+
ret.put("method", "getVolume");
|
|
545
|
+
if (fsFragment != null) {
|
|
546
|
+
Float volume = fsFragment.getVolume();
|
|
547
|
+
ret.put("result", true);
|
|
548
|
+
ret.put("value", volume);
|
|
549
|
+
call.resolve(ret);
|
|
550
|
+
} else {
|
|
551
|
+
ret.put("result", false);
|
|
552
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
553
|
+
call.resolve(ret);
|
|
569
554
|
}
|
|
570
555
|
}
|
|
571
|
-
|
|
556
|
+
}
|
|
557
|
+
);
|
|
572
558
|
} else {
|
|
573
559
|
ret.put("result", false);
|
|
574
560
|
ret.put("message", "player is not defined");
|
|
@@ -597,27 +583,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
597
583
|
return;
|
|
598
584
|
}
|
|
599
585
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
600
|
-
bridge
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
616
|
-
call.resolve(ret);
|
|
617
|
-
}
|
|
586
|
+
bridge.getActivity().runOnUiThread(
|
|
587
|
+
new Runnable() {
|
|
588
|
+
@Override
|
|
589
|
+
public void run() {
|
|
590
|
+
JSObject ret = new JSObject();
|
|
591
|
+
ret.put("method", "setVolume");
|
|
592
|
+
if (fsFragment != null) {
|
|
593
|
+
fsFragment.setVolume(volume);
|
|
594
|
+
ret.put("result", true);
|
|
595
|
+
ret.put("value", volume);
|
|
596
|
+
call.resolve(ret);
|
|
597
|
+
} else {
|
|
598
|
+
ret.put("result", false);
|
|
599
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
600
|
+
call.resolve(ret);
|
|
618
601
|
}
|
|
619
602
|
}
|
|
620
|
-
|
|
603
|
+
}
|
|
604
|
+
);
|
|
621
605
|
} else {
|
|
622
606
|
ret.put("result", false);
|
|
623
607
|
ret.put("message", "player is not defined");
|
|
@@ -638,27 +622,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
638
622
|
return;
|
|
639
623
|
}
|
|
640
624
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
641
|
-
bridge
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
657
|
-
call.resolve(ret);
|
|
658
|
-
}
|
|
625
|
+
bridge.getActivity().runOnUiThread(
|
|
626
|
+
new Runnable() {
|
|
627
|
+
@Override
|
|
628
|
+
public void run() {
|
|
629
|
+
JSObject ret = new JSObject();
|
|
630
|
+
ret.put("method", "getMuted");
|
|
631
|
+
if (fsFragment != null) {
|
|
632
|
+
boolean value = fsFragment.getMuted();
|
|
633
|
+
ret.put("result", true);
|
|
634
|
+
ret.put("value", value);
|
|
635
|
+
call.resolve(ret);
|
|
636
|
+
} else {
|
|
637
|
+
ret.put("result", false);
|
|
638
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
639
|
+
call.resolve(ret);
|
|
659
640
|
}
|
|
660
641
|
}
|
|
661
|
-
|
|
642
|
+
}
|
|
643
|
+
);
|
|
662
644
|
} else {
|
|
663
645
|
ret.put("result", false);
|
|
664
646
|
ret.put("message", "player is not defined");
|
|
@@ -687,27 +669,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
687
669
|
}
|
|
688
670
|
final boolean bValue = value;
|
|
689
671
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
690
|
-
bridge
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
706
|
-
call.resolve(ret);
|
|
707
|
-
}
|
|
672
|
+
bridge.getActivity().runOnUiThread(
|
|
673
|
+
new Runnable() {
|
|
674
|
+
@Override
|
|
675
|
+
public void run() {
|
|
676
|
+
JSObject ret = new JSObject();
|
|
677
|
+
ret.put("method", "setMuted");
|
|
678
|
+
if (fsFragment != null) {
|
|
679
|
+
fsFragment.setMuted(bValue);
|
|
680
|
+
ret.put("result", true);
|
|
681
|
+
ret.put("value", bValue);
|
|
682
|
+
call.resolve(ret);
|
|
683
|
+
} else {
|
|
684
|
+
ret.put("result", false);
|
|
685
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
686
|
+
call.resolve(ret);
|
|
708
687
|
}
|
|
709
688
|
}
|
|
710
|
-
|
|
689
|
+
}
|
|
690
|
+
);
|
|
711
691
|
} else {
|
|
712
692
|
ret.put("result", false);
|
|
713
693
|
ret.put("message", "player is not defined");
|
|
@@ -728,27 +708,25 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
728
708
|
return;
|
|
729
709
|
}
|
|
730
710
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
731
|
-
bridge
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
747
|
-
call.resolve(ret);
|
|
748
|
-
}
|
|
711
|
+
bridge.getActivity().runOnUiThread(
|
|
712
|
+
new Runnable() {
|
|
713
|
+
@Override
|
|
714
|
+
public void run() {
|
|
715
|
+
JSObject ret = new JSObject();
|
|
716
|
+
ret.put("method", "getRate");
|
|
717
|
+
if (fsFragment != null) {
|
|
718
|
+
Float rate = fsFragment.getRate();
|
|
719
|
+
ret.put("result", true);
|
|
720
|
+
ret.put("value", rate);
|
|
721
|
+
call.resolve(ret);
|
|
722
|
+
} else {
|
|
723
|
+
ret.put("result", false);
|
|
724
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
725
|
+
call.resolve(ret);
|
|
749
726
|
}
|
|
750
727
|
}
|
|
751
|
-
|
|
728
|
+
}
|
|
729
|
+
);
|
|
752
730
|
} else {
|
|
753
731
|
ret.put("result", false);
|
|
754
732
|
ret.put("message", "player is not defined");
|
|
@@ -782,49 +760,16 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
782
760
|
videoRate = 1f;
|
|
783
761
|
}
|
|
784
762
|
if ("fullscreen".equals(mode) && fsPlayerId.equals(playerId)) {
|
|
785
|
-
bridge
|
|
786
|
-
.getActivity()
|
|
787
|
-
.runOnUiThread(
|
|
788
|
-
new Runnable() {
|
|
789
|
-
@Override
|
|
790
|
-
public void run() {
|
|
791
|
-
JSObject ret = new JSObject();
|
|
792
|
-
ret.put("method", "setRate");
|
|
793
|
-
if (fsFragment != null) {
|
|
794
|
-
fsFragment.setRate(videoRate);
|
|
795
|
-
ret.put("result", true);
|
|
796
|
-
ret.put("value", videoRate);
|
|
797
|
-
call.resolve(ret);
|
|
798
|
-
} else {
|
|
799
|
-
ret.put("result", false);
|
|
800
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
801
|
-
call.resolve(ret);
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
);
|
|
806
|
-
} else {
|
|
807
|
-
ret.put("result", false);
|
|
808
|
-
ret.put("message", "player is not defined");
|
|
809
|
-
call.resolve(ret);
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
@PluginMethod
|
|
814
|
-
public void stopAllPlayers(PluginCall call) {
|
|
815
|
-
this.call = call;
|
|
816
|
-
bridge
|
|
817
|
-
.getActivity()
|
|
818
|
-
.runOnUiThread(
|
|
763
|
+
bridge.getActivity().runOnUiThread(
|
|
819
764
|
new Runnable() {
|
|
820
765
|
@Override
|
|
821
766
|
public void run() {
|
|
822
767
|
JSObject ret = new JSObject();
|
|
823
|
-
ret.put("method", "
|
|
768
|
+
ret.put("method", "setRate");
|
|
824
769
|
if (fsFragment != null) {
|
|
825
|
-
fsFragment.
|
|
770
|
+
fsFragment.setRate(videoRate);
|
|
826
771
|
ret.put("result", true);
|
|
827
|
-
ret.put("value",
|
|
772
|
+
ret.put("value", videoRate);
|
|
828
773
|
call.resolve(ret);
|
|
829
774
|
} else {
|
|
830
775
|
ret.put("result", false);
|
|
@@ -834,153 +779,172 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
834
779
|
}
|
|
835
780
|
}
|
|
836
781
|
);
|
|
782
|
+
} else {
|
|
783
|
+
ret.put("result", false);
|
|
784
|
+
ret.put("message", "player is not defined");
|
|
785
|
+
call.resolve(ret);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
@PluginMethod
|
|
790
|
+
public void stopAllPlayers(PluginCall call) {
|
|
791
|
+
this.call = call;
|
|
792
|
+
bridge.getActivity().runOnUiThread(
|
|
793
|
+
new Runnable() {
|
|
794
|
+
@Override
|
|
795
|
+
public void run() {
|
|
796
|
+
JSObject ret = new JSObject();
|
|
797
|
+
ret.put("method", "stopAllPlayers");
|
|
798
|
+
if (fsFragment != null) {
|
|
799
|
+
fsFragment.pause();
|
|
800
|
+
ret.put("result", true);
|
|
801
|
+
ret.put("value", true);
|
|
802
|
+
call.resolve(ret);
|
|
803
|
+
} else {
|
|
804
|
+
ret.put("result", false);
|
|
805
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
806
|
+
call.resolve(ret);
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
);
|
|
837
811
|
}
|
|
838
812
|
|
|
839
813
|
@PluginMethod
|
|
840
814
|
public void isControllerIsFullyVisible(PluginCall call) {
|
|
841
815
|
this.call = call;
|
|
842
|
-
bridge
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
ret.put("
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
857
|
-
call.resolve(ret);
|
|
858
|
-
}
|
|
816
|
+
bridge.getActivity().runOnUiThread(
|
|
817
|
+
new Runnable() {
|
|
818
|
+
@Override
|
|
819
|
+
public void run() {
|
|
820
|
+
JSObject ret = new JSObject();
|
|
821
|
+
ret.put("method", "isControllerIsFullyVisible");
|
|
822
|
+
if (fsFragment != null) {
|
|
823
|
+
ret.put("result", true);
|
|
824
|
+
ret.put("value", fsFragment.isControllerIsFullyVisible());
|
|
825
|
+
call.resolve(ret);
|
|
826
|
+
} else {
|
|
827
|
+
ret.put("result", false);
|
|
828
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
829
|
+
call.resolve(ret);
|
|
859
830
|
}
|
|
860
831
|
}
|
|
861
|
-
|
|
832
|
+
}
|
|
833
|
+
);
|
|
862
834
|
}
|
|
863
835
|
|
|
864
836
|
@PluginMethod
|
|
865
837
|
public void showController(PluginCall call) {
|
|
866
838
|
this.call = call;
|
|
867
|
-
bridge
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
883
|
-
call.resolve(ret);
|
|
884
|
-
}
|
|
839
|
+
bridge.getActivity().runOnUiThread(
|
|
840
|
+
new Runnable() {
|
|
841
|
+
@Override
|
|
842
|
+
public void run() {
|
|
843
|
+
JSObject ret = new JSObject();
|
|
844
|
+
ret.put("method", "showController");
|
|
845
|
+
if (fsFragment != null) {
|
|
846
|
+
fsFragment.showController();
|
|
847
|
+
ret.put("result", true);
|
|
848
|
+
ret.put("value", true);
|
|
849
|
+
call.resolve(ret);
|
|
850
|
+
} else {
|
|
851
|
+
ret.put("result", false);
|
|
852
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
853
|
+
call.resolve(ret);
|
|
885
854
|
}
|
|
886
855
|
}
|
|
887
|
-
|
|
856
|
+
}
|
|
857
|
+
);
|
|
888
858
|
}
|
|
889
859
|
|
|
890
860
|
@PluginMethod
|
|
891
861
|
public void exitPlayer(PluginCall call) {
|
|
892
862
|
this.call = call;
|
|
893
|
-
bridge
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
ret.put("message", "Fullscreen fragment is not defined");
|
|
909
|
-
call.resolve(ret);
|
|
910
|
-
}
|
|
863
|
+
bridge.getActivity().runOnUiThread(
|
|
864
|
+
new Runnable() {
|
|
865
|
+
@Override
|
|
866
|
+
public void run() {
|
|
867
|
+
JSObject ret = new JSObject();
|
|
868
|
+
ret.put("method", "exitPlayer");
|
|
869
|
+
if (fsFragment != null) {
|
|
870
|
+
fsFragment.playerExit();
|
|
871
|
+
ret.put("result", true);
|
|
872
|
+
ret.put("value", true);
|
|
873
|
+
call.resolve(ret);
|
|
874
|
+
} else {
|
|
875
|
+
ret.put("result", false);
|
|
876
|
+
ret.put("message", "Fullscreen fragment is not defined");
|
|
877
|
+
call.resolve(ret);
|
|
911
878
|
}
|
|
912
879
|
}
|
|
913
|
-
|
|
880
|
+
}
|
|
881
|
+
);
|
|
914
882
|
}
|
|
915
883
|
|
|
916
884
|
@PluginMethod
|
|
917
885
|
public void hidePlayer(PluginCall call) {
|
|
918
886
|
this.call = call;
|
|
919
|
-
bridge
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
ret.put("result", false);
|
|
938
|
-
ret.put("message", "Fullscreen player is not defined");
|
|
939
|
-
}
|
|
940
|
-
call.resolve(ret);
|
|
887
|
+
bridge.getActivity().runOnUiThread(
|
|
888
|
+
new Runnable() {
|
|
889
|
+
@Override
|
|
890
|
+
public void run() {
|
|
891
|
+
JSObject ret = new JSObject();
|
|
892
|
+
ret.put("method", "hidePlayer");
|
|
893
|
+
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
894
|
+
if (frameLayoutView != null && fsFragment != null) {
|
|
895
|
+
frameLayoutView.setVisibility(View.GONE);
|
|
896
|
+
Activity activity = getBridge().getActivity();
|
|
897
|
+
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
898
|
+
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
899
|
+
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
|
|
900
|
+
ret.put("result", true);
|
|
901
|
+
ret.put("value", true);
|
|
902
|
+
} else {
|
|
903
|
+
ret.put("result", false);
|
|
904
|
+
ret.put("message", "Fullscreen player is not defined");
|
|
941
905
|
}
|
|
906
|
+
call.resolve(ret);
|
|
942
907
|
}
|
|
943
|
-
|
|
908
|
+
}
|
|
909
|
+
);
|
|
944
910
|
}
|
|
945
911
|
|
|
946
912
|
@PluginMethod
|
|
947
913
|
public void showPlayer(PluginCall call) {
|
|
948
914
|
this.call = call;
|
|
949
|
-
bridge
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
.
|
|
966
|
-
|
|
967
|
-
View.
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
ret.put("result", false);
|
|
978
|
-
ret.put("message", "Fullscreen player is not defined");
|
|
979
|
-
}
|
|
980
|
-
call.resolve(ret);
|
|
915
|
+
bridge.getActivity().runOnUiThread(
|
|
916
|
+
new Runnable() {
|
|
917
|
+
@Override
|
|
918
|
+
public void run() {
|
|
919
|
+
JSObject ret = new JSObject();
|
|
920
|
+
ret.put("method", "showPlayer");
|
|
921
|
+
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
922
|
+
if (frameLayoutView != null && fsFragment != null) {
|
|
923
|
+
frameLayoutView.setVisibility(View.VISIBLE);
|
|
924
|
+
Activity activity = getBridge().getActivity();
|
|
925
|
+
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
926
|
+
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
927
|
+
activity
|
|
928
|
+
.getWindow()
|
|
929
|
+
.getDecorView()
|
|
930
|
+
.setSystemUiVisibility(
|
|
931
|
+
View.SYSTEM_UI_FLAG_LOW_PROFILE |
|
|
932
|
+
View.SYSTEM_UI_FLAG_FULLSCREEN |
|
|
933
|
+
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
|
934
|
+
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
|
935
|
+
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
936
|
+
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
|
937
|
+
);
|
|
938
|
+
ret.put("result", true);
|
|
939
|
+
ret.put("value", true);
|
|
940
|
+
} else {
|
|
941
|
+
ret.put("result", false);
|
|
942
|
+
ret.put("message", "Fullscreen player is not defined");
|
|
981
943
|
}
|
|
944
|
+
call.resolve(ret);
|
|
982
945
|
}
|
|
983
|
-
|
|
946
|
+
}
|
|
947
|
+
);
|
|
984
948
|
}
|
|
985
949
|
|
|
986
950
|
public boolean isDeviceTV(Context context) {
|
|
@@ -1046,7 +1010,7 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
1046
1010
|
}
|
|
1047
1011
|
}
|
|
1048
1012
|
|
|
1049
|
-
private Boolean isInRate(Float arr
|
|
1013
|
+
private Boolean isInRate(Float[] arr, Float rate) {
|
|
1050
1014
|
Boolean ret = false;
|
|
1051
1015
|
for (Float el : arr) {
|
|
1052
1016
|
if (el.equals(rate)) {
|
|
@@ -1105,24 +1069,22 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
1105
1069
|
final JSObject data = new JSObject();
|
|
1106
1070
|
data.put("fromPlayerId", this.getInfo().get("fromPlayerId"));
|
|
1107
1071
|
data.put("currentTime", this.getInfo().get("currentTime"));
|
|
1108
|
-
bridge
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
public void run() {
|
|
1114
|
-
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
1072
|
+
bridge.getActivity().runOnUiThread(
|
|
1073
|
+
new Runnable() {
|
|
1074
|
+
@Override
|
|
1075
|
+
public void run() {
|
|
1076
|
+
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
1115
1077
|
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
}
|
|
1120
|
-
fsFragment = null;
|
|
1121
|
-
NotificationCenter.defaultCenter().removeAllNotifications();
|
|
1122
|
-
notifyListeners("jeepCapVideoPlayerEnded", data);
|
|
1078
|
+
if (frameLayoutView != null) {
|
|
1079
|
+
((ViewGroup) getBridge().getWebView().getParent()).removeView(frameLayoutView);
|
|
1080
|
+
fragmentUtils.removeFragment(fsFragment);
|
|
1123
1081
|
}
|
|
1082
|
+
fsFragment = null;
|
|
1083
|
+
NotificationCenter.defaultCenter().removeAllNotifications();
|
|
1084
|
+
notifyListeners("jeepCapVideoPlayerEnded", data);
|
|
1124
1085
|
}
|
|
1125
|
-
|
|
1086
|
+
}
|
|
1087
|
+
);
|
|
1126
1088
|
}
|
|
1127
1089
|
}
|
|
1128
1090
|
);
|
|
@@ -1136,24 +1098,22 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
1136
1098
|
if (Integer.valueOf((String) this.getInfo().get("dismiss")) == 1) ret = true;
|
|
1137
1099
|
data.put("dismiss", ret);
|
|
1138
1100
|
data.put("currentTime", this.getInfo().get("currentTime"));
|
|
1139
|
-
bridge
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
public void run() {
|
|
1145
|
-
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
1101
|
+
bridge.getActivity().runOnUiThread(
|
|
1102
|
+
new Runnable() {
|
|
1103
|
+
@Override
|
|
1104
|
+
public void run() {
|
|
1105
|
+
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
1146
1106
|
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
}
|
|
1151
|
-
fsFragment = null;
|
|
1152
|
-
NotificationCenter.defaultCenter().removeAllNotifications();
|
|
1153
|
-
notifyListeners("jeepCapVideoPlayerExit", data);
|
|
1107
|
+
if (frameLayoutView != null) {
|
|
1108
|
+
((ViewGroup) getBridge().getWebView().getParent()).removeView(frameLayoutView);
|
|
1109
|
+
fragmentUtils.removeFragment(fsFragment);
|
|
1154
1110
|
}
|
|
1111
|
+
fsFragment = null;
|
|
1112
|
+
NotificationCenter.defaultCenter().removeAllNotifications();
|
|
1113
|
+
notifyListeners("jeepCapVideoPlayerExit", data);
|
|
1155
1114
|
}
|
|
1156
|
-
|
|
1115
|
+
}
|
|
1116
|
+
);
|
|
1157
1117
|
}
|
|
1158
1118
|
}
|
|
1159
1119
|
);
|
|
@@ -1306,73 +1266,69 @@ public class VideoPlayerPlugin extends Plugin {
|
|
|
1306
1266
|
videoId,
|
|
1307
1267
|
drmOptions
|
|
1308
1268
|
);
|
|
1309
|
-
bridge
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
FrameLayout.LayoutParams
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
// Apply the Layout Parameters to frameLayout
|
|
1330
|
-
frameLayoutView.setLayoutParams(lp);
|
|
1269
|
+
bridge.getActivity().runOnUiThread(
|
|
1270
|
+
new Runnable() {
|
|
1271
|
+
@Override
|
|
1272
|
+
public void run() {
|
|
1273
|
+
JSObject ret = new JSObject();
|
|
1274
|
+
ret.put("method", "initPlayer");
|
|
1275
|
+
FrameLayout frameLayoutView = getBridge().getActivity().findViewById(frameLayoutViewId);
|
|
1276
|
+
if (frameLayoutView != null) {
|
|
1277
|
+
ret.put("result", false);
|
|
1278
|
+
ret.put("message", "FrameLayout for ExoPlayer already exists");
|
|
1279
|
+
} else {
|
|
1280
|
+
// Initialize a new FrameLayout as container for fragment
|
|
1281
|
+
frameLayoutView = new FrameLayout(getActivity().getApplicationContext());
|
|
1282
|
+
frameLayoutView.setId(frameLayoutViewId);
|
|
1283
|
+
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
|
|
1284
|
+
FrameLayout.LayoutParams.MATCH_PARENT,
|
|
1285
|
+
FrameLayout.LayoutParams.MATCH_PARENT
|
|
1286
|
+
);
|
|
1287
|
+
// Apply the Layout Parameters to frameLayout
|
|
1288
|
+
frameLayoutView.setLayoutParams(lp);
|
|
1331
1289
|
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
}
|
|
1336
|
-
call.resolve(ret);
|
|
1290
|
+
((ViewGroup) getBridge().getWebView().getParent()).addView(frameLayoutView);
|
|
1291
|
+
fragmentUtils.loadFragment(fsFragment, frameLayoutViewId);
|
|
1292
|
+
ret.put("result", true);
|
|
1337
1293
|
}
|
|
1294
|
+
call.resolve(ret);
|
|
1338
1295
|
}
|
|
1339
|
-
|
|
1296
|
+
}
|
|
1297
|
+
);
|
|
1340
1298
|
}
|
|
1341
1299
|
|
|
1342
1300
|
private void createPickerVideoFragment(final PluginCall call) {
|
|
1343
1301
|
pkFragment = implementation.createPickerVideoFragment();
|
|
1344
1302
|
|
|
1345
|
-
bridge
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
FrameLayout.LayoutParams
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
// Apply the Layout Parameters to frameLayout
|
|
1366
|
-
pickerLayoutView.setLayoutParams(lp);
|
|
1303
|
+
bridge.getActivity().runOnUiThread(
|
|
1304
|
+
new Runnable() {
|
|
1305
|
+
@Override
|
|
1306
|
+
public void run() {
|
|
1307
|
+
JSObject ret = new JSObject();
|
|
1308
|
+
ret.put("method", "initPlayer");
|
|
1309
|
+
FrameLayout pickerLayoutView = getBridge().getActivity().findViewById(pickerLayoutViewId);
|
|
1310
|
+
if (pickerLayoutView != null) {
|
|
1311
|
+
ret.put("result", false);
|
|
1312
|
+
ret.put("message", "FrameLayout for VideoPicker already exists");
|
|
1313
|
+
} else {
|
|
1314
|
+
// Initialize a new FrameLayout as container for fragment
|
|
1315
|
+
pickerLayoutView = new FrameLayout(getActivity().getApplicationContext());
|
|
1316
|
+
pickerLayoutView.setId(pickerLayoutViewId);
|
|
1317
|
+
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
|
|
1318
|
+
FrameLayout.LayoutParams.MATCH_PARENT,
|
|
1319
|
+
FrameLayout.LayoutParams.MATCH_PARENT
|
|
1320
|
+
);
|
|
1321
|
+
// Apply the Layout Parameters to frameLayout
|
|
1322
|
+
pickerLayoutView.setLayoutParams(lp);
|
|
1367
1323
|
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
}
|
|
1372
|
-
call.resolve(ret);
|
|
1324
|
+
((ViewGroup) getBridge().getWebView().getParent()).addView(pickerLayoutView);
|
|
1325
|
+
fragmentUtils.loadFragment(pkFragment, pickerLayoutViewId);
|
|
1326
|
+
ret.put("result", true);
|
|
1373
1327
|
}
|
|
1328
|
+
call.resolve(ret);
|
|
1374
1329
|
}
|
|
1375
|
-
|
|
1330
|
+
}
|
|
1331
|
+
);
|
|
1376
1332
|
}
|
|
1377
1333
|
|
|
1378
1334
|
@PluginMethod
|