亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android利用傳感器實現(xiàn)微信搖一搖功能

 更新時間:2021年10月11日 16:52:11   作者:jopen  
這篇文章主要為大家詳細介紹了Android利用傳感器實現(xiàn)微信搖一搖功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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; 
 
//需要實現(xiàn)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("現(xiàn)在給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等, 
 //根據(jù)不同應用,需要的反應速率不同,具體根據(jù)實際情況設定 
 
 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){ 
 
 
 /*因為一般正常情況下,任意軸數(shù)值最大就在9.8~10之間,只有在你突然搖動手機 
 *的時候,瞬時加速度才會突然增大或減少。 
 *所以,經(jīng)過實際測試,只需監(jiān)聽任一軸的加速度大于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); 
 
 } 
 
 } 
 
} 
 
} 

現(xiàn)在的不少應用都用到了搖動手機改變內容的功能,比如微信中的“搖一搖”功能。前兩天要實現(xiàn)這個功能,稍微看了一下關于傳感器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 方向就是手機的空間垂直方向,天空的方向為正,地球的方向為負

所以說,你的手機放置的空間位置不同,它三個方向的加速度也不同。在這里,三個方向的加速度,與我們傳統(tǒng)意義上的加速度(9.8m/s2)有所區(qū)別,需細細品味。

以上是搖動手機后清除TextView的文字的代碼。

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

相關文章

最新評論