得到传感器管理器
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) {
}
};
}