取得Android平台某设备上所有可用的Sensors
本来要写一个检测手机的温度的小应用,学习一下传感器的api,可结果怎么写不行。经检测,发现取得的Sensor为NULL,这才明白,我手机没有TYPE_AMBIENT_TEMPERATURE传感器。
于是写了一个APP列出所有的可用的Sensors。
(附编译后的APK: http://pan.baidu.com/s/1kToTpTt)
代码如下:
package kempff.sensors; import java.util.List; import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView; public class MainActivity extends Activity {
private String mtext="";
private TextView tv=null;
private SensorManager sm=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.msg);
sm=(SensorManager)this.getSystemService(SENSOR_SERVICE);
List<Sensor> sensors=sm.getSensorList(Sensor.TYPE_ALL);
for(Sensor t:sensors){
log("[Sensors]Name:"+t.getName()+";Vendor:"+t.getVendor());
}
} private void log(String s){
mtext+=s+"\n";
tv.setText(mtext);
}
}
编译后在手机上安装,输出结果果然没有AMBIENT_TEMPERATURE。在我手机上有个测温软件竟能检测温度,可能是用的CPU温度之类的方法,还没有弄明白。附上另一段利用温度传感器测温度的代码。
package kempff.t001; import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
import android.hardware.*; public class MainActivity extends Activity implements SensorEventListener {
private Sensor mtmp=null;
private SensorManager msm=null;
private TextView msg=null;
private String mtext=""; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
msg=(TextView)findViewById(R.id.msg);
msm=(SensorManager)this.getSystemService(SENSOR_SERVICE);
mtmp=msm.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if(mtmp==null){
log("TYPE_AMBIENT_TEMPERATURE==NULL");
}else{
log("TYPE_AMBIENT_TEMPERATURE:"+mtmp.toString());
}
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
msm.unregisterListener(this);
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
msm.registerListener(this, mtmp, SensorManager.SENSOR_DELAY_NORMAL);
} @Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
for(float t:event.values){
log(String.valueOf(t)+"\n");
}
} private void log(String txt){
mtext+=txt;
this.msg.setText(mtext);
}
}
这是Layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="kempff.t001.MainActivity" > <TextView
android:id="@+id/msg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello_world" /> </RelativeLayout>
取得Android平台某设备上所有可用的Sensors的更多相关文章
- cocos2dx-3.0(21) 移植android平台 说多了都是泪
----我的生活,我的点点滴滴! ! 网上3.0的教程真心少.能够说没有吧,大多都是2.x 或者 3.0測试版之类的,因为我心大,没有照着2.x去搞,后来搞完后总结了一下,发觉事实上3.0的移植and ...
- 如何在Android平台上使用USB Audio设备
http://blog.csdn.net/kevinx_xu/article/details/12951131 需求:USB Headset插上去后,声音要从本地CODEC切换到USB Headset ...
- 在ios android设备上使用 Protobuf (使用dll方式)
http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http://g ...
- (转)在ios android设备上使用 Protobuf (使用dll方式)
自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http:/ ...
- Android学习路线(十九)支持不同设备——支持不同(Android)平台版本号
当最新的Android版本号为你的应用提供着非常棒的APIs时.你却要在很多其它的设备更新之前继续支持老的系统版本号.这篇课程怎样在继续支持低版本号的系统的情况下使用新版本号的高级API. Platf ...
- (转) Android平台上关于IM的实践总结
前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...
- Android平台上最好的几款免费的代码编辑器
使用正确的开发工具能够快速有效地完成源代码的编写和测试,使编程事半功倍.在网络信息高速发展的今天,移动设备的方便快捷已经深入人心,越来越多的程序员会选择在任何感觉舒适的地方使用移动设备查看或者编辑源代 ...
- Android实例-使用电话拨号器在移动设备上
Android实例-使用电话拨号器在移动设备上 源文地址: http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using ...
- uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息
Android平台从6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取.因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许. 读写手机存储权 ...
随机推荐
- Linux重置mysql密码(转载)
From:http://hi.baidu.com/mcspring/item/6358ee27afe7e1c8a5275ab7 首先,必须拥有MySQL操作的所有权限: 其次,停止MySQL服务: / ...
- EventBroker
Sample publisher Publish an event topic: ? 1 2 3 4 5 6 7 8 9 10 public class Publisher { [EventP ...
- Cocoa编程中视图控制器与视图类详解
iPhone编程规则是:一个窗口,多个视图.UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView ...
- java获取对应字节数的内容
每个英文字符占一字节 每个汉字当编码不同时字节数不同,utf-8中一个汉语字符占位3字节 示例: 获取任意一个字符串的前四个字节. Scanner sc = new Scanner(System.in ...
- IE,Chrome滚动条样式CSS
<style type="text/css"> *{ scrollbar-face-color:#F3F3F3; /*面子*/ scrollbar-arrow-colo ...
- 解决WinForm(C#)中MDI子窗体最大化的问题
“用MDI方式打开一个子窗口体后,总是不能最大化显示,明明子窗口体的WindowState设置为Maximized?”,相信有很多人会遇到这的样问题,请按下面的方法设置即可使MDI子窗体最大化: 1. ...
- python正则表达式介绍
点击打开链接 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的 ...
- vs2013 ie10
http://blog.163.com/qimo601@126/blog/static/1582209320143354446462/ @ECHO OFF :IE10HACK REG A ...
- 如何隐藏storyboard中的top bar
在navigation bar中是没有设置它的隐藏和显示的属性的 那么究竟在什么地方呢,当在它自身的属性中没有找到的情况下,那么就只能去包含它的容器中去寻找了,结果果然找到了.在view的第四个选择器 ...
- iOS UIButton 设置图片文字垂直排列
后面经过测试,如果button的文字长度变更,会导致图片位置变化,经过多次修改UIEdgeInsets的值也没有达到期望效果,最终采用集成UIButton类,重写layoutSubviews函数实现, ...