您好,欢迎来到易配在线!登录 注册 经销商|联系我们|综合搜索
施耐德Schneider安森美ON SemiconductorMTL丹佛斯Danfoss宜科ELCO阿尔法ALPHA引春机械力控华康HUACON内密控NEMICON

利用传感器实现微信的摇一摇功能

2017/2/15 9:06:52              

现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。

传感器有几种类型:

方向传感器:   Sensor.TYPE_ORIENTATION

 加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER

光线传感器:    Sensor.TYPE_LIGHT

磁场传感器:   Sensor.TYPE_MAGNETIC_FIELD

距离(临近性)传感器: Sensor.TYPE_PROXIMITY

温度传感器:   Sensor.TYPE_TEMPERATURE

在摇动手机的功能中,我们只用加速度传感器就行了~~

加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是

  values[0]: x-axis 方向加速度

  values[1]: y-axis 方向加速度

  values[2]: z-axis 方向加速度

  其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点

  x 方向就是手机的水平方向,右为正

  y 方向就是手机的水平垂直方向,前为正

  y 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负

所以说,你的手机放置的空间位置不同,它三个方向的加速度也不同。在这里,三个方向的加速度,与我们传统意义上的加速度(9.8m/s2)有所区别,需细细品味。

以下是摇动手机后清除TextView的文字的代码:

package gy.lovers;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import android.app.Activity;

import android.app.Service;

import android.content.res.Resources;

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.view.View;

import android.widget.Button;

//需要实现SensorEventListener接口

public class LoversChoise extends Activity implements SensorEventListener{    

Button clear;

 //定义sensor管理器

private SensorManager mSensorManager;

 //震动

private Vibrator vibrator;

        public void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState);

               setContentView(R.layout.loverschoise);            

             //获取传感器管理服务

               mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

               //震动

               vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);            

              clear = (Button) findViewById(R.id.clear);

              clear.setListener(new Button.Listener(){

              @Override

               public void (View arg0) {

                // TODO Auto-generated method stub

               //点击button后,给button按钮设置了text

             clear.setText("现在给button的text赋值喽~");

       });

@Override

protected void onResume(){

 super.onResume();

 //加速度传感器

 mSensorManager.registerListener(this,

 mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),

 //还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,

 //根据不同应用,需要的反应速率不同,具体根据实际情况设定

 SensorManager.SENSOR_DELAY_NORMAL);

}

@Override

protected void onStop(){

 mSensorManager.unregis

  • 喜欢 ( 0 )
  • 不喜欢 ( 0 )

网友评论

(查看全部0条评论)

您好 ,喜欢这篇文章吗?  

您还未登录,登录后才可发表评论,请立即登录注册

站点地图| 会员服务| 关于网站| 招聘信息| 法律声明| 联系我们| 友情链接

邮箱:1010196856@qq.com 客服热线:0571-88802870(工作时间:周一至周五8:30至17:30)
Copyright@2014-2016 www.epiol.com All Rights Reserved 版权所有:杭州锐联工业科技有限公司   浙ICP备13025252号-2   公安机关互联网站安全 浙公网安备33010502003191号

微信扫一扫


技术咨询