Android传感器
16lz
2021-01-23
得到传感器管理器
public class MainActivity extends AppCompatActivity { private SensorManager mSsystemService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSsystemService = (SensorManager) getSystemService(SENSOR_SERVICE);// 得到传感器管理器getAllSensor(); private void getAllSensor() { List<Sensor> sensorList = mSsystemService.getSensorList(Sensor.TYPE_ALL); for (int i = 0; i < sensorList.size(); i++) { Sensor sensor = sensorList.get(i); String name = sensor.getName(); String vendor = sensor.getVendor();// 得到生产厂商 int version = sensor.getVersion();// 得到版本 Log.d(TAG, "onCreate:名字===== " + name + "====得到生产厂商-----" + vendor + "===得到版本=====" + version); } }}
方向传感器
/* * 方向传感器 * 1. 获得传感器方法 * 2. 创建传感器的监听器 * 3.注册传感器。添加监听器 * 4.在监听器的onSensorChanged方法中获取传感器感应到的数据,然后进行业务逻辑的处理 * * */userOre(); // 方向传感器private void userOre() { SensorManager mSsystemService = (SensorManager) getSystemService(SENSOR_SERVICE); Sensor otien = mSsystemService.getDefaultSensor(Sensor.TYPE_ORIENTATION);// 获取方向传感器 mSsystemService.registerListener(new Lisenter(), otien, SensorManager.SENSOR_DELAY_NORMAL);// 注册// 方向传感器的监听public class Lisenter implements SensorEventListener { @Override public void onSensorChanged(SensorEvent event) { float value = event.values[0]; Log.d(TAG, "onSensorChanged:方向角度 " + value); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } }
光传感器的操作
getLight();//光传感器的操作 SensorManager mSsystemService = (SensorManager) getSystemService(SENSOR_SERVICE); private void getLight() { Sensor sensor = mSsystemService.getDefaultSensor(Sensor.TYPE_LIGHT); mSsystemService.registerListener(lis2, sensor, SensorManager.SENSOR_DELAY_NORMAL); } //功能光传感器使用的监听器 private SensorEventListener lis2 = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_LIGHT) { float value = event.values[0]; Log.d(TAG, "onSensorLight: 光线强度" + value); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } };
实现甩歌功能传感器
public class MainActivity extends AppCompatActivity { private SensorManager mSsystemService; private MediaPlayer mMp; private int[] musics = {R.raw.a, R.raw.b, R.raw.c}; int index = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSsystemService = (SensorManager) getSystemService(SENSOR_SERVICE);/* * 1.先获取加速度传感器 * 2.创建相关的监听器--在 onSensorChanged 方法中编写 * 3.注册 * 4.运行甩手机测试 * 5.创建Mediaplayer对象播放歌曲,甩的时候播放 准备歌曲仓库 * */ getAccele();//得到加速度传感器,实现甩歌功能 private void getAccele() { //先播放音乐 mMp = MediaPlayer.create(this, musics[index]); mMp.start(); Sensor sensor = mSsystemService.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //lis1监听器 sensor是感应器 SensorManager.SENSOR_DELAY_NORMAL感应器的灵敏度 mSsystemService.registerListener(lis1, sensor, SensorManager.SENSOR_DELAY_NORMAL);//注册感应器的监听器 } 第一个传感器监听器,为加速度使用 private SensorEventListener lis1 = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {//加速度感应器发生变化 float[] value = event.values;//得到xyz三个方向的数据的变化 float x = value[0];//x轴的新值 float y = value[1];//y轴的新值 float z = value[2];//z轴的新值 Log.i(TAG, "x=" + x + ",y=" + y + ",z=" + z); if (z > 12) {//甩动切歌 if (mMp != null) { mMp.stop(); mMp.release(); } index++;//下标加1 index = index % musics.length;//防止越界 mMp = MediaPlayer.create(MainActivity.this, musics[index]); mMp.start(); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; }
更多相关文章
- 《IT蓝豹》吹雪花demo,学习android传感器
- 详解Android中的屏幕方向
- Android实现动态改变屏幕方向(Landscape & Portrait)
- android 骁龙相机预览宽度方向全屏
- android 相对定位布局方向 RelativeLayout
- Android编程实现屏幕自适应方向尺寸与分辨率的方法
- android 相对定位布局方向详解
- Android设备功能之传感器教程篇
- Android控制水平方向字体缩放android:textScaleX