Esempio n. 1
0
 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;
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 5
0
        /// <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>());
        }
Esempio n. 6
0
        /// <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>());
        }