取得Android平台某设备上所有可用的Sensors_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 取得Android平台某设备上所有可用的Sensors

取得Android平台某设备上所有可用的Sensors

 2014/12/11 15:16:48  Kempff  程序员俱乐部  我要评论(0)
  • 摘要:本来要写一个检测手机的温度的小应用,学习一下传感器的api,可结果怎么写不行。经检测,发现取得的Sensor为NULL,这才明白,我手机没有TYPE_AMBIENT_TEMPERATURE传感器。于是谢了另一个APP列出所有的可用的Sensors。代码如下:1packagekempff.sensors;23importjava.util.List;45importandroid.app.Activity;6importandroid.hardware.Sensor;7importandroid
  • 标签:android 设备

本来要写一个检测手机的温度的小应用,学习一下传感器的api,可结果怎么写不行。经检测,发现取得的Sensor为NULL,这才明白,我手机没有TYPE_AMBIENT_TEMPERATURE传感器。

于是谢了另一个APP列出所有的可用的Sensors。代码如下:

 1 package kempff.sensors;
 2 
 3 import java.util.List;
 4 
 5 import android.app.Activity;
 6 import android.hardware.Sensor;
 7 import android.hardware.SensorManager;
 8 import android.os.Bundle;
 9 import android.widget.TextView;
10 
11 public class MainActivity extends Activity {
12     private String mtext="";
13     private TextView tv=null;
14     private SensorManager sm=null;
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20         tv=(TextView)findViewById(R.id.msg);
21         sm=(SensorManager)this.getSystemService(SENSOR_SERVICE);
22         List<Sensor> sensors=sm.getSensorList(Sensor.TYPE_ALL);
23         for(Sensor t:sensors){
24             log("[Sensors]Name:"+t.getName()+";Vendor:"+t.getVendor());
25         }
26     }
27     
28     private void log(String s){
29         mtext+=s+"\n";
30         tv.setText(mtext);
31     }
32 }

编译后在手机上安装,输出结果果然没有AMBIENT_TEMPERATURE。在我手机上有个测温软件竟能检测温度,可能是用的CPU温度之类的方法,还没有弄明白。附上另一段利用温度传感器测温度的代码。



 1 package kempff.t001;
 2 
 3 import android.os.Bundle;
 4 import android.widget.TextView;
 5 import android.app.Activity;
 6 import android.hardware.*;
 7 
 8 
 9 public class MainActivity extends Activity implements SensorEventListener {
10     private Sensor mtmp=null;
11     private SensorManager msm=null;
12     private TextView msg=null;
13     private String mtext="";
14 
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         msg=(TextView)findViewById(R.id.msg);
20         msm=(SensorManager)this.getSystemService(SENSOR_SERVICE);
21         mtmp=msm.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
22         if(mtmp==null){
23             log("TYPE_AMBIENT_TEMPERATURE==NULL");
24         }else{
25             log("TYPE_AMBIENT_TEMPERATURE:"+mtmp.toString());
26         }
27     }
28 
29     @Override
30     protected void onPause() {
31         // TODO Auto-generated method stub
32         super.onPause();
33         msm.unregisterListener(this);
34     }
35 
36     @Override
37     protected void onResume() {
38         // TODO Auto-generated method stub
39         super.onResume();
40         msm.registerListener(this, mtmp, SensorManager.SENSOR_DELAY_NORMAL);
41     }
42 
43     @Override
44     public void onAccuracyChanged(Sensor arg0, int arg1) {
45         // TODO Auto-generated method stub
46         
47     }
48 
49     @Override
50     public void onSensorChanged(SensorEvent event) {
51         // TODO Auto-generated method stub
52         for(float t:event.values){
53             log(String.valueOf(t)+"\n");
54         }        
55     }
56     
57     private void log(String txt){
58         mtext+=txt;
59         this.msg.setText(mtext);
60     }
61 }

 


这是Layout.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="kempff.t001.MainActivity" >
10 
11     <TextView
12         android:id="@+id/msg"
13         android:layout_width="fill_parent"
14         android:layout_height="fill_parent"
15         android:text="@string/hello_world" />
16 
17 </RelativeLayout>

 

发表评论
用户名: 匿名