Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SensorManager.registerListener(..,处理程序),请举例说明?_Android_Handler - Fatal编程技术网

Android SensorManager.registerListener(..,处理程序),请举例说明?

Android SensorManager.registerListener(..,处理程序),请举例说明?,android,handler,Android,Handler,我不知道怎么用这个方法 registerListener(SensorEventListener侦听器、传感器、int-rate、处理程序) 1) 如果它使用SensorEventListener,那么处理程序的用途是什么 2) 请给出一个我可以传递给它的处理程序的例子 谢谢 如果它使用SensorEventListener,那么处理程序的用途是什么 如果非要我猜的话,那么您可以通过后台线程(例如,HandlerThread)发送传感器事件。默认情况下,传感器事件在主应用程序线程上传递,这在某

我不知道怎么用这个方法

registerListener(SensorEventListener侦听器、传感器、int-rate、处理程序)

1) 如果它使用SensorEventListener,那么处理程序的用途是什么

2) 请给出一个我可以传递给它的处理程序的例子

谢谢

如果它使用SensorEventListener,那么处理程序的用途是什么


如果非要我猜的话,那么您可以通过后台线程(例如,
HandlerThread
)发送传感器事件。默认情况下,传感器事件在主应用程序线程上传递,这在某些情况下是可以接受的。

这里有一个示例:

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);
从android SensorManager类的源代码中,您可以看到registerListener()提取处理程序的循环器,以使用此循环器创建一个新的处理程序,并在其中调用onSensorChanged方法

如果您没有传递处理程序,SensorManager将使用主应用程序线程。

1)如果它使用SensorEventListener,那么处理程序的用途是什么? 如果你在主线程上运行它,并且你正在做一些繁重的计算,你会减慢主UI的速度,使其没有响应。请始终在单独的线程中编写长时间运行的任务,以避免出现错误


下面是一个例子

谢谢你的回答,简洁明了。IMHO这应该添加到官方文档:)您可以在这里声明几个传感器吗?我可以使用传感器的多个参数吗?