手机传感器的简单使用





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.util.Log;

public class MainActivity extends AppCompatActivity {

private SensorManager manager ;
private Sensor defaultSensor ;
private MySensroEventListener listener ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
// 通过服务拿到传感器服务经理 (SensorManager) getSystemService(SENSOR_SERVICE); 需要类型转换接受的类型的SensorManager
manager = (SensorManager) getSystemService( SENSOR_SERVICE );
// 通过经理对象得到方向传感器的对象
defaultSensor = manager .getDefaultSensor( 3 );
// 创建一个传感器监听器

listener = new MySensroEventListener();
// 注册传感器监听
manager .registerListener( listener , defaultSensor , manager . SENSOR_DELAY_NORMAL );
// 参数:传感监听器 传感器对象 采用的敏感度
}

/*
传感器的监听

*/
private class MySensroEventListener implements SensorEventListener{



@Override
public void onSensorChanged(SensorEvent event) {
// 通过传感器 得到了方向值( int event.get 0
int value = ( int ) event. values [ 0 ];
// 地磁北极和手机 Y 轴的夹角 0 = 90= 180 = 270= 西
if (value> 0 &&value< 90 ){
Log. d ( "zzz" , " 东北 " );
} else if (value> 90 &&value< 180 ){
Log. d ( "zzz" , " 东南 " );
} else if (value> 180 &&value< 270 ){
Log. d ( "zzz" , " 西南 " );
} else if (value> 270 &&value< 360 ){
Log. d ( "zzz" , " 西北 " );
} else if (value== 0 ){
Log. d ( "zzz" , " " );
} else if (value== 90 ){
Log. d ( "zzz" , " " );
} else if (value== 180 ){
Log. d ( "zzz" , " " );
} else if (value== 270 ){
Log. d ( "zzz" , " 西 " );
}
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
}

// 在销毁的生命周期的方法里释放资源
@Override
protected void onDestroy() {
super .onDestroy();
// 解除传感器的监听
manager .unregisterListener( listener );
// 传感器 =null
listener = null ;
}
}

---------------------------------------------------------------------------------------------------------------
光感传感器
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.util.Log;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private SensorManager manager ;
private List< Sensor > mSensorList ;
private MySensorEventListener mListener ;
private Sensor mSensor ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
// 通过服务拿到传感器经理 getSystemService(SENSOR_SERVICE);
manager = (SensorManager) getSystemService( SENSOR_SERVICE );
// 得到传感器的所有的集合 传感器经理的 getSensorList(Sensor.TYPE_ALL); 参数是 TYPE_ALL
mSensorList = manager .getSensorList( Sensor . TYPE_ALL );
//for each 遍历这个循环
for ( Sensor s: mSensorList ){
Log. d ( "zzz" , " 传感器的名称 " +s);
}

mListener = new MySensorEventListener();
// 通过了传感器经理得到了 光的传感器
mSensor = manager .getDefaultSensor( Sensor . TYPE_LIGHT );

// 注册传感器监听 监听器 传感器对象 敏感度
manager .registerListener( mListener , mSensor ,SensorManager. SENSOR_DELAY_NORMAL );



}
// 写一个传感器监听
private class MySensorEventListener implements SensorEventListener{

@Override
public void onSensorChanged(SensorEvent event) {
// 获得光感值
float value = event. values [ 0 ];
// 打印光感值
Log. d ( "zzz" , " 光感值 " + value);
}

@Override
public void onAccuracyChanged( Sensor sensor, int accuracy) {

}
}

@Override
protected void onDestroy() {
super .onDestroy();
// 解除光感监听
// 光感监听 = null


}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值