指南针的分享
//定义成员的变量
private TextView tv1 ;
private MySensro mySensro ;
private Button but1 ;
private SensorManager systemService ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
tv1 = (TextView) findViewById(R.id. tv1 );
//初始化控件
initview();
//通过服务拿到传感器经理.getSystemService(SENSOR_SERVICE),要强类型转换.
systemService = (SensorManager) getSystemService( SENSOR_SERVICE );
//通过传感器经理得到方向传感器的对象.getDefaultSensor 参数:3(也就是我给大家表的位置)
Sensor defaultSensor = systemService .getDefaultSensor( 3 );
//创建一个自己的传感器监听器
mySensro = new MySensro();
//注册传感器监听,registerListener,参数:1.传感器监听器 2.传感器对象 3.决定采样的敏感度.SensorManager.SENSOR_DELAY_NORMAL:正常采样
systemService .registerListener( mySensro ,defaultSensor,SensorManager. SENSOR_DELAY_NORMAL );
}
//初始化的控件
private void initview() {
//找到控件
but1 = (Button) findViewById(R.id. but );
//给button进行监听跳转
but1 .setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity. this , GuangchuanActivity. class );
startActivity(intent);
}
});
}
/**
* 自定义一个类实现SensorEventListener,做为传感器监听
*/
private class MySensro implements SensorEventListener{
//当传感器数据变化的调用的方法
@Override
public void onSensorChanged(SensorEvent event) {
//当传感器数据变化的调用的方法
//通过传感器事件,得到方向值(int).event.values[0]
float value = event. values [ 0 ];
//提示:地磁北极和手机y轴的夹角, 0=北, 90=东, 180=南, 270=西
//当度数大于0且小于90为东北方向.使用if ,if else
// 当度数=0,90,180,270时,北东南西
if (value > 0 && value< 90 ) {
tv1 .append( "东北" + " \n " );
} else if (value > 90 && value< 180 ) {
tv1 .append( "东南" + " \n " );
} else if (value > 180 && value< 270 ) {
tv1 .append( "西南" + " \n " );
} else if (value > 270 && value< 360 ) {
tv1 .append( "西北" + " \n " );
} else if (value == 0 ) {
tv1 .append( "北" + " \n " );
} else if (value == 90 ) {
tv1 .append( "西" + " \n " );
} else if (value == 180 ) {
tv1 .append( "南" + " \n " );
} else if (value == 270 ) {
tv1 .append( "北" + " \n " );
}
}
//当传感器精度发生变化的时候调用的方法
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
/**
* 在Activity销毁的生命周期里,解除监听,释放资源.
*/
@Override
protected void onDestroy() {
super .onDestroy();
//解除光传感器监听,unregisterListener参数监听器对象
systemService .unregisterListener( mySensro );
//把自己的传感器监听器=空
mySensro = null ;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
