1.首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作

private SensorManager manager; 
private SensorListener listener = new SensorListener();

2、这个监听器当然是我们自己定义的,在方向感应器感应到手机方向有变化的时候,我们可以采取相应的操作,这里紧紧是将x,y,z的值打印出来

private final class SensorListener implements SensorEventListener { 
private float predegree = 0; 
@Override 
public void onSensorChanged(SensorEvent event) { 
    /** 
    * values[0]: x-axis 方向加速度 
    */ 
    float degree = event.values[0];// 存放了方向值 
    /**动画效果*/ 
    RotateAnimation animation = new RotateAnimation(predegree, degree, 
    Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); 
    animation.setDuration(200); 
    imageView.startAnimation(animation); 
    predegree=-degree; 
    } 
    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 
}

/** 
*/ 
}

3、在onResume方法中创建一个方向传感器,并向系统注册监听器

@Override 
protected void onResume() { 
    /** 
    * 获取方向传感器 
    * 通过SensorManager对象获取相应的Sensor类型的对象 
    */ 
    Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 
    //应用在前台时候注册监听器 
    manager.registerListener(listener, sensor, 
    SensorManager.SENSOR_DELAY_GAME); 
    super.onResume(); 
}

4、最后我们在onPause()中注销所有传感器的监听,释放方向感应器资源!

@Override 
protected void onPause() { 
    //应用不在前台时候销毁掉监听器 
    manager.unregisterListener(listener); 
    super.onPause(); 
}


import android.app.Activity;
import android.content.Context;
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;
public class MainActivity extends Activity {
private ImageView imageView;
/** 传感器管理器 */
private SensorManager manager;
private SensorListener listener = new SensorListener();
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageView = (ImageView) this.findViewById(R.id.imageView); imageView.setKeepScreenOn(true);//屏幕高亮 //获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象 manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() { /** * 获取方向传感器 * 通过SensorManager对象获取相应的Sensor类型的对象 */ Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION); //应用在前台时候注册监听器 manager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME); super.onResume();
}
@Override
protected void onPause() { //应用不在前台时候销毁掉监听器 manager.unregisterListener(listener); super.onPause();
}
private final class SensorListener implements SensorEventListener {
private float predegree = 0;
@Override
public void onSensorChanged(SensorEvent event) { /** * values[0]: x-axis 方向加速度 */ float degree = event.values[0];// 存放了方向值 /**动画效果*/ RotateAnimation animation = new RotateAnimation(predegree, degree, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); animation.setDuration(200); imageView.startAnimation(animation); predegree=-degree; /**
*/ } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }
}
}

android 方向传感器应用相关推荐

  1. Android 方向传感器的简单使用

    方向传感器基本是Android手机必备功能,所有这个demo基本都可以使用. 界面一个ImageView(蓝色条) 下面是自己画的圆和线(最开始没去找图,懒) <?xml version=&qu ...

  2. Android方向传感器实践——自己动手做指南针

    传感器(Sensor)系统可以让智能手机的功能更加丰富多彩,在Android系统中支持多种传感器.Android的Sensor系统涉及了Android的各个层次. Android系统支持多种传感器,有 ...

  3. Android方向传感器学习之指南针示例

    刚刚跟着视频学习了关于Android中传感器的操作示例,利用方向传感器做了一个很简单的指南针应用...平时工作项目中很少有用到传感器功能,所以很多都不知道,现在自学些,当作慢慢入门吧... 首先贴出软 ...

  4. Android 方向传感器与磁力计和加速度传感器之间的关系

    一般情况下,在android系统中获取手机的方位信息azimuth似乎是很简单的事情,在api中有TYPE_ORIENTATION常量,可以像得到加速度传感器那样得到方向传感器sm.getDefaul ...

  5. Android方向传感器的相关问题

    android的方向传感器Sensor.TYPE_ORIENTATION(已过时,实测新方法得到的结果和旧方法一致) 三个值分别表示: value[0] 方向角,用来测方向 value[1] 垂直方向 ...

  6. android 方向传感器Sensor或指南针罗盘研究

    目前获取方向角度的方法有两种: 1.目前谷歌建议使用SensorManager中Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD SensorM ...

  7. Android实例-OrientationSensor方向传感器(XE8+小米2)

    相关资料: <修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题>:http://www.cnblogs.com/onechen/p/4497282. ...

  8. 【转】Android 加速度传感器 (G-Sensor)

    http://blog.csdn.net/stevenliyong/archive/2009/09/13/4547568.aspx Android 加速度传感器 (G-Sensor) 收藏 Andro ...

  9. Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37730469 在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图 ...

  10. Android 利用方向传感器实现 指南针

    step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中 step2:设计应用的UI界面,main.xml <?xml version=" ...

最新文章

  1. 用户管理 之 用户(User)和用户组(Group)配置文件详解
  2. [Hive_add_8] Hive 常用参数配置
  3. android 读取其他应用程序,android – 在另一个应用程序中请求我自己的ContentProvider的读取权限...
  4. win10 自待wmi应用 查询wmi
  5. if break语句_8、嵌套if语句、switch语句
  6. 如何处理SAP Fiori Launchpad KPI tile点击后出现的错误消息
  7. 是否有必要使用外键?为什么不用外键?
  8. Codewars-The wheat/rice and chessboard problem(棋盘放谷粒)
  9. 查看python安装位置图_python安装路径怎么找
  10. ubuntu中wine的安装位置
  11. Android学习笔记之Broadcast Receiver
  12. python报告,python测试结果报告
  13. 程序员做饭指南,GitHub教程来了
  14. 彻底搞懂git代码冲突问题----产生冲突以及解决冲突
  15. 4.蒙特卡洛(Monte-Carlo, MC)+时序差分(Temporal Difference, TD)
  16. FastAPI 快速入门
  17. 算法竞赛专题解析(0)--写作计划
  18. ZZULIOJ1096-1100Python解法
  19. 微服务拆分:业务横向拆分和纵向拆分
  20. ndk开发流程,9次Android面试经验总结,已拿offer入职

热门文章

  1. 【SAP GUI Scripting】 入门系列(1)_基本设置
  2. C++ 常指针和指向常量的指针
  3. 琴生Jensen不等式(期望意义下的形式)
  4. 饥饿的牛(hunger)
  5. ##Mysql数据库DQL查询工具的使用
  6. 享受蓝牙(一): 开始享受
  7. airdrop搜不到对方_如何在Mac的Finder中将AirDrop添加到收藏夹侧边栏
  8. scala程序启动时,Could not locate executable null\bin\winutils.exe in the Hadoop binaries解决方案...
  9. 金丹期前期:1.4、python语言-python的程序的核心数据类型:字符串、列表、元组、字典
  10. [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——