本文实例讲述了Android编程之方向传感器用法。分享给大家供大家参考,具体如下:
/** * 传感器指针Demo * * @description: * @author ldm * @date 2016-4-25 下午5:29:18 */ public class SensorHandActivity extends GraphicsActivity { // 传感器管理对象 private SensorManager mSensorManager; // 传感器类 private Sensor mSensor; // 自定义绘制指针View private MyCompassView mView; /** * 方向传感器检测到的感应值 values[0]: Azimuth(方位),地磁北方向与y轴的角度,围绕z轴旋转(0到359)。0=North, * 90=East, 180=South, 270=West values[1]: Pitch(俯仰),围绕X轴旋转(-180 to 180), * 当Z轴向Y轴运动时是正值 values[2]: Roll(滚),围绕Y轴旋转(-90 to 90),当X轴向Z轴运动时是正值 */ private float[] mValues; // 传感监听 private final SensorEventListener mSensorListener = new SensorEventListener() { public void onSensorChanged(SensorEvent event) { mValues = event.values; if (mView != null) { mView.invalidate(); } } public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); mView = new MyCompassView(this); setContentView(mView); } @Override protected void onResume() { super.onResume(); /** * 在onResume方法中注册传感器监听 事件 * 第一个参数:监听Sensor事件,第二个参数是Sensor目标种类的值,第三个参数是延迟时间的精度密度。延迟时间的精密度参数 参数 * 延迟时间 SensorManager.SENSOR_DELAY_FASTEST 0ms * SensorManager.SENSOR_DELAY_GAME 20ms SensorManager.SENSOR_DELAY_UI * 60ms SensorManager.SENSOR_DELAY_NORMAL 200ms */ mSensorManager.registerListener(mSensorListener, mSensor, SensorManager.SENSOR_DELAY_GAME); } @Override protected void onStop() { // 在onStop方法中取消注册监听 mSensorManager.unregisterListener(mSensorListener); super.onStop(); } private class MyCompassView extends View { // 定义画笔Paint private Paint mPaint; // 定义绘制指针的路径Path private Path mPath; public MyCompassView(Context context) { super(context); initPaintAndPath(); } private void initPaintAndPath() { // 初始化画笔 mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.FILL); // 初始化绘制路径 mPath = new Path(); mPath.moveTo(0, -50);// 移动到指点点 mPath.lineTo(-20, 60);// 用线条连接到指定点 mPath.lineTo(0, 50); mPath.lineTo(20, 60); mPath.close();// 关闭路径 } @Override protected void onDraw(Canvas canvas) { // 设置画面背景 canvas.drawColor(Color.WHITE); int w = canvas.getWidth(); int h = canvas.getHeight(); int cx = w / 2; int cy = h / 2; canvas.translate(cx, cy);// 移动画面,把指针放到中央 if (mValues != null) { canvas.rotate(-mValues[0]); } canvas.drawPath(mPath, mPaint); } } }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
监听手机方向 在手机淘宝中:这里的监听陀螺仪, 实际是为了监听手机方向的改变 ,使得 H5 页面可以根据手机方向做出不同反应。在手机中,有两个传感器可以实现这一目的:陀螺仪和重力感应器。陀螺仪可以得到手机空间位置的欧拉角:roll、pitch 和 yaw,重力感应器则可以得到重力在手机三个方向上的分量。 但是,由于在 iOS 和 Android 平台下得到的陀螺仪数据暂时难以统一,而重力感应器的数
主要内容:本节引言:,1.三维坐标系的概念:,2.方向传感器的三个值,3.简单的Demo帮助我们理解这三个值的变化:,4.一个简易版的文字指南针示例,5.本节示例代码下载:,本节小结:本节引言: 在上一节中我们中我们对传感器的一些基本概念进行了学习,以及学习了使用传感器的套路, 本节给大家带来的传感器是方向传感器的用法,好的,开始本节内容~ 1.三维坐标系的概念: 在Android平台中,传感器框架通常是使用一个标准的三维坐标系来表示一个值的。以本节 要讲的方向传感器为例子,确定一个方向也需要一
问题内容: 我目前正在开发一个使用多个传感器的android应用程序,在Method中使用了该方法来获取传感器,并在method中使用 了该方法,以便在文本视图中显示加速度计值。 如何添加更多传感器并以相同方式显示其值?我说什么时候程序将如何知道我指的是哪个传感器? 谢谢您的任何提前帮助,Maja 问题答案: 您将需要使用event.sensor.getType()方法检查传感器值是否属于该类型的
本文向大家介绍Android编程之短信窃听器实现方法,包括了Android编程之短信窃听器实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之短信窃听器实现方法。分享给大家供大家参考,具体如下: 服务器: 1、修改frombean:VideoForm中增加短信时间、内容和发送者属性。 2、VideoManageAction中增加方法getSMS()来获取窃听器发送的
我做了一个简单的加速度计应用程序,我想做一个配套的小部件。但是每次向widgetprovider添加传感器时,都会出现以下错误: 07-25 10:31:01.337:E/AndroidRuntime(8908):致命异常:main 07-25 10:31:01.337:E/AndroidRuntime(8908):java.lang.RuntimeException:无法启动接收器com.exa
本文向大家介绍Android编程之菜单实现方法,包括了Android编程之菜单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之菜单实现方法。分享给大家供大家参考,具体如下: 菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机都要有一个“menu”键,即菜单键,由此可见菜单在Android程序中的重要与特殊,其中Andr