最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android利用Senser实现不同的传感器
时间:2017-05-04 编辑:简简单单 来源:一聚教程网
传感器有不同的类型,以下是我列出的光线,加速度,风向传感器,在测试不同传感器的时候都需将传感器管理的onResume中sensorManager.registerListener(myListner,sensorOri,sensorManager.SENSOR_DELAY_UI);
第二个参数改为相应的传感器,此dem中我加入了一张指南针图片作为示例:
activity_main.xml
代码如下 | 复制代码 |
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 for(Sensor sensor : sensors) { Log.i("test", sensor.getName()); // sensor.getPower(); }
}
} |
-
上一个: Android多渠道打包神器创建