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;
public class
MainActivity
extends
AppCompatActivity {
private
SensorManager
manager
;
private
Sensor
defaultSensor
;
private
MySensroEventListener
listener
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
//
通过服务拿到传感器服务经理
(SensorManager) getSystemService(SENSOR_SERVICE);
需要类型转换接受的类型的SensorManager
manager
= (SensorManager) getSystemService(
SENSOR_SERVICE
);
//
通过经理对象得到方向传感器的对象
defaultSensor
=
manager
.getDefaultSensor(
3
);
//
创建一个传感器监听器
listener
=
new
MySensroEventListener();
//
注册传感器监听
manager
.registerListener(
listener
,
defaultSensor
,
manager
.
SENSOR_DELAY_NORMAL
);
//
参数:传感监听器 传感器对象 采用的敏感度
}
/*
传感器的监听
*/
private class
MySensroEventListener
implements
SensorEventListener{
@Override
public void
onSensorChanged(SensorEvent event) {
//
通过传感器 得到了方向值(
int
)
event.get
(
0
)
int
value = (
int
) event.
values
[
0
];
//
地磁北极和手机
Y
轴的夹角
0 =
北
90=
东
180 =
南
270=
西
if
(value>
0
&&value<
90
){
Log.
d
(
"zzz"
,
"
东北
"
);
}
else if
(value>
90
&&value<
180
){
Log.
d
(
"zzz"
,
"
东南
"
);
}
else if
(value>
180
&&value<
270
){
Log.
d
(
"zzz"
,
"
西南
"
);
}
else if
(value>
270
&&value<
360
){
Log.
d
(
"zzz"
,
"
西北
"
);
}
else if
(value==
0
){
Log.
d
(
"zzz"
,
"
北
"
);
}
else if
(value==
90
){
Log.
d
(
"zzz"
,
"
东
"
);
}
else if
(value==
180
){
Log.
d
(
"zzz"
,
"
南
"
);
}
else if
(value==
270
){
Log.
d
(
"zzz"
,
"
西
"
);
}
}
@Override
public void
onAccuracyChanged(Sensor sensor,
int
accuracy) {
}
}
//
在销毁的生命周期的方法里释放资源
@Override
protected void
onDestroy() {
super
.onDestroy();
//
解除传感器的监听
manager
.unregisterListener(
listener
);
//
传感器
=null
listener
=
null
;
}
}
---------------------------------------------------------------------------------------------------------------
光感传感器
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
java.util.List;
public class
MainActivity
extends
AppCompatActivity {
private
SensorManager
manager
;
private
List<
Sensor
>
mSensorList
;
private
MySensorEventListener
mListener
;
private
Sensor
mSensor
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
//
通过服务拿到传感器经理
getSystemService(SENSOR_SERVICE);
manager
= (SensorManager) getSystemService(
SENSOR_SERVICE
);
//
得到传感器的所有的集合 传感器经理的
getSensorList(Sensor.TYPE_ALL);
参数是
TYPE_ALL
mSensorList
=
manager
.getSensorList(
Sensor
.
TYPE_ALL
);
//for each
遍历这个循环
for
(
Sensor
s:
mSensorList
){
Log.
d
(
"zzz"
,
"
传感器的名称
"
+s);
}
mListener
=
new
MySensorEventListener();
//
通过了传感器经理得到了 光的传感器
mSensor
=
manager
.getDefaultSensor(
Sensor
.
TYPE_LIGHT
);
//
注册传感器监听 监听器 传感器对象 敏感度
manager
.registerListener(
mListener
,
mSensor
,SensorManager.
SENSOR_DELAY_NORMAL
);
}
//
写一个传感器监听
private class
MySensorEventListener
implements
SensorEventListener{
@Override
public void
onSensorChanged(SensorEvent event) {
//
获得光感值
float
value = event.
values
[
0
];
//
打印光感值
Log.
d
(
"zzz"
,
"
光感值
"
+ value);
}
@Override
public void
onAccuracyChanged(
Sensor
sensor,
int
accuracy) {
}
}
@Override
protected void
onDestroy() {
super
.onDestroy();
//
解除光感监听
//
光感监听
= null
}
}