日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传感器(7)加速传感器,重力传感器,邻近传感器,光线传感器 综合示例

發布時間:2024/3/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传感器(7)加速传感器,重力传感器,邻近传感器,光线传感器 综合示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

綜合示例,包含:?//加速傳感器 //重力傳感器?//鄰近傳感器?//光線傳感器

1 import android.app.Activity; 2 import android.hardware.Sensor; 3 import android.hardware.SensorEvent; 4 import android.hardware.SensorEventListener; 5 import android.hardware.SensorManager; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.widget.TextView; 9 10 public class MotionSensorActivity extends Activity 11 //第1步, 實現傳感器事件接口,其中的兩個onSensorChanged和onAccuracyChanged 12 implements SensorEventListener { 13 14 //第2步, 準備相關成員變量 15 private TextView tvAccelerometer;//用于顯示結果 16 private SensorManager mSensorManager;//管理motion senser 17 private float gravity_X,gravity_Y,gravity_Z;//重力傳感器返回的數據 分別代表x,y,z軸 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_motion_sensor); 23 24 tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); 25 26 //第3步, 得到SensorManager 27 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 28 29 } 30 //一般在當前窗口顯示時老注意傳感器廣播接收器 31 protected void onResume() { 32 super.onResume(); 33 34 //第4步, 注冊相關傳感器 35 //加速傳感器 36 Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 37 //registerListener 第三個參數 有4個值,敏感度也不一樣,0-3,低最敏感.SENSOR_DELAY_UI是2 38 mSensorManager.registerListener(this,accel,SensorManager.SENSOR_DELAY_UI); 39 40 //重力傳感器 41 Sensor gravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 42 mSensorManager.registerListener(this,gravity,SensorManager.SENSOR_DELAY_FASTEST); 43 44 //鄰近傳感器 45 Sensor proximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 46 mSensorManager.registerListener(this,proximity,SensorManager.SENSOR_DELAY_UI); 47 48 //光線傳感器 49 Sensor light = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 50 mSensorManager.registerListener(this,light,SensorManager.SENSOR_DELAY_UI); 51 } 52 //實現傳感器事件接口 傳感器感觸到精確度變化. 53 @Override 54 public void onAccuracyChanged(Sensor sensor, int accuracy) { 55 56 } 57 //實現傳感器事件接口 傳感器感觸到數據變化. 58 @Override 59 public void onSensorChanged(SensorEvent event) { 60 //第5步, 處理傳回來的數據 61 switch (event.sensor.getType()) { 62 case Sensor.TYPE_ACCELEROMETER: //加速度傳感器 63 final float alpha = 0.8f; 64 gravity_X = alpha * gravity_X + (1 - alpha) * event.values[0]; 65 gravity_Y = alpha * gravity_Y + (1 - alpha) * event.values[1]; 66 gravity_Z = alpha * gravity_Z + (1 - alpha) * event.values[2]; 67 68 String accelerometer = "加速度\n" 69 + "X:" + (event.values[0] - gravity_X) + "\n" 70 + "Y:" + (event.values[1] - gravity_Y) + "\n" 71 + "Z:" + (event.values[2] - gravity_Z); 72 73 Log.d("z", String.valueOf(event.values[2] - gravity_Z)); 74 tvAccelerometer.setText(accelerometer); 75 76 break; 77 case Sensor.TYPE_GRAVITY://重力傳感器 78 gravity_X = event.values[0]; 79 gravity_Y = event.values[1]; 80 gravity_Z = event.values[2]; 81 break; 82 case Sensor.TYPE_PROXIMITY://鄰近傳感器 83 setTitle(String.valueOf(event.values[0])); 84 break; 85 case Sensor.TYPE_LIGHT: 86 tvAccelerometer.append("\n"+event.values[0]+"\n"); 87 break; 88 default: 89 break; 90 } 91 92 } 93 //一般在當前窗口關閉時取消注冊. 94 //第6步, 取消注冊 95 @Override 96 protected void onPause() { 97 super.onPause(); 98 mSensorManager.unregisterListener(this); 99 } 100 }

?

import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.util.Log;import android.widget.TextView;
public class MotionSensorActivity extends Activity?//第1步, 實現傳感器事件接口,其中的兩個onSensorChanged和onAccuracyChangedimplements SensorEventListener {
//第2步, 準備相關成員變量private TextView tvAccelerometer;//用于顯示結果private SensorManager mSensorManager;//管理motion senserprivate float gravity_X,gravity_Y,gravity_Z;//重力傳感器返回的數據 分別代表x,y,z軸
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_motion_sensor);
tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);//第3步, 得到SensorManagermSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}//一般在當前窗口顯示時老注意傳感器廣播接收器protected void onResume() {super.onResume();//第4步, 注冊相關傳感器//加速傳感器Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//registerListener 第三個參數 有4個值,敏感度也不一樣,0-3,低最敏感.SENSOR_DELAY_UI是2mSensorManager.registerListener(this,accel,SensorManager.SENSOR_DELAY_UI);//重力傳感器Sensor gravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);mSensorManager.registerListener(this,gravity,SensorManager.SENSOR_DELAY_FASTEST);//鄰近傳感器Sensor proximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);mSensorManager.registerListener(this,proximity,SensorManager.SENSOR_DELAY_UI);//光線傳感器Sensor light = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);mSensorManager.registerListener(this,light,SensorManager.SENSOR_DELAY_UI);}//實現傳感器事件接口 傳感器感觸到精確度變化.@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {
}//實現傳感器事件接口 傳感器感觸到數據變化.@Overridepublic void onSensorChanged(SensorEvent event) {//第5步, 處理傳回來的數據switch (event.sensor.getType()) {case Sensor.TYPE_ACCELEROMETER: //加速度傳感器final float alpha = ?0.8f;gravity_X = alpha * gravity_X + (1 - alpha) * event.values[0];gravity_Y = alpha * gravity_Y + (1 - alpha) * event.values[1];gravity_Z = alpha * gravity_Z + (1 - alpha) * event.values[2];
String accelerometer = "加速度\n"?+ "X:" + (event.values[0] - gravity_X) + "\n"?+ "Y:" + (event.values[1] - gravity_Y) + "\n"?+ "Z:" + (event.values[2] - gravity_Z);Log.d("z", String.valueOf(event.values[2] - gravity_Z));tvAccelerometer.setText(accelerometer);break;case Sensor.TYPE_GRAVITY://重力傳感器gravity_X = event.values[0];gravity_Y = event.values[1];gravity_Z = event.values[2];break;case Sensor.TYPE_PROXIMITY://鄰近傳感器setTitle(String.valueOf(event.values[0]));break;case Sensor.TYPE_LIGHT:tvAccelerometer.append("\n"+event.values[0]+"\n");break;default:break;}
}//一般在當前窗口關閉時取消注冊.//第6步, 取消注冊@Overrideprotected void onPause() {super.onPause();mSensorManager.unregisterListener(this);}}

轉載于:https://www.cnblogs.com/sjjg/p/4780439.html

總結

以上是生活随笔為你收集整理的传感器(7)加速传感器,重力传感器,邻近传感器,光线传感器 综合示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。