public Builder(Context context) : base(context) { if (Looper.MainLooper != Looper.MyLooper()) { _resultBox = new VolatileDispose(); } }
/// <summary> /// 初始化截屏服务。 /// </summary> /// <param name="data"></param> /// <param name="context"></param> /// <param name="handler"></param> public void Init(Intent data, Context context) { if (IsInit) { return; } volatileDispose = new VolatileDispose(); _intent = data; Context = context; _mediaProjectionManager = AppApplication.GetSystemService <MediaProjectionManager>(Context.MediaProjectionService); _orientationEventListener = new OrientationEvent(context, i => { try { RefreshVirtualDisplay(); } catch (Exception) { } }); if (_orientationEventListener.CanDetectOrientation()) { _orientationEventListener.Enable(); } IsInit = true; }
public Bitmap GetBitmap() { volatileDispose = new VolatileDispose(); volatileDispose.blockedGet <Bitmap>(); return(_bitmap); }
/// <summary> /// 截屏。 /// </summary> /// <returns></returns> public void Capture(VolatileDispose @volatile) { volatileDispose = @volatile; lock (Lock) { IsCapture = true; } }
/// <summary> /// lua引擎截屏。 /// </summary> /// <returns></returns> public static Bitmap LuaCapturer() { var volatileDispose = new VolatileDispose(); var t = new Task(() => { ScreenCapturerServer.Instance.Capture(volatileDispose); }); t.Start(); t.Wait(); return(volatileDispose.blockedGet <Bitmap>()); }
/// <summary> /// http服务截屏 /// </summary> /// <returns></returns> public static Bitmap HttpCapturer() { //创建一个线程操作类,构造器会自动获取当前使用的线程, var volatileDispose = new VolatileDispose(); var t = new Task(() => { //执行截屏的时候会挂起 volatileDispose 的线程 HttpCapturerServer.Instance.Capture(volatileDispose); }); t.Start(); t.Wait(); //等待 volatileDispose 线程恢复并获取 返回的值。 return(volatileDispose.blockedGet <Bitmap>()); }