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

发布时间 - 2026-01-10 23:17:07    点击率:

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

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

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();
 }

 }



}

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


# Android  # Senser  # 传感器  # Android 利用方向传感器实现指南针具体步骤  # Android利用方向传感器获得手机的相对角度实例说明  # Android编程中光线传感器的调用方法详解  # Android编程使用加速度传感器实现摇一摇功能及优化的方法详解  # Android编程实现获取所有传感器数据的方法  # Android利用Sensor(传感器)实现水平仪功能  # Android 传感器--光照传感器详解及使用  # Android 重力传感器在游戏开发中的应用  # Android重力传感器实现滚动的弹球  # android 传感器(OnSensorChanged)使用介绍  # Android编程之方向传感器用法示例  # 都是  # 第二个  # 大家多多  # java  # iv_main_images  # sounth  # MainActivity  # package  # cindy_sounth  # sp  # id  # textSize  # src  # drawable  # tv_main_result  # ImageView  # import  # AppCompatActivity  # app  # os 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站卡顿?如何解决网络延迟与负载问题?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Linux系统运维自动化项目教程_Ansible批量管理实战  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在万网开始建站?分步指南解析  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Python文件异常处理策略_健壮性说明【指导】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  详解Android——蓝牙技术 带你实现终端间数据传输  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  高防服务器租用如何选择配置与防御等级?  如何用免费手机建站系统零基础打造专业网站?  如何快速打造个性化非模板自助建站?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel怎么使用Intervention Image库处理图片上传和缩放  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel API资源类怎么用_Laravel API Resource数据转换  如何彻底卸载建站之星软件?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel怎么实现模型属性的自动加密  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel中的withCount方法怎么高效统计关联模型数量  网站制作大概多少钱一个,做一个平台网站大概多少钱?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel怎么实现验证码(Captcha)功能  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  javascript日期怎么处理_如何格式化输出  如何获取PHP WAP自助建站系统源码?  如何快速搭建高效WAP手机网站?  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何在建站之星绑定自定义域名?  如何用已有域名快速搭建网站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  网易LOFTER官网链接 老福特网页版登录地址  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  php结合redis实现高并发下的抢购、秒杀功能的实例  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)