2013-12-14 70 views
0

我想读取方向和磁场。获取多个传感器读数

我用

if (e.Sensor.Type == SensorType.Orientation) 
{ ... } 

if (e.Sensor.Type == SensorType.MagneticField) 
{ ... } 

,我试图

_sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.All), SensorDelay.Game); 

_sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.MagneticField), SensorDelay.Game); 

_sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.Orientation), SensorDelay.Game); 

_sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.Orientation | SensorType.MagneticField), SensorDelay.Game); 

mOrientation = _sensorManager.GetDefaultSensor(SensorType.Orientation); 
mMagnetisch = _sensorManager.GetDefaultSensor(SensorType.MagneticField); 
if (mOrientation != null) 
    _sensorManager.RegisterListener(this, mOrientation, SensorDelay.Game); 
if (mMagnetisch != null) 
    _sensorManager.RegisterListener(this, mMagnetisch, SensorDelay.Game); 

但每次要么方向磁感应强度的节目。怎么修?

PS:我的代码脱光了传感器部分:http://pastebin.com/uXVRJmSq

回答

1

首先,让你的Activity实施ISensorEventListener。它看起来像这样:

public void OnAccuracyChanged(Sensor sensor, SensorStatus accuracy) 
{ 
    // Do nothing. 
} 

public void OnSensorChanged(SensorEvent e) 
{ 
    var sensor = e.Sensor; 
    if (sensor.Type == SensorType.Orientation) { 
    Toast.MakeText(this, "Orientation: " + e.Values[0], ToastLength.Short).Show(); 
    }else if (sensor.Type == SensorType.MagneticField) { 
    Toast.MakeText(this, "MagneticField: " + e.Values[0], ToastLength.Short).Show(); 
    } 
} 

然后,在ActivityOnCreate()方法,注册这两个侦听器。

var sensorManager = (SensorManager) GetSystemService(SensorService); 
sensorManager.RegisterListener(this, sensorManager.GetDefaultSensor(SensorType.Orientation), SensorDelay.Game); 
sensorManager.RegisterListener(this, sensorManager.GetDefaultSensor(SensorType.MagneticField), SensorDelay.Game); 
+0

我自己找到了解决方案。你的回复没有解决。 – Gewinn

+1

@Gewinn你可以发布你的解决方案吗?所以我可以知道我失踪的地方并帮助其他人。 –