【android studio】Android利用Senser实现不同的传感器

更新时间:2021-06-30    来源:.Net开发    手机版     字体:

【www.bbyears.com--.Net开发】

传感器有不同的类型,以下是我列出的光线,加速度,风向传感器,在测试不同传感器的时候都需将传感器管理的onResume中sensorManager.registerListener(myListner,sensorOri,sensorManager.SENSOR_DELAY_UI);

第二个参数改为相应的传感器,此dem中我加入了一张指南针图片作为示例:

activity_main.xml

 

 代码如下

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="查看所有支持的传感类型"

android:onClick="getAllSensors"

/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textSize="30sp"

android:id="@+id/tv_main_result"

 

/>

 

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/sounth"

android:id="@+id/iv_main_images"

 

/>

 

java代码中注释掉的部分都是一种传感器的测试。

MainActivity.java

 

 代码如下

packagecom.example.cindy_sounth;

 

importandroid.content.Context;

importandroid.hardware.Sensor;

importandroid.hardware.SensorEvent;

importandroid.hardware.SensorEventListener;

importandroid.hardware.SensorManager;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.WindowManager;

importandroid.view.animation.RotateAnimation;

importandroid.widget.ImageView;

importandroid.widget.TextView;

 

importjava.util.List;

 

publicclassMainActivityextendsAppCompatActivity {

 

 privateSensorManager sensorManager;

 privateSensor sensorLight;

 privateSensor sensorAcc;

 privateSensor sensorOri;

 privateTextView tv_main_result;

 privateMyListner myListner;

 privateImageView iv_main_images;

 privatefloatcurrent;

 

 

 @Override

 protectedvoidonCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);

 setContentView(R.layout.activity_main);

 //得到图片

 iv_main_images = (ImageView) findViewById(R.id.iv_main_images);

 

 tv_main_result = (TextView) findViewById(R.id.tv_main_result);

 

 //得到传感器的管理者

 sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

 //得到光线传感器

// sensorLight = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

 

 //获得加速度传感器

// sensorAcc = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

  //获取风向传感器

 sensorOri = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

 

 

 

 myListner =newMyListner();

 

 

 

 }

 //注册一个监听(监听某一个传感器的值)

 @Override

 protectedvoidonResume() {

 super.onResume();

 

 sensorManager.registerListener(myListner,sensorOri,sensorManager.SENSOR_DELAY_UI);

 }

 classMyListnerimplementsSensorEventListener{

 

  privateWindowManager.LayoutParams layoutParams;

 

  //当你的值发生改变

  @Override

  publicvoidonSensorChanged(SensorEvent event) {

  float[] f=event.values;

  //测试获取光线传感器的值(光线值)

//  float light= f[0];

//  tv_main_result.setText(light+"");

 

  //测试获得加速度传感器

//  float x= f[0];

//  float y= f[1];

//  float z= f[2];

//  tv_main_result.setText("x="+x+"\ny="+y+"\nz="+z);

 

  //测试获取风向传感器

//  float x= f[0];

//  float y= f[1];

//  float z= f[2];

//  tv_main_result.setText("x="+x+"\ny="+y+"\nz="+z);

 

  //加图片测试指南针

  floatx= f[0];

  floaty= f[1];

  floatz= f[2];

  tv_main_result.setText("x="+x+"\ny="+y+"\nz="+z);

 

  //实例化旋转动画

  RotateAnimation   rotateAnimation=newRotateAnimation(current,-x,RotateAnimation.RELATIVE_TO_SELF,0.5f,RotateAnimation.RELATIVE_TO_SELF,0.5f);

  rotateAnimation.setDuration(200);

  current=-x;

  iv_main_images.startAnimation(rotateAnimation);

  //改变屏幕的亮度

  //先拿到屏幕

//  WindowManager.LayoutParams layoutParams= getWindow().getAttributes();

//  layoutParams.screenBrightness=light/225f;

//  getWindow().setAttributes(layoutParams);

 

  }

  //当值发生精度改变

  @Override

  publicvoidonAccuracyChanged(Sensor sensor,intaccuracy) {

 

  }

 }

 

 

 

 @Override

 protectedvoidonDestroy() {

 super.onDestroy();

 sensorManager.unregisterListener(myListner);

 }

 publicvoidgetAllSensors(View view){

 List sensors= sensorManager.getSensorList(Sensor.TYPE_ALL);

 for(Sensor sensor : sensors) {

  Log.i("test", sensor.getName());

//  sensor.getPower();

 }

 

 }

 

 

 

}

 

本文来源:http://www.bbyears.com/asp/126840.html

猜你感兴趣

热门标签

更多>>

本类排行