传感器
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; } } }; }
