Xamarin.Android 近接センサー
TYPE_PROXIMITY 近接センサ

近接センサは、ユーザがAndroidを耳に当てているかどうかをチェックするためのセンサーです。
手元の実機では、MaximumRangeが9となっていますが、取得できるデータは0か9の2値だけでした。耳を当てる部分にセンサーがあるらしく、そこから2〜3cmのところで反応しています。
機種によって、違いがあるようですが、どれも「0」か「それ以外」かの判断程度しかできないようです。
[Activity(Label = "AndroidApplication1", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity, ISensorEventListener{ private SensorManager _senseManager;//センサーマネージャ private Sensor _proximitySensor;//近接センサー private TextView _textView; protected override void OnCreate(Bundle bundle){ base.OnCreate(bundle); SetContentView(Resource.Layout.Main); _textView = FindViewById<TextView>(Resource.Id.textView1); //センサーマネージャ取得 _senseManager = (SensorManager)GetSystemService(SensorService); //近接センサー取得 _proximitySensor = _senseManager.GetDefaultSensor(SensorType.Proximity); } protected override void OnResume(){ base.OnResume(); //リスナー登録 _senseManager.RegisterListener(this, _proximitySensor, SensorDelay.Ui); } protected override void OnPause(){ base.OnPause(); //リスナー解除 _senseManager.UnregisterListener(this); } //ISensorEventListenerで必須 public void OnAccuracyChanged(Sensor sensor, SensorStatus accuracy){} public void OnSensorChanged(SensorEvent e){ //近接センサーに関するものだけが対象 if (e.Sensor.Type == SensorType.Proximity){ var sb = new System.Text.StringBuilder(); //センサー名 sb.Append(string.Format("Name:{0}\r\n", _proximitySensor.Name)); //レンジ sb.Append(string.Format("MaximumRange:{0}\r\n", _proximitySensor.MaximumRange)); //現在のデータ sb.Append(string.Format("Value:{0}\r\n", e.Values[0])); _textView.Text = sb.ToString(); } } }