装好Adroid SDK后,在sample的指导下,写了几个简单的类似hello world的程序,在这里介绍一下所写的在android下调用传感器的程序。
Android中支持的几种传感器:
Sensor.TYPE_ACCELEROMETER:加速度传感器。
Sensor.TYPE_GYROSCOPE:陀螺仪传感器。
Sensor.TYPE_LIGHT:亮度传感器。
Sensor.TYPE_MAGNETIC_FIELD:地磁传感器。
Sensor.TYPE_ORIENTATION:方向传感器。
Sensor.TYPE_PRESSURE:压力传感器。
Sensor.TYPE_PROXIMITY:近程传感器。
Sensor.TYPE_TEMPERATURE:温度传感器。
使用传感器最关键的一些知识是:SensorManager是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。我们可以通过getSystemService方法来取得一个SensorManager对象。使用传感器时,需要通过registerListener函数注册传感器,使用完后需要通过unregisterListener取消注册。
百闻不如一见,还是直接讲代码:
新建一个Sensors的工程,创建一个Sensors.java,内容如下:
01
package
me.sigma.sensors;
02
03
04
import
android.app.Activity;
05
import
android.hardware.SensorListener;
06
import
android.hardware.SensorManager;
07
import
android.os.Bundle;
08
import
android.widget.TextView;
09
10
public
class
Sensors
extends
Activity {
11
TextView myTextView1;
//t
12
//gen
13
TextView myTextView2;
//x
14
TextView myTextView3;
//y
15
TextView myTextView4;
//z
16
//acc
17
TextView myTextView5;
//x
18
TextView myTextView6;
//y
19
TextView myTextView7;
//z
20
//ori
21
TextView myTextView8;
//x
22
TextView myTextView9;
//y
23
TextView myTextView10;
//z
24
//Light
25
TextView myTextView11;
//z
26
27
SensorManager mySensorManager;
//
28
@Override
29
public
void
onCreate(Bundle savedInstanceState) {
30
super
.onCreate(savedInstanceState);
31
setContentView(R.layout.main);
32
myTextView1 = (TextView) findViewById(R.id.myTextView1);
33
myTextView2 = (TextView) findViewById(R.id.myTextView2);
34
myTextView3 = (TextView) findViewById(R.id.myTextView3);
35
myTextView4 = (TextView) findViewById(R.id.myTextView4);
36
myTextView5 = (TextView) findViewById(R.id.myTextView5);
37
myTextView6 = (TextView) findViewById(R.id.myTextView6);
38
myTextView7 = (TextView) findViewById(R.id.myTextView7);
39
myTextView8 = (TextView) findViewById(R.id.myTextView8);
40
myTextView9 = (TextView) findViewById(R.id.myTextView9);
41
myTextView10 = (TextView) findViewById(R.id.myTextView10);
42
myTextView11 = (TextView) findViewById(R.id.myTextView11);
43
mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
44
}
45
private
SensorListener mySensorListener =
new
SensorListener(){
46
@Override
47
public
void
onAccuracyChanged(
int
sensor,
int
accuracy) {}
48
@Override
49
public
void
onSensorChanged(
int
sensor,
float
[] values) {
50
if
(sensor == SensorManager.SENSOR_TEMPERATURE){
51
myTextView1.setText(
"Current Temprature:"
+values[
0
]);
52
}
else
if
(sensor == SensorManager.SENSOR_MAGNETIC_FIELD){
53
myTextView2.setText(
"Current Magnetic x:"
+values[
0
]);
54
myTextView3.setText(
"Current Magnetic y:"
+values[
1
]);
55
myTextView4.setText(
"Current Magnetic z:"
+values[
2
]);
56
}
else
if
(sensor == SensorManager.SENSOR_ACCELEROMETER){
57
myTextView5.setText(
"Current Accelero x:"
+values[
0
]);
58
myTextView6.setText(
"Current Accelero y:"
+values[
1
]);
59
myTextView7.setText(
"Current Accelero z:"
+values[
2
]);
60
}
else
if
(sensor == SensorManager.SENSOR_ORIENTATION){
61
myTextView8.setText(
"Current Oraenttation x:"
+values[
0
]);
62
myTextView9.setText(
"Current Oraenttation y:"
+values[
1
]);
63
myTextView10.setText(
"Current Oraenttation z:"
+values[
2
]);
64
}
else
if
(sensor == SensorManager.SENSOR_LIGHT){
65
myTextView11.setText(
"Current Oraenttation x:"
+values[
0
]);
66
}
67
}
68
};
69
@Override
70
protected
void
onResume() {
71
mySensorManager.registerListener(
72
mySensorListener,
73
SensorManager.SENSOR_TEMPERATURE |
74
SensorManager.SENSOR_MAGNETIC_FIELD |
75
SensorManager.SENSOR_ACCELEROMETER |
76
SensorManager.SENSOR_LIGHT |
77
SensorManager.SENSOR_ORIENTATION,
78
SensorManager.SENSOR_DELAY_UI
79
);
80
super
.onResume();
81
}
82
@Override
83
protected
void
onPause() {
84
mySensorManager.unregisterListener(mySensorListener);
85
super
.onPause();
86
}
87
}
更改res/layout/下面的main.xml,为如下内容:
02
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
android:orientation
=
"vertical"
04
android:layout_width
=
"fill_parent"
05
android:layout_height
=
"fill_parent"
>
06
<
TextView
07
android:id
=
"@+id/title"
08
android:gravity
=
"center_horizontal"
09
android:textSize
=
"20px"
10
android:layout_width
=
"fill_parent"
11
android:layout_height
=
"wrap_content"
12
android:text
=
"@string/title"
/>
13
<
TextView
14
android:id
=
"@+id/myTextView1"
15
android:textSize
=
"18px"
16
android:layout_width
=
"fill_parent"
17
android:layout_height
=
"wrap_content"
18
android:text
=
"@string/myTextView1"
/>
19
<
TextView
20
android:id
=
"@+id/myTextView2"
21
android:textSize
=
"18px"
22
android:layout_width
=
"fill_parent"
23
android:layout_height
=
"wrap_content"
24
android:text
=
"@string/myTextView2"
/>
25
<
TextView
26
android:id
=
"@+id/myTextView3"
27
android:textSize
=
"18px"
28
android:layout_width
=
"fill_parent"
29
android:layout_height
=
"wrap_content"
30
android:text
=
"@string/myTextView3"
/>
31
<
TextView
32
android:id
=
"@+id/myTextView4"
33
android:textSize
=
"18px"
34
android:layout_width
=
"fill_parent"
35
android:layout_height
=
"wrap_content"
36
android:text
=
"@string/myTextView4"
/>
37
<
TextView
38
android:id
=
"@+id/myTextView5"
39
android:textSize
=
"18px"
40
android:layout_width
=
"fill_parent"
41
android:layout_height
=
"wrap_content"
42
android:text
=
"@string/myTextView5"
/>
43
<
TextView
44
android:id
=
"@+id/myTextView6"
45
android:textSize
=
"18px"
46
android:layout_width
=
"fill_parent"
47
android:layout_height
=
"wrap_content"
48
android:text
=
"@string/myTextView6"
/>
49
<
TextView
50
android:id
=
"@+id/myTextView7"
51
android:textSize
=
"18px"
52
android:layout_width
=
"fill_parent"
53
android:layout_height
=
"wrap_content"
54
android:text
=
"@string/myTextView7"
/>
55
<
TextView
56
android:id
=
"@+id/myTextView8"
57
android:textSize
=
"18px"
58
android:layout_width
=
"fill_parent"
59
android:layout_height
=
"wrap_content"
60
android:text
=
"@string/myTextView8"
/>
61
<
TextView
62
android:id
=
"@+id/myTextView9"
63
android:textSize
=
"18px"
64
android:layout_width
=
"fill_parent"
65
android:layout_height
=
"wrap_content"
66
android:text
=
"@string/myTextView9"
/>
67
<
TextView
68
android:id
=
"@+id/myTextView10"
69
android:textSize
=
"18px"
70
android:layout_width
=
"fill_parent"
71
android:layout_height
=
"wrap_content"
72
android:text
=
"@string/myTextView10"
/>
73
<
TextView
74
android:id
=
"@+id/myTextView11"
75
android:textSize
=
"18px"
76
android:layout_width
=
"fill_parent"
77
android:layout_height
=
"wrap_content"
78
android:text
=
"@string/myTextView11"
/>
79
</
LinearLayout
>
80
更改res/values/strings.xml为如下内容:
01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
resources
>
03
<
string
name
=
"hello"
>templator!</
string
>
04
<
string
name
=
"app_name"
>templator</
string
>
05
<
string
name
=
"title"
>Sigma Sensors</
string
>
06
<
string
name
=
"myTextView1"
>Current Temprature:</
string
>
07
<
string
name
=
"myTextView2"
>Current Magnetic x:</
string
>
08
<
string
name
=
"myTextView3"
>Current Magnetic y:</
string
>
09
<
string
name
=
"myTextView4"
>Current Magnetic z:</
string
>
10
<
string
name
=
"myTextView5"
>Current Accelero x:</
string
>
11
<
string
name
=
"myTextView6"
>Current Accelero y:</
string
>
12
<
string
name
=
"myTextView7"
>Current Accelero z:</
string
>
13
<
string
name
=
"myTextView8"
>Current Oraenttation x:</
string
>
14
<
string
name
=
"myTextView9"
>Current Oraenttation y:</
string
>
15
<
string
name
=
"myTextView10"
>Current Oraenttation z:</
string
>
16
<
string
name
=
"myTextView11"
>Current Light:</
string
>
17
</
resources
>
18