android——Seneor(获得数据值流程以及同时监听多个sensor)

近日接触到安卓传感器方面的编程,安卓提供好了Sensor、SensorManager和SenseorEventManager来获得传感器数据以及采取一些相应措施。

第一步:获得传感器数值

1、先通过服务获得SensorManager: (getSystemService)this.getSystemService(Context.SENSOR_SERVICE)。  注意this是主Activity的this,如果是在别处调用,需要将主Activity传过去。

2、(可选)通过SensorManager可以获得特定的Sensor以及手机所带有的所有Sensor的一个List。可以产看Sensor的相关信息例如厂商、型号等。

3、通过SensorManager注册监听事件。boolean registerListener(SensorEventListener listener, Sensor sensor, int
rate)。可以自己写一个类实现SensorEventListener接口,可以让主Activity实现其接口,也可以new 一个SensorEventListener。第二个是针对哪一个传感器所注册的监听器。第三个是采样延迟(微妙)。

4、实现SensorEventListener中的两个方法。public void onSensorChanged(SensorEvent event);public void onAccuracyChanged(Sensor sensor, int accuracy);

其中可以通过第一个方法的event获得传感器的当前数值。

第二步:将数值显示到界面上

我采用的是自己写了一个类(MySensorEventListener)实现监听器的接口。

在非UI线程要控制UI,于是采用Handler。在初始化MySensorEventListener时需要将主Activity的Context以及界面View(或者直接传显示的控件)传过去。在MySensorEventListener的类中,需要在初始化Handler时使用new Handler(Context.getMainLooper())。然后在获得数据后利用Handler发送消息即可。

第三步:实现服务端控制开始以及结束数据采集。同时需要将采集的数据上传服务端。

利用socket实现通信。(见java——Socket通信)

注意:当需要同时监听多个sensor时,只需要一个SensorManager。然后初始化多个MySensorEventListener,注册时使用不同的MySensorEventListener和指定不同的Sensor。同时在MySensorEventListener中的public void onSensorChanged(SensorEvent event)中利用event.sensor.getType()来判断当前是哪个一个Sensor的数据,来做出不同的操作。

时间: 2024-12-28 12:15:06

android——Seneor(获得数据值流程以及同时监听多个sensor)的相关文章

Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究

在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听/监控方法做一些总结,以备后用. 一.点击空白处隐藏软键盘 这是具有编辑框焦点的页面对输入法软键盘状态监听的一般需求和解决方法. 首先获得InputMethodManager:        InputMethodManager manager = (InputMethodManager) getS

安卓实训第十四天---使用ContentProvider共享数据,并且利用ContentResolver监听共享数据

ContentProvider: 一.当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的好处是统一了数据访问方式. 第二步需要在AndroidManif

Android开发之手势滑动(滑动手势监听)

在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListener监听器来,另一种是构建手势探测器 第一种方法,就是在要实现滑动的View中,实现OnTouchListener监听事件,然后判断KeyDonw和KeyUp 直接的位置距离来判断滑动方向,核心实现代码如下: /** * 设置上下滑动作监听器 * @author caizhiming */ private void setGestureListen

android CheckBox控件的定义及事件监听

http://www.beijibear.com/index.php?aid=336 android CheckBox控件的定义及事件监听,本例实现CheckBox控件的定义及点击事件的监听并显示结果,运行效果截图如下: CheckBox控件的定义,main.xml内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas

Android中Activity中左右滑动手势的监听

<pre name="code" class="java">/* * 完成对左右划屏 */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: prev.set(event.getX(), event.getY()); break; case MotionEvent.ACT

Android的事件处理机制详解(二)-----基于监听的事件处理机制

基于监听的事件处理机制 前言: 我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应 这就涉及到了android的事件处理机制; android给我们提供了两套功能强大的处理机制: ①基于监听的事件处理机制 ②基于回调的事件处理机制 在这一节中,我们会先介绍一下基于监听的事件处理机制 好了,废话不多说! 我们要先了解一下监听处理机制的模型 监听的处理模型: 处理模型图: 文字表述: 事件监听机制中由事件源,事件,事件监听器三类对象组成 处理流程: step 1:为某个事件源

android 开机自启动的几种方法,监听不到RECEIVE_BOOT_COMPLETED的处理办法

第一种:  监控RECEIVE_BOOT_COMPLETED,即开机启动事件 第二种: 监控sd卡mount事件  开机总会扫描sd卡吧? 监控sd卡事件也有类似开机启动效果,特别app安装在sd卡的情况下有些os是抓取不到RECEIVE_BOOT_COMPLETED 第三种: android:installLocation="internalOnly", 限制app的安装位置,使其能抓取到RECEIVE_BOOT_COMPLETED 第四种: 监听电话或者短信事件,手机总得打电话收发

【android基础篇】自定义广播和电话监听

I,自定义广播 前面所说的都是接收短信,外拨电话等都是系统所有的广播,而其实我们可以自己自定义一个广播,并且写一个广播接收者来玩玩. 1) 在按钮的点击方法中,发送自定义的广播: 1 public void click(View view){ 2 /** 3 * 发送自定义的广播 4 */ 5 Intent intent=new Intent(); 6 //设置意图的动作,要和自定义的频道要一致 7 intent.setAction("www.wangchengxiang.com");

Android MVP 利用rxjava 避免向Model传入监听方法

传统的MVP: 1.抽离出View的接口,即ILoginView. 2.抽离Model的接口,即ILoginModel. 3.抽离Presenter的接口,即ILoginPresenter. 4.实现ILoginView 接口的 LoginActivity. 5.实现ILoginModel 接口的 LoginModel. 6.实现ILoginPresenter 接口的 LoginPresenter. LoginActivity:实现ILoginView 接口以及初始化ILoginPresente