Android 微信摇一摇记录摇的次数

来源:互联网 发布:c语言猜数字1到100游戏 编辑:程序博客网 时间:2024/06/11 01:45

源码:http://download.csdn.net/detail/lm_zp/9524394

Xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <TextView        android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="欢迎" /></RelativeLayout>

MainActivity.java  震动加权限

package com.example.mygravitysensor;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.app.Activity;import android.app.Service;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;public class MainActivity extends Activity implements SensorEventListener{  //定义sensor管理器    private SensorManager mSensorManager;    //震动    private Vibrator vibrator;private TextView text;int  num=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); //获取传感器管理服务        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);        //震动        vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);                       text = (TextView) findViewById(R.id.text);       text.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub text.setText("摇一摇"); num=0;}});}@Overrideprotected 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);}@Overrideprotected void onStop(){  mSensorManager.unregisterListener(this);  super.onStop();}@Overrideprotected void onPause(){  mSensorManager.unregisterListener(this);  super.onPause();}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stub// TODO Auto-generated method stub  int sensorType = event.sensor.getType();    //values[0]:X轴,values[1]:Y轴,values[2]:Z轴  float[] values = event.values;    if(sensorType == Sensor.TYPE_ACCELEROMETER){    /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机  *的时候,瞬时加速度才会突然增大或减少。  *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置  *就OK了~~~  */   if((Math.abs(values[0])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)){   num++;    //摇动手机后,设置button上显示的字为空    text.setText("摇了"+num+"下");        //摇动手机后,再伴随震动提示~~  vibrator.vibrate(500);   }  }}}


0 0