public ISensor this[SensorType sensorType] { get { for (int i = 0; i < _Sensors.Count; i++) { if (_Sensors[i].SensorType == sensorType) { return(_Sensors[i]); } } if (sensorType == SensorType.Velocity) { VelocitySensor veloctiySensor = new VelocitySensor(this); _Sensors.Add(veloctiySensor); return(veloctiySensor); } else { Android.Hardware.SensorType?droidTypeNullable = sensorTypeToDroidSensorType(sensorType); if (droidTypeNullable == null) { return(null); } Android.Hardware.SensorType droidSensorType = (Android.Hardware.SensorType)droidTypeNullable; Android.Hardware.Sensor droidSensor = _DroidSensorManager.GetDefaultSensor(droidSensorType); //检查一下这个Sensor是不是已经被创建过了 SingleSensor sensor = new SingleSensor(this, droidSensor); _Sensors.Add(sensor); return(sensor); } } }
private SensorType?droidSensorTypeToSensorType(Android.Hardware.SensorType droidSensorType) { switch (droidSensorType) { case Android.Hardware.SensorType.Gyroscope: return(SensorType.Gyroscope); case Android.Hardware.SensorType.Accelerometer: return(SensorType.Accelerometer); case Android.Hardware.SensorType.MagneticField: return(SensorType.MagneticField); case Android.Hardware.SensorType.GameRotationVector: return(SensorType.RotationVector); } return(null); }