600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【Android开发基础】传感器(方向传感器 加速度传感器)

【Android开发基础】传感器(方向传感器 加速度传感器)

时间:2018-09-22 06:04:18

相关推荐

【Android开发基础】传感器(方向传感器 加速度传感器)

文章目录

一、引言二、设计1、指南针(方向传感器)(1)效果(2)UI设计(3)功能设计 2、摇一摇(加速度传感器)(1)效果(2)UI设计(3)功能设计 三、附件

一、引言

描述:传感器是机器产品的重要组成,一件拥有传感器的产品,才能更加具备“情感”。就比如地图导航类产品,就需要用到多种传感器(方向传感器、磁场传感器、加速度传感器等)。传感器的存在,能够更好的表达出用户无法用语言详细描述的需求。难度:中级知识点:

1、方向传感器

2、加速度传感器

3、Animation动画例子:指南针、摇一摇

二、设计

虚拟机没有传感器,所以传感器功能需要使用真机来进行模拟。

1、指南针(方向传感器)

(1)效果
(2)UI设计

建议:关于ImageView中src图片路径,最好是选择一张有方向感的图片(比如:箭头、等腰三角形)。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"tools:context=".MainActivity"><ImageViewandroid:id="@+id/image_znz"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="fitCenter"android:src="@drawable/znz"/></RelativeLayout>

(3)功能设计

注册传感器监听器

SensorManager mSensorManager; //管理器@Overrideprotected void onResume(){super.onResume();mSensorManager.registerListener(mylistenner, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME);}

传感器事件侦听器

ImageView image; //指南针图片float currentDegree = 0f; //指南针图片转过的角度Mylistenner mylistenner =new Mylistenner();public class Mylistenner implements SensorEventListener{@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {//传感器值改变// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent event) {//精度改变// TODO Auto-generated method stub//获取触发event的传感器类型int sensorType = event.sensor.getType();switch(sensorType){case Sensor.TYPE_ORIENTATION:float degree = event.values[0]; //获取z转过的角度//穿件旋转动画RotateAnimation ra = new RotateAnimation(currentDegree,-degree,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);ra.setDuration(100);//动画持续时间image.startAnimation(ra);currentDegree = -degree;break;}}}

初始化代码

image = (ImageView)findViewById(R.id.image_znz);mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); //获取管理服务

2、摇一摇(加速度传感器)

(1)效果
(2)UI设计

建议:最好是将一张完整的图片,一分为二。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#404445"android:gravity="center"tools:context=".MainActivity"><ImageViewandroid:id="@+id/image_sha"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/sha"/><ImageViewandroid:id="@+id/image_xia"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/xia"android:layout_below="@+id/image_sha"/></RelativeLayout>

动画一 translate_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android"><translateandroid:fromXDelta="0.0"android:fromYDelta="0.0"android:toXDelta="0.0"android:toYDelta="100"android:repeatCount="infinite"android:repeatMode="reverse"android:duration="1000"/></set>

动画二 translatex_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android"><translateandroid:fromXDelta="0.0"android:fromYDelta="0.0"android:toXDelta="0.0"android:toYDelta="-100"android:repeatCount="infinite"android:repeatMode="reverse"android:duration="1000" /></set>

(3)功能设计

AndroidManifest.xml 注册权限

<uses-permission android:name="android.permission.VIBRATE" />

加速度传感器注册监听器

private SensorManager sensorManager; //定义传感器管理器@Overrideprotected void onResume() {super.onResume();sensorManager.registerListener(this,sensor , SensorManager.SENSOR_DELAY_GAME);}

传感器事件侦听器

@Overridepublic void onSensorChanged(SensorEvent event) {float[] values = event.values; //获取传感器X、Y、Z三个轴的输出信息int sensorType = event.sensor.getType(); // 获取传感器类型if (sensorType == Sensor.TYPE_ACCELEROMETER) {//如果是加速度传感器//X轴输出信息>15,Y轴输出信息>15,Z轴输出信息>20if (values[0] > 15 || values[1] > 15 || values[2] > 20) {//动画向上Animation translate_sha = AnimationUtils.loadAnimation(this,R.anim.translatex_anim);sha.startAnimation(translate_sha);//动画向下Animation translate_xia = AnimationUtils.loadAnimation(this,R.anim.translate_anim);xia.startAnimation(translate_xia);Toast.makeText(MainActivity.this, "不好意思,摇晚了!!", Toast.LENGTH_SHORT).show();vibrator.vibrate(500);//设置振动器频率sensorManager.unregisterListener(this); //取消注册监听器}}}

三、附件

(CSDN下载地址)

方向传感器:/download/weixin_48916759/87916890

加速度传感器:/download/weixin_48916759/87916891

(Gitee下载地址)

方向传感器:/xu-pq/android-demo/tree/master/zhinanzhen

加速度传感器:/xu-pq/android-demo/tree/master/yaoyiyao

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。