Android 传感器的使用
2016-05-27 13:47
393 查看
实例
布局文件就只定义了三个TextView组件,就不写出来了。
package com.example.a91920.sensor; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import java.util.List; public class MainActivity extends AppCompatActivity implements SensorEventListener{ private TextView tvSensors,proximity,accel; private SensorManager mSensorManager; private float[] gravity=new float[3]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvSensors= (TextView) findViewById(R.id.tvsensor); proximity= (TextView) findViewById(R.id.proximity); accel= (TextView) findViewById(R.id.accel); //从系统服务中获得传感器管理器 mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE); //从传感器管理器中获得全部的传感器列表 List<Sensor> sensors=mSensorManager.getSensorList(Sensor.TYPE_ALL); // 显示每个传感器的信息 for(Sensor sensor:sensors) { tvSensors.append(sensor.getName()+"\n"); } } @Override public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType()){ case Sensor.TYPE_ACCELEROMETER://加速度传感器 final float alpha= (float) 0.8; gravity[0]=alpha*gravity[0]+(1-alpha)*event.values[0]; gravity[1]=alpha*gravity[1]+(1-alpha)*event.values[1]; gravity[2]=alpha*gravity[2]+(1-alpha)*event.values[2]; String accelerometer="加速度\n"+"X:"+(event.values[0]-gravity[0])+"\n" +"Y:"+(event.values[1]-gravity[1])+"\n" +"Z:"+(event.values[2]-gravity[2])+"\n"; accel.setText(accelerometer); break; case Sensor.TYPE_GRAVITY://重力传感器 gravity[0]=event.values[0]; gravity[1]=event.values[1]; gravity[2]=event.values[2]; break; case Sensor.TYPE_PROXIMITY://距离传感器 proximity.setText(String.valueOf(event.values[0])); break; } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override protected void onResume() { super.onResume(); //注册相应的传感器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY), SensorManager.SENSOR_DELAY_FASTEST); mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_UI); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } }
布局文件就只定义了三个TextView组件,就不写出来了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories