YY畅控 安卓Android群控 手机投屏同步实现 同步点击 C#

效果图, 可以同步控制多台手机
在这里插入图片描述
在这里插入图片描述

以下是群控实现代码

        private async Task SyncControllerAsync(NetworkStream stream, byte[] syncControlData){// Both of these should never happen.if (controlClient == null) throw new Exception("controlClient is null.");if (cts == null) throw new Exception("cts is null.");SyncStates syncStatus = SyncStates.SYNC_NONE;HashSet<String> hasSelectedDeviceLans = new HashSet<string>();var countdownEvent = new ManualResetEvent(false);RxApp.MainThreadScheduler.Schedule(() =>{SyncStates.TryParse(_viewModel.GetViewModel<MainWindowViewModel>().SyncStates, true, out syncStatus);if (syncStatus is not SyncStates.SYNC_NONE){hasSelectedDeviceLans = _viewModel.SelectedYyDevice.Select(it => it.DeviceLanIp).ToHashSet();}countdownEvent.Set();});countdownEvent.WaitOne();// Log.Information("--->等待主线程获取完毕! 状态: {S} 选择:{C}", syncStatus, hasSelectedDeviceLans.Count);if (syncStatus is SyncStates.SYNC_NONE){await stream.WriteAsync(syncControlData);}else{List<Scrcpy> transferScrcpys;// 同步全部if (syncStatus is SyncStates.SYNC_ALL){transferScrcpys = ScrcpyList.Where(it => it.Connected).ToList();}else// 同步选中{transferScrcpys = ScrcpyList.Where(it => it.Connected && hasSelectedDeviceLans.Contains(it.lanIp)).ToList();}await Task.WhenAny(transferScrcpys.AsParallel().Select(async sc =>{if (sc.Connected){// if (sc != this)// {// Log.Information("转发: {S}", sc.device.DeviceLanIp);// }try{await sc.controlClient.GetStream().WriteAsync(syncControlData);}catch (Exception e){Log.Error("同步控制信号错误:{Ip}", sc.lanIp);}}}));}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部