Android中的传感器之摇一摇

xiaoxiao2021-02-28  186

     传感器

1.传感器的概念及其作用

传感器是一种物理装置,能够探测外界的信号或者信息,并将信号或者信息传递给其他的装置。

举例:人的手-》去探测开水-》传递给大脑

   手机:加速器是否变化-》传递给某个程序(已经注册好了传感器)

作用:(1,)将获得的信息进行传输或者储存或者显示

   (2,)程序使用更加友好

2.传感器的类型

(1,)运动传感器:加速度传感器,陀螺仪传感器

(2,)环境传感器:温度传感器,光线传感器

(3,)位置传感器:方向传感器,磁力计传感器

3.android传感器类的架构

(1).SensorManager创建一个传感器服务的实例

(2).Sensor代表一个具体的传感器实例

(3).SensorEvent代表了传感器事件

(4).SensorEventListener接口:监听传感器的值的变化以及精度的变化

Android的动画简介

1.补间动画(Tween animation)

{

1.只能针对view对象,不能改变view的属性,动画子类的统一父类animation

2.AlphaAnimation   透明动画类

3.RotateAnimation  旋转动画

4.ScaleAnimation  缩放动画

5.TranslateAnimaion 移动动画

6.AnimationSet  动画集合,可以集成多种动画

}

2.逐帧动画(Frame animation)

3.属性动画(Property animation)

使ui控件能旋转,缩放,移动,透明等效果

震动与音效

Vibrator类实现震动效果:

{

1.Context.getSystemService()获取震动实例化

2.vibrate(long[] pattern,int repeat)指定时间内震动并且可以指定震动持续的时间,

repeat重复次数,pattern指定时间内震动和震动持续的时间

   cancel()取消震动

}

MediaPlayer类实现音频audio,视频video的播放功能

具体代码

package com.example.administrator.yaoyiyao; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private SensorManager sensorManager; private Vibrator vibrator; private static final String TAG = "MainActivity"; private static final int SENSOR_SHAKE = 10; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); } @Override protected void onResume() { super.onResume(); if (sensorManager != null) {// 注册监听器 sensorManager.registerListener( sensorEventListener sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),  SensorManager.SENSOR_DELAY_NORMAL); // 第一个参数是Listener,第二个参数是所得传感器类型, //第三个参数值获取传感器信息的频率 } } @Override protected void onStop() { super.onStop(); if (sensorManager != null) {// 取消监听器 sensorManager.unregisterListener(sensorEventListener); } } /** * 重力感应监听 */ private SensorEventListener sensorEventListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // 传感器信息改变时执行该方法 float[] values = event.values; float x = values[0]; // x轴方向的重力加速度,向右为正 float y = values[1]; // y轴方向的重力加速度,向前为正 float z = values[2]; // z轴方向的重力加速度,向上为正 Log.i(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + "; z轴方向的重力加速度" + z); // 一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。 int medumValue = 19; // 如果不敏感请自行调低该数值,低于10的话就不行了,因为z轴上的加速度本身就已经达到10了 if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) { vibrator.vibrate(200); Message msg = new Message(); msg.what = SENSOR_SHAKE; handler.sendMessage(msg); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; /** * 动作执行 */ Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SENSOR_SHAKE: Toast.makeText(MainActivity.this, "检测到摇晃,执行操作!", Toast.LENGTH_SHORT).show(); Log.i(TAG, "检测到摇晃,执行操作!"); break; } } }; }

转载请注明原文地址: https://www.6miu.com/read-43815.html

最新回复(0)