Android-類似微信和米聊中搖一搖找好友的功能的實現
要實現該功能,主要借助于重力感應
public class TestSensorActivity extends Activity implements SensorEventListener { private SensorManager manager; private Vibrator vibrator; private TextView xSensor,ySensor,zSensor; private float X = 0.0f; private float Y = 0.0f; private float Z = 0.0f; private Button button1,button2; private TextView textView; private Animation animation ,animation2 ; private FrameLayout layout; private ImageView imageView; private String[] strs; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 0: textView.setText((String)msg.obj); imageView.startAnimation(animation); textView.startAnimation(animation); break; } } }; private int i = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); manager = (SensorManager) getSystemService(SENSOR_SERVICE); //首先得到傳感器管理器對象 vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //注冊監聽器 manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), manager.SENSOR_DELAY_NORMAL); //第一個參數是Listener,第二個參數是所得傳感器類型,第三個參數值獲取傳感器信息的頻率 } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); manager.unregisterListener(this);//解綁定Listener } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub //傳感器信息改變時執行該方法 float[] values = event.values; float x = values[0]; //x軸方向的重力加速度,向右為正 float y = values[1]; // y軸方向的重力加速度,向前為正 float z = values[2]; // z軸方向的重力加速度,向上為正 if(x>40 || x<-40 || y>40 || y<-40 || z>40 || z<-40){ //一般在這三個方向的重力加速度達到40就達到了搖晃手機的狀態。當然這個值可以根據需要,自己定義。 vibrator.vibrate(200); int random = getRandom(); Message msg = new Message(); msg.what = 0; msg.obj = strs[random]; handler.sendMessage(msg); } } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!