传感器有几种类型:
方向传感器: Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器: Sensor.TYPE_LIGHT
磁场传感器: Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器: Sensor.TYPE_TEMPERATURE
这里我们利用的是加速度传感器
package com.jamin.sensor;
import android.app.Activity;
import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SensorTestActivity extends Activity implements SensorEventListener{
/** Called when the activity is first created. */
TextView tv = null;
Button button = null;
SensorManager sensorManager = null;
Vibrator vibrator = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.textview1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("文本复原");
}
});
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//当传感器精度改变时回调该方法,Do nothing.
}
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X轴,values[1]:Y轴,values[2]:Z轴
float[] values = event.values;
if(sensorType == Sensor.TYPE_ACCELEROMETER){
if((Math.abs(values[0])>17||Math.abs(values[1])>17||Math.abs(values[2])>17)){
Log.d("sensor ", "============ values[0] = " + values[0]);
Log.d("sensor ", "============ values[1] = " + values[1]);
Log.d("sensor ", "============ values[2] = " + values[2]);
tv.setText("摇一摇");
//摇动手机后,再伴随震动提示~~
vibrator.vibrate(500);
}
}
}
}
记得在onresume和onpause的时候开关sensor的监听事件。
如果想调整sensor的敏感程度,就去修改,value[0,1,2] 大于的上限。
分享到:
相关推荐
在Android开发中,微信的“摇一摇”功能是一个...通过合理的阈值设置和事件处理,可以在Android应用中实现与微信类似的摇一摇交互。在实际开发过程中,可以根据用户反馈和具体应用场景进行优化,确保功能既有趣又实用。
在Android平台上,实现“微信摇一摇”功能是一项有趣且具有挑战性的任务。这个功能让用户通过摇动手机来触发特定的交互,例如摇一摇获取红包、参与游戏或切换歌曲等。下面我们将深入探讨如何在Android应用中实现类似...
### Android 实现类似微信的“摇一摇”功能解析 #### 概述 在移动互联网时代,各种新颖的交互方式不断涌现,其中“摇一摇”作为一种简单有趣的用户交互方式被广泛应用于各种移动应用中,比如微信中的“摇一摇”...
微信摇一摇功能的实现主要依赖于设备的运动传感器,如加速度计和陀螺仪。这些传感器能够检测到设备在三维空间中的运动和方向变化。当用户摇动手机时,传感器会捕捉到这一系列动作并生成相应的数据流。 1. **传感器...
【微信摇一摇功能详解】 微信的“摇一摇”是一项独特且受欢迎的功能,它让用户通过晃动手机来触发特定的交互。这个功能的核心在于它能够检测到用户的摇动动作并将其转化为可识别的事件。在本文中,我们将深入探讨...
微信摇一摇功能是微信应用程序中的一个标志性互动功能,它让用户通过手机的加速度传感器来模拟现实世界中的“摇晃”动作,进而触发相应的互动事件,如交友、抽奖或音乐切换等。在Android平台上实现这一功能,需要...
在Android平台上,实现类似微信的“摇一摇”功能,主要依赖于设备的传感器系统,尤其是加速度传感器。...通过以上步骤,我们可以创建出一个类似微信摇一摇的功能,为用户提供趣味且直观的交互体验。
这篇教程将详细介绍如何在Android上实现一个类似微信的“摇一摇”功能,包括加载动画的显示和声音的播放。 首先,我们要理解“摇一摇”功能的基本原理。这个功能主要依赖于设备的加速度传感器(Accelerometer)。当...
在Android开发中,"仿微信摇一摇功能"是一个常见的用户交互设计,它模拟了微信应用中的“摇一摇”体验。这个功能让用户体验到趣味性的互动,通常用于触发特定的活动或者功能,如随机匹配用户、领取红包、参与游戏等...
综上所述,通过Android的传感器API,我们可以实现一个类似微信摇一摇的功能,包括检测手机的加速度变化、设置阈值判断摇动、以及在摇动时触发相应的操作。这个功能可以广泛应用于各种场景,如抽奖、分享、互动游戏等...
这个Demo适用于那些希望在自己的应用程序中集成类似微信摇一摇交互体验的开发者。通过学习和参考这个项目,你可以理解并掌握摇动检测的原理以及如何在Android应用中实现实时响应用户的摇动操作。 摇一摇功能在移动...
在Android平台上,开发人员可以利用系统的API来控制设备的铃声、震动以及...例如,结合上述代码,我们可以创建一个简单的应用,实现类似于微信摇一摇的功能,当用户摇动手机时,可以播放特定的铃声或执行其他操作。