コード例 #1
0
        //

        public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
            Intent _intent = new Intent(Settings.ActionUsageAccessSettings);

            StartActivity(_intent);

            // ViewがすでにあるならRemoveする
            if (_isOverlayViewPresenceCheck)
            {
                _windowManager.RemoveView(_overlayView);
                _isOverlayViewPresenceCheck = false;
            }

            //
            UsageStatsManager usageStatsManager1 = (UsageStatsManager)_context.GetSystemService(USAGE_STATS_SERVICE);

            currentYear1     = DateTime.Now.Year; // Calendar.GetInstance().Get(Calendar.Year);
            queryUsageStats1 = usageStatsManager1.QueryUsageStats(UsageStatsInterval.Yearly, currentYear1 - 1, currentYear1);
            queryUsageStats2 = usageStatsManager1.QueryEvents(currentYear1 - 1, currentYear1);
            //

            _windowManager = _context.GetSystemService(WindowService).JavaCast <IWindowManager>();
            var layoutInflater = LayoutInflater.From(_context);

            _overlayView = layoutInflater.Inflate(Resource.Layout.overlay_test_layout, null);

            // 画面サイズを取得
            var psize = new Android.Graphics.Point();

            _windowManager.DefaultDisplay.GetSize(psize);

            // オーバーレイ範囲指定 & オーバーレイ設定
            var param = new WindowManagerLayoutParams(
                (int)(psize.X * 0.9),
                (int)(psize.Y * 0.4),               // なんかいい感じに範囲を指定
                WindowManagerTypes.SystemAlert,
                WindowManagerFlags.Fullscreen,      // なんかいい感じに属性を追加
                Android.Graphics.Format.Translucent // 半透明とか
                )
            {
                Gravity = GravityFlags.Top
            };

            // OverlayViewのクリックイベントを登録
            var closeButton = _overlayView.FindViewById <Button>(Resource.Id.closeButton);

            closeButton.Click += CloseButton_Click;
            var testButton = _overlayView.FindViewById <Button>(Resource.Id.testButton);

            testButton.Click += (sender, args) => TestMethod();

            // Viewを画面上に重ね合わせする
            _windowManager.AddView(_overlayView, param);
            _isOverlayViewPresenceCheck = true;

            return(StartCommandResult.NotSticky);
        }
コード例 #2
0
        protected override Task <List <Datum> > PollAsync(CancellationToken cancellationToken)
        {
            long         now       = Java.Lang.JavaSystem.CurrentTimeMillis();
            long         startTime = now - PollingSleepDurationMS;
            UsageEvents  events    = _manager.Manager.QueryEvents(startTime, now);
            List <Datum> data      = new List <Datum>();

            while (events.HasNextEvent)
            {
                UsageEvents.Event usageEvent = new UsageEvents.Event();

                events.GetNextEvent(usageEvent);

                string applicationName = Application.Context.PackageManager.GetApplicationLabel(Application.Context.PackageManager.GetApplicationInfo(usageEvent.PackageName, PackageInfoFlags.MatchDefaultOnly));

                data.Add(new ApplicationUsageEventDatum(usageEvent.PackageName, applicationName, usageEvent.EventType.ToString(), DateTimeOffset.FromUnixTimeMilliseconds(usageEvent.TimeStamp)));
            }

            return(Task.FromResult(data));
        }
コード例 #3
0
        public UsageStatsManager_Android()
        {
            Intent _intent = new Intent(Settings.ActionUsageAccessSettings);

            _context.StartActivity(_intent);

            beginCal = Calendar.GetInstance(TimeZone.Default);
            beginCal.Set(Calendar.Date, 1);
            beginCal.Set(Calendar.Month, 0);
            beginCal.Set(Calendar.Year, 2017);

            endCal = Calendar.GetInstance(TimeZone.Default);
            endCal.Set(Calendar.Date, 6);
            endCal.Set(Calendar.Month, 0);
            endCal.Set(Calendar.Year, 2017);

            usageStatsManager1 = (UsageStatsManager)_context.GetSystemService(USAGE_STATS_SERVICE);
            currentToday       = DateTime.Today;
            currentTimeBegin   = beginCal.TimeInMillis;
            currentTimeEnd     = endCal.TimeInMillis;
            queryUsageStats1   = usageStatsManager1.QueryUsageStats(UsageStatsInterval.Yearly, currentTimeBegin, currentTimeEnd);
            UsageEvent1        = usageStatsManager1.QueryEvents(currentTimeBegin, currentTimeEnd);
        }