您的位置:首页 > 移动开发 > 微信开发

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

2016-05-18 20:48 411 查看
源码: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;
@Override
protected 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() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
text.setText("摇一摇");
num=0;
}
});
}
@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.unregisterListener(this);
super.onStop();
}

@Override
protected void onPause(){
mSensorManager.unregisterListener(this);
super.onPause();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public 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);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: