c# - Get an accelerometer's device id(or monitor an accelerometer in the backbround) on WinRT -
i looking method of monitoring accelerometer in background.
we can sample windows phone implements @ msdn.
according sample code, requires id of accelerometer. however, there no property gets device id winrt.
var rs = await backgroundexecutionmanager.requestaccessasync(); if (rs != backgroundaccessstatus.allowedmayuseactiverealtimeconnectivity || rs != backgroundaccessstatus.allowedwithalwaysonrealtimeconnectivity) return; var btb = new backgroundtaskbuilder() { name = taskname, taskentrypoint = taskentrypoint }; btb.settrigger(trigger); taskregist = btb.register(); taskregist.completed += new backgroundtaskcompletedeventhandler(onbackgroundtaskcompleted); try { var dres = await trigger.requestasync(); // requires accelerometer's device-id switch (dres) { case devicetriggerresult.allowed: break; case devicetriggerresult.lowbattery: break; case devicetriggerresult.deniedbysystem: break; default: break; } } catch (invalidoperationexception) { }
can observe accelerometer's state in background on winrt devices?
based on msdn, deviceusetrigger
background task can access sensors api within windows runtime phone app, other winrt devices aren't supported
sensors support in windows phone store apps when running on phone, deviceusetrigger background task can access sensors api within windows runtime app. using deviceusetrigger background task access sensors api within windows phone silverlight app not supported.
here list of supported
and here basic example of consuming accelerometer's data handling readingchanged
event
public mainpage() { this.initializecomponent(); this.initializeaccelerometer(); } private accelerometer _accelerometer; private void initializeaccelerometer() { this._accelerometer = accelerometer.getdefault(); if (_accelerometer == null) { accelerometertextblock.text = "no accelerometer found."; return; } uint minreportinterval = _accelerometer.minimumreportinterval; var desiredreportinterval = minreportinterval > 16 ? minreportinterval : 16; this._accelerometer.reportinterval = desiredreportinterval; this._accelerometer.readingchanged += accelerometer_readingchanged; } private async void accelerometer_readingchanged(accelerometer sender, accelerometerreadingchangedeventargs args) { if (args.reading != null) { await dispatcher.runasync(windows.ui.core.coredispatcherpriority.normal, () => { accelerometertextblock.text = string.format( "x: {0,5:0.00} - y: {1,5:0.00} - z: {2,5:0.00} - timestamp: {3}", args.reading.accelerationx, args.reading.accelerationy, args.reading.accelerationz, args.reading.timestamp); }); } }
Comments
Post a Comment