// 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); }
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)); }
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); }