public virtual Task<SignatureResult> Request(SignaturePadConfiguration config, CancellationToken cancelToken) {
			CurrentConfig = config ?? SignaturePadConfiguration.Default;

			this.tcs = new TaskCompletionSource<SignatureResult>();
			cancelToken.Register(this.Cancel);
			//var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
            
            var intent = new Android.Content.Intent(Android.App.Application.Context, typeof(SignaturePadActivity));
            intent.AddFlags(Android.Content.ActivityFlags.NewTask); //NOT RECOMMENDED; BUT NECCESSARY
            intent.AddFlags(Android.Content.ActivityFlags.ClearWhenTaskReset);
            intent.AddFlags(Android.Content.ActivityFlags.NoHistory);

            CurrentConfig.SaveToIntent(intent);


            var recieverIntent = new Android.Content.IntentFilter("acr.mvvmcross.plugins.signaturepad.droid.SIGNATURE");
            Android.App.Application.Context.RegisterReceiver(new Broadcast.SignatureReceiver(), recieverIntent);
            Android.App.Application.Context.StartActivity(intent);

			return this.tcs.Task;
		}
Exemplo n.º 2
0
        public virtual Task <SignatureResult> Request(SignaturePadConfiguration config, CancellationToken cancelToken)
        {
            CurrentConfig = config ?? SignaturePadConfiguration.Default;

            this.tcs = new TaskCompletionSource <SignatureResult>();
            cancelToken.Register(this.Cancel);
            //var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;

            var intent = new Android.Content.Intent(Android.App.Application.Context, typeof(SignaturePadActivity));

            intent.AddFlags(Android.Content.ActivityFlags.NewTask); //NOT RECOMMENDED; BUT NECCESSARY
            intent.AddFlags(Android.Content.ActivityFlags.ClearWhenTaskReset);
            intent.AddFlags(Android.Content.ActivityFlags.NoHistory);

            CurrentConfig.SaveToIntent(intent);


            var recieverIntent = new Android.Content.IntentFilter("acr.mvvmcross.plugins.signaturepad.droid.SIGNATURE");

            Android.App.Application.Context.RegisterReceiver(new Broadcast.SignatureReceiver(), recieverIntent);
            Android.App.Application.Context.StartActivity(intent);

            return(this.tcs.Task);
        }
Exemplo n.º 3
0
        internal BatteryReport()
        {
            //  battery values are current for object creation

            // using info from https://developer.android.com/training/monitoring-device-state/battery-monitoring
            var ifilter       = new Android.Content.IntentFilter(Android.Content.Intent.ActionBatteryChanged);
            var batteryStatus = Android.App.Application.Context.RegisterReceiver(null, ifilter);

            if (batteryStatus is null)
            {
                Status = UwpBatteryStatus.NotPresent;
                return;
            }

            // since API 5, so we don't have to check OS level
            if (!batteryStatus.GetBooleanExtra(Android.OS.BatteryManager.ExtraPresent, false))
            {
                Status = UwpBatteryStatus.NotPresent;
                return;
            }

            Status = UwpStatusFromAndroidStatus(batteryStatus.GetIntExtra(Android.OS.BatteryManager.ExtraStatus, -1));

            if (Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.Lollipop)
            {
                // this probably doesn't happen, but anyway we can try to set some values...

                // since API 5
                int level = batteryStatus.GetIntExtra(Android.OS.BatteryManager.ExtraLevel, 1);
                int scale = batteryStatus.GetIntExtra(Android.OS.BatteryManager.ExtraScale, 100);

                // 100*RemainingCapacityInMilliwattHours / FullChargeCapacityInMilliwattHours gives percentage of remaining battery
                RemainingCapacityInMilliwattHours  = level;
                FullChargeCapacityInMilliwattHours = scale;

                return;
            }

            // now, we have API 21+, so we have more values

            // voltage is int, but in mV; we want to have voltage in Volts
            float voltage = batteryStatus.GetIntExtra(Android.OS.BatteryManager.ExtraVoltage, 0) / 1000;

            using var batteryManager = (Android.OS.BatteryManager?)Android.App.Application.Context.GetSystemService(Android.Content.Context.BatteryService);
            if (batteryManager is null)
            {
                Status = UwpBatteryStatus.NotPresent;
                return;
            }
            int currentMicroAmps        = batteryManager.GetIntProperty((int)Android.OS.BatteryProperty.CurrentNow);        // Instantaneous battery current in microamperes, as an integer.
            int chargeCounterMicroAmpHr = batteryManager.GetIntProperty((int)Android.OS.BatteryProperty.ChargeCounter);     // Battery capacity in microampere-hours, as an integer.
            // long energyCounterNanoWattHr = batteryManager.GetLongProperty((int)Android.OS.BatteryProperty.EnergyCounter); // Battery remaining energy in nanowatt-hours, as a long integer.
            int energyCounterNanoWattHr = batteryManager.GetIntProperty((int)Android.OS.BatteryProperty.EnergyCounter);     // But in reality, seems like it is int not long (doc has error here)

            // Android: Instantaneous battery current in microamperes, as an integer.
            // UWP: mW
            // both: > 0 charging, < 0 discharging
            // conversion: milli = 1000 micro; and watt = volt * amper
            ChargeRateInMilliwatts = (int)(voltage * currentMicroAmps / 1000);

            // Android: Battery remaining energy in nanowatt-hours, as a long integer.
            // UWP: mWh
            // conversion: milli = 1000 micro; and micro = 1000 nano
            RemainingCapacityInMilliwattHours = (int)(energyCounterNanoWattHr / (1000 * 1000));

            // Android: Battery capacity in microampere-hours, as an integer.
            // UWP: mWh
            // conversion: milli = 1000 micro; and watt = volt * amper
            FullChargeCapacityInMilliwattHours = (int)(voltage * chargeCounterMicroAmpHr / 1000);

            // UWP doc says: Some battery controllers might return the same value as FullChargeCapacityInMilliwattHours or return no value at all.
            DesignCapacityInMilliwattHours = FullChargeCapacityInMilliwattHours;
        }