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

android摇一摇服务

2014-02-25 22:01 405 查看
摇一摇程序主要依靠的是系统的“加速度传感器”。

加速度传感器用于感知手机的加速度,其返回值是一个返回值为3的数组,数组中的3(values[0],values[2],values[2],)个元素分别代表手机的加速度在x,y,z轴上的分量。

开发步骤:

1、首先要获得SensorManager对象

SensorManager mySensorManager = (SensorManager )getSystemService(SENSOR_SERVICE);

2、获取Sensor或者Vibrator对象

3、实现SensorEventListener接口

4、注册和注销监听器

实例代码:

package com.cutsreen.cn;

import com.cutscreen.contant.Contant;
import com.cutscreen.service.FloatingService;
import com.cutscreen.service.ShakeService;
import com.yangyu.mycustomtab02.R;
import android.app.Service;
import android.content.Intent;
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.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class FragmentPage1 extends Fragment implements SensorEventListener{

private SensorManager mySensorManager = null;
private Vibrator vibratorShake = null;

@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mySensorManager = (SensorManager) getActivity().getSystemService(getActivity().SENSOR_SERVICE);
vibratorShake = (Vibrator)getActivity().getSystemService(Service.VIBRATOR_SERVICE);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_1, container,false);

ralativelayout02 = (RelativeLayout)root.findViewById(R.id.yaoyiyao);
ralativelayout02.setOnClickListener(new ralativelayoutShakeClickListener());
ralativelayout01 = (RelativeLayout)root.findViewById(R.id.floatwindows);
ralativelayout01.setOnClickListener(new ralativelayoutFloatClickListener());
return root;
}

@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
mySensorManager.registerListener(this,
mySensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
mySensorManager.unregisterListener(this);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
int sensorType = event.sensor.getType();
float[]values = event.values;
if(sensorType == Sensor.TYPE_ACCELEROMETER){
if(Math.abs(values[0])>17||Math.abs(values[2])>17){
Log.d("sensor x","=======values[0]="+values[0]);
Log.d("sensor y","=======values[1]="+values[1]);
Log.d("sensor z","=======values[2]="+values[2]);
Toast.makeText(getActivity().getApplicationContext(), "摇一摇截屏",Toast.LENGTH_SHORT).show();
//在这里添加截屏代码
vibratorShake.vibrate(500);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 传感器