国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android利用傳感器實現微信搖一搖功能

2019-12-12 04:45:23
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android微信搖一搖功能的實現方法,供大家參考,具體內容如下

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.setOnClickListener(new Button.OnClickListener(){          @Override          public void onClick(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.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   //當傳感器精度改變時回調該方法,Do nothing.  }  @Override  public void onSensorChanged(SensorEvent event) {   // 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)){     //搖動手機后,設置button上顯示的字為空    clear.setText(null);    //搖動手機后,再伴隨震動提示~~    vibrator.vibrate(500);    }   }  }  } 

現在的不少應用都用到了搖動手機改變內容的功能,比如微信中的“搖一搖”功能。前兩天要實現這個功能,稍微看了一下關于傳感器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的文字的代碼。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 铜山县| 维西| 南充市| 南漳县| 凤凰县| 马山县| 济南市| 库尔勒市| 乐东| 通许县| 荣昌县| 琼海市| 南部县| 任丘市| 依安县| 德州市| 思南县| 肇源县| 合作市| 尚义县| 布尔津县| 陕西省| 肇庆市| 肥东县| 绥宁县| 浑源县| 宜昌市| 东乡| 海安县| 新乡县| 鄂托克前旗| 长阳| 锡林浩特市| 常山县| 麻栗坡县| 习水县| 肥西县| 岱山县| 齐河县| 偃师市|