@@ -45,7 +45,7 @@ public class MultiScreenActivity extends AppCompatActivity{
45
45
private boolean isMultiScreen ;
46
46
//保存客户端ip与通道数对应关系
47
47
private HashMap <String , Integer > clientMap = new HashMap <>();
48
- //保存是否投屏与通道数对应关系
48
+ //记录每个通道的投屏状态
49
49
private TreeMap <Integer , Boolean > channelMap = new TreeMap <>();
50
50
51
51
private String url = "" ;
@@ -180,8 +180,6 @@ private void setOptions(IjkMediaPlayer ijkPlayer){
180
180
//设置播放前的最大探测时间,分析码流时长:默认1024*1000
181
181
ijkPlayer .setOption (IjkMediaPlayer .OPT_CATEGORY_FORMAT , "analyzedmaxduration" , 100 );
182
182
//ijkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp");//tcp传输数据
183
- // 音视频同步基线,0-音频为基准,1-视频为基准,3-系统时间戳为基准
184
- ijkPlayer .setOption (IjkMediaPlayer .OPT_CATEGORY_PLAYER , "av_sync_type" , 0 );
185
183
}
186
184
187
185
/**
@@ -226,14 +224,14 @@ public void onReceive(Context context, Intent intent) {
226
224
removeClient (target );
227
225
clientMap .remove (ipAddress );
228
226
channelMap .put (target , false );
229
- //TODO: 多屏变为单屏时,自动切换为全屏
230
- // if (num == 1){
231
- // int castingChannel = getCastingChannel();
232
- // enterFullScreen(castingChannel);
233
- // }
227
+ //多屏变为单屏时,自动切换为全屏
228
+ if (num == 1 ){
229
+ int castingChannel = getCastingChannel ();
230
+ enterFullScreen (castingChannel );
231
+ }
234
232
}
235
233
break ;
236
- case Constants .ACTION_CLIENT_ADD ://新增投屏
234
+ case Constants .ACTION_CLIENT_ADD ://增加投屏
237
235
int clientNum = intent .getIntExtra ("clientNum" , 0 );
238
236
String otherUrl = intent .getStringExtra ("url" );
239
237
String ipAddress = intent .getStringExtra ("ip" );
@@ -242,7 +240,7 @@ public void onReceive(Context context, Intent intent) {
242
240
clientMap .put (ipAddress , channel );
243
241
channelMap .put (channel , true );
244
242
addClient (channel , otherUrl );
245
- //TODO: 单屏变为两路投屏时,自动切换为多屏模式
243
+ //单屏变为两路投屏时,自动切换为多屏模式
246
244
if (clientNum == 2 ){
247
245
exitFullScreen ();
248
246
}
@@ -363,24 +361,44 @@ private void enterFullScreen(int channel){
363
361
hideDivider ();
364
362
switch (channel ){
365
363
case 1 :
364
+ mVideoView1 .setRenderViewVisible ();
365
+ mVideoView2 .setRenderViewGone ();
366
+ mVideoView3 .setRenderViewGone ();
367
+ mVideoView4 .setRenderViewGone ();
368
+
366
369
mVideoView1 .setVisibility (View .VISIBLE );
367
370
mVideoView2 .setVisibility (View .GONE );
368
371
mVideoView3 .setVisibility (View .GONE );
369
372
mVideoView4 .setVisibility (View .GONE );
370
373
break ;
371
374
case 2 :
375
+ mVideoView1 .setRenderViewGone ();
376
+ mVideoView2 .setRenderViewVisible ();
377
+ mVideoView3 .setRenderViewGone ();
378
+ mVideoView4 .setRenderViewGone ();
379
+
372
380
mVideoView1 .setVisibility (View .GONE );
373
381
mVideoView2 .setVisibility (View .VISIBLE );
374
382
mVideoView3 .setVisibility (View .GONE );
375
383
mVideoView4 .setVisibility (View .GONE );
376
384
break ;
377
385
case 3 :
386
+ mVideoView1 .setRenderViewGone ();
387
+ mVideoView2 .setRenderViewGone ();
388
+ mVideoView3 .setRenderViewVisible ();
389
+ mVideoView4 .setRenderViewGone ();
390
+
378
391
mVideoView1 .setVisibility (View .GONE );
379
392
mVideoView2 .setVisibility (View .GONE );
380
393
mVideoView3 .setVisibility (View .VISIBLE );
381
394
mVideoView4 .setVisibility (View .GONE );
382
395
break ;
383
396
case 4 :
397
+ mVideoView1 .setRenderViewGone ();
398
+ mVideoView2 .setRenderViewGone ();
399
+ mVideoView3 .setRenderViewGone ();
400
+ mVideoView4 .setRenderViewVisible ();
401
+
384
402
mVideoView1 .setVisibility (View .GONE );
385
403
mVideoView2 .setVisibility (View .GONE );
386
404
mVideoView3 .setVisibility (View .GONE );
@@ -395,25 +413,30 @@ private void enterFullScreen(int channel){
395
413
* 退出全屏模式
396
414
*/
397
415
private void exitFullScreen (){
416
+ mVideoView1 .setRenderViewVisible ();
417
+ mVideoView2 .setRenderViewVisible ();
418
+ mVideoView3 .setRenderViewVisible ();
419
+ mVideoView4 .setRenderViewVisible ();
420
+
398
421
showDivider ();
399
422
mVideoView1 .setVisibility (View .VISIBLE );
400
423
mVideoView2 .setVisibility (View .VISIBLE );
401
424
mVideoView3 .setVisibility (View .VISIBLE );
402
425
mVideoView4 .setVisibility (View .VISIBLE );
403
426
}
404
427
405
- /**
406
- * 切换分屏模式
407
- * @param channel channel
408
- */
409
- private void changeScreenMode (int channel ){
410
- isMultiScreen = !isMultiScreen ;
411
- if (isMultiScreen ){
412
- enterFullScreen (channel );
413
- }else {
414
- exitFullScreen ();
415
- }
428
+ /**
429
+ * 切换分屏模式
430
+ * @param channel channel
431
+ */
432
+ private void changeScreenMode (int channel ){
433
+ isMultiScreen = !isMultiScreen ;
434
+ if (isMultiScreen ){
435
+ enterFullScreen (channel );
436
+ }else {
437
+ exitFullScreen ();
416
438
}
439
+ }
417
440
418
441
@ Override
419
442
protected void onDestroy () {
0 commit comments