最近有这样一个需求,多台手机之间,手机B,手机C,手机D全部显示手机A的屏幕或摄像头画面。
一开始为了快速实现,方案为手机A截屏,然后用socket发送给其余手机,效果实现,但是非常卡顿。
后来,想用流实现其功能,类似于直播的感觉。但是无奈流媒体服务器搭建不太熟悉。
最后,改用实时获取h264流,然后实时通过socket发送。已实现
实现步骤:
1获取MediaProjection对象:
mMediaProjectionManager = (MediaProjectionManager)getSystemService(Context.MEDIA_PROJECTION_SERVICE);2.开启屏幕录制线程 ScreenRecorderThread
Intent intent = mMediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(intent, REQUEST_CODE);
2.1创建编码器
2.2录制视频
2.3发送(先发送sps,pps)
后来又有一个需求,让接收的屏幕的手机控制发送屏幕的手机
方案:
1.获取当前手机屏幕大小,在和发送屏幕手机的手机屏幕大小做一下比例。确定点击坐标,点击滑动动作
2.发送给服务器,让服务器根据数据转换成adb控制手机的语句
3.手机通过usb与pc相连,pc执行adb语句,手机受到虚拟触控