0

このチュートリアルを使用して、Android 用の加速度計をプログラムしています。しかし、よくわからない厄介な問題が発生しています。コードは次のとおりです。

protected override void OnResume()

    {

        base.OnResume ();

        _sensorManager.RegisterListener (this, _sensorManager.GetDefaultSensor (SensorType.Accelerometer), SensorDelay.Ui); // this is where I get " cannot convert from "MotionDector.1 to Android.Hardware.ISensorEventListener" 

    }



    protected override void OnPause()

    {

        base.OnPause ();

        _sensorManager.UnregisterListener (this); // Same problem here

    }

android.hardware 名前空間を含めました。私のプロジェクトの名前は MotionDector です

4

1 に答える 1

1

ここでうまく動作します。ISensorEventListenerクラス宣言で覚えていましたか?リンク先とまったく同じアプローチを使用しています。

using System.Text;
using Android.App;
using Android.Hardware;
using Android.Widget;
using Android.OS;

namespace AccelerometerShiz
{
    [Activity(Label = "AccelerometerShiz", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity, ISensorEventListener
    {
        private SensorManager _sensorManager; 
        private TextView _sensorTextView; 
        private static readonly object SyncLock = new object();

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
            _sensorManager = (SensorManager)GetSystemService(SensorService);
            _sensorTextView = FindViewById<TextView>(Resource.Id.accelerometer_text);
        }

        protected override void OnResume()
        {
            base.OnResume();
            _sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.Accelerometer), SensorDelay.Ui);
        }

        protected override void OnPause()
        {
            base.OnPause();
            _sensorManager.UnregisterListener(this);
        }

        public void OnAccuracyChanged(Sensor sensor, SensorStatus accuracy)
        {
            // We don't want to do anything here.
        }

        public void OnSensorChanged(SensorEvent e)
        {
            lock (SyncLock)
            {
                var text = new StringBuilder("x = ")
                    .Append(e.Values[0])
                    .Append(", y=")
                    .Append(e.Values[1])
                    .Append(", z=")
                    .Append(e.Values[2]);
                _sensorTextView.Text = text.ToString();
            }
        }
    }
}
于 2013-07-02T23:07:13.317 に答える