欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android利用Senser实现不同的传感器

程序员文章站 2023-12-14 15:56:04
传感器有不同的类型,以下是我列出的光线,加速度,风向传感器,在测试不同传感器的时候都需将传感器管理的onresume中sensormanager.registerliste...

传感器有不同的类型,以下是我列出的光线,加速度,风向传感器,在测试不同传感器的时候都需将传感器管理的onresume中sensormanager.registerlistener(mylistner,sensorori,sensormanager.sensor_delay_ui);

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

Android利用Senser实现不同的传感器

activity_main.xml

 <button
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="查看所有支持的传感类型"
 android:onclick="getallsensors"
 />
 <textview
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:textsize="30sp"
 android:id="@+id/tv_main_result"

 />

 <imageview
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:src="@drawable/sounth"
 android:id="@+id/iv_main_images"

 />

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

mainactivity.java

package com.example.cindy_sounth;

import android.content.context;
import android.hardware.sensor;
import android.hardware.sensorevent;
import android.hardware.sensoreventlistener;
import android.hardware.sensormanager;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.view.windowmanager;
import android.view.animation.rotateanimation;
import android.widget.imageview;
import android.widget.textview;

import java.util.list;

public class mainactivity extends appcompatactivity {

 private sensormanager sensormanager;
 private sensor sensorlight;
 private sensor sensoracc;
 private sensor sensorori;
 private textview tv_main_result;
 private mylistner mylistner;
 private imageview iv_main_images;
 private float current;


 @override
 protected void oncreate(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 = new mylistner();



 }
 //注册一个监听(监听某一个传感器的值)
 @override
 protected void onresume() {
 super.onresume();

 sensormanager.registerlistener(mylistner,sensorori,sensormanager.sensor_delay_ui);
 }
 class mylistner implements sensoreventlistener{

  private windowmanager.layoutparams layoutparams;

  //当你的值发生改变
  @override
  public void onsensorchanged(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);

  //加图片测试指南针
  float x= f[0];
  float y= f[1];
  float z= f[2];
  tv_main_result.settext("x="+x+"\ny="+y+"\nz="+z);

  //实例化旋转动画
  rotateanimation rotateanimation=new rotateanimation(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
  public void onaccuracychanged(sensor sensor, int accuracy) {

  }
 }



 @override
 protected void ondestroy() {
 super.ondestroy();
 sensormanager.unregisterlistener(mylistner);
 }
 public void getallsensors(view view){
 list<sensor> sensors= sensormanager.getsensorlist(sensor.type_all);
 for (sensor sensor : sensors) {
  log.i("test", sensor.getname());
//  sensor.getpower();
 }

 }



}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: