SensorManager.registerListener(..,Handler处理程序),请举例?

CL2*_*L22 6 android handler

我不明白如何使用这种方法,

sensorManager.registerListener(SensorEventListener侦听器,传感器传感器,int速率,处理程序处理程序);

(这里的文件)

1)如果它使用SensorEventListener,那么Handler的目的是什么?

2)请举例说明我可以传递给它的处理程序?

谢谢!

mar*_*v00 21

这里有一个例子:

SensorManager mSensorMgr = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);

HandlerThread mHandlerThread = new HandlerThread("sensorThread");

mHandlerThread.start();

Handler handler = new Handler(mHandlerThread.getLooper());

mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                    SensorManager.SENSOR_DELAY_FASTEST, handler);
Run Code Online (Sandbox Code Playgroud)

从android SensorManager类的源代码中,您可以看到registerListener()提取了Handler的Looper,用这个looper创建一个新的处理程序,调用onSensorChanged方法.

如果未传递处理程序,SensorManager将使用主应用程序线程.

  • 感谢您的回答,简洁明了.恕我直言这应该添加到官方文档:) (3认同)

Com*_*are 10

如果它使用SensorEventListener,那么Handler的目的是什么?

如果我不得不猜测,那么您可以在后台线程(例如,a HandlerThread)上传递您的传感器事件.默认情况下,传感器事件在主应用程序线程上传递,在某些情况下这很好.