Android的传感器开发技术
2016-01-19 10:58
429 查看
package com.gst.user.application; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorEventListener2; import android.hardware.SensorManager; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; import java.util.List; public class SensorActivity extends AppCompatActivity implements SensorEventListener{ private TextView tvAccelerometer; private TextView tvMagentic; private TextView tvLight; private TextView tvOrientation; private TextView tvSensors; private SensorManager sensorManager; private float[] accelerometerValues; private float[] geomagneticValues; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sensor); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_FASTEST); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_FASTEST); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_FASTEST); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST); tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); tvMagentic = (TextView) findViewById(R.id.tvMagentic); tvLight = (TextView) findViewById(R.id.tvLight); tvOrientation = (TextView) findViewById(R.id.tvOrientation); tvSensors = (TextView) findViewById(R.id.tvSensors); List<Sensor> sensors=sensorManager.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: String accelerometer = "加速度\n" + "X:" + event.values[0] + "\n" + "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n"; tvAccelerometer.setText(accelerometer); accelerometerValues = event.values.clone(); break; case Sensor.TYPE_LIGHT: tvLight.setText("亮度:" + event.values[0]); break; case Sensor.TYPE_MAGNETIC_FIELD: String magentic = "磁场\n" + "X:" + event.values[0] + "\n" + "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n"; tvMagentic.setText(magentic); geomagneticValues = event.values.clone(); break; case Sensor.TYPE_ORIENTATION: if (geomagneticValues != null && accelerometerValues != null) { float[] R = new float[16]; float[] I = new float[16]; float[] outR = new float[16]; sensorManager.getRotationMatrix(R, I, accelerometerValues, geomagneticValues); sensorManager.remapCoordinateSystem(R, SensorManager.AXIS_X, SensorManager.AXIS_Y, outR); float[] actual_orientation = new float[3]; actual_orientation = sensorManager.getOrientation(outR, actual_orientation); String orientation = "方向\n" + "X:" + event.values[0] + "\n" + "Y:" + event.values[1] + "\n" + "Z:" + event.values[2] + "\n"; tvOrientation.setText(orientation); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }
相关文章推荐
- Android Handler机制(高级篇)
- Android和PC间的通信
- Android小Demo——OnDragListener
- android权限的分类
- AndroidStudio工程加入svn步骤
- 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗? Android studio乱码
- android 列表倒计时流畅的完美实现
- 推荐几款实用的Android Studio 插件
- Android高效加载大图、多图解决方案,有效避免程序OOM
- Android测试环境配置
- Android性能优化典范
- android自带图片资源图标一览,android.R.drawable
- Android应用内打开QQ聊天框
- android shape的使用
- Android--AndroidManifest 中original-package标签
- android之android studio的NDK环境搭建
- Android Studio常用插件
- Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡
- Android开发笔记(五十二)通知推送Notification
- (Android图片内存优化)Picasso加载图片 教程。。详细版