大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > Android--Sensor传感器

Android--Sensor传感器(2)

关键词:传感器AndroidSensor  阅读(941) 赞(16)

[摘要]本文是对Android--Sensor传感器的讲解,对学习Android编程技术有所帮助,与大家分享。

下面直接贴代码了,注释比较全,就不再赘述了,会用到补间动画的内容,对补间动画不了解的朋友,可以看看另外一篇博客:Android--Tween补间动画。还有一点需要注意的是就是传感器的Demo需要在真机上测试,因为模拟器上不存在传感器硬件。

 package com.example.sensormanagerdemo;
 
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.os.Bundle;
 import android.view.animation.Animation;
 import android.view.animation.RotateAnimation;
 import android.widget.ImageView;
 import android.app.Activity;
 
 public class MainActivity extends Activity {
     private ImageView iv_compass;
     private SensorManager manager;
     private float startDegree = 0f;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         iv_compass = (ImageView) findViewById(R.id.iv_compass);
         // 获得传感器管理器
         manager = (SensorManager) getSystemService(SENSOR_SERVICE);
 
     }
 
     @Override
     protected void onResume() {
         super.onResume();
         // 为方向传感器注册监听器
         manager.registerListener(listener,
                 manager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                 SensorManager.SENSOR_DELAY_UI);
 
     }
 
     private SensorEventListener listener = new SensorEventListener() {
 
         @Override
         public void onSensorChanged(SensorEvent event) {
             if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
                 // 获取当前传感器获取到的角度
                 float degree = -event.values[0];
                 // 通过补间动画旋转角度 从上次的角度旋转
                 RotateAnimation ra = new RotateAnimation(startDegree, degree,
                         Animation.RELATIVE_TO_SELF, 0.5f,
                         Animation.RELATIVE_TO_SELF, 0.5f);
                 ra.setDuration(200);
                 iv_compass.startAnimation(ra);
                 // 记录当前旋转后的角度
                 startDegree = degree;
             }
         }
 
         @Override
         public void onAccuracyChanged(Sensor sensor, int accuracy) {
 
         }
     };
 
     @Override
     protected void onStop() {
         // 为传感器注销监听器
         manager.unregisterListener(listener);
         super.onStop();
     }
 }

效果展示:

源码下载

总结

本篇博客讲解了Android下如何使用传感器,只是简单的介绍了一下,对于传感器获取到的数值,都在event.values数组中,但是不同传感器获取到的值不同,具体情况具体分析,这里就不再深入讨论了。

«上一页12下一页»


相关评论