http://www.2cto.com/kf/201312/263642.html
step 1,在AndroidManifest文件中添加权限声明
<uses-permission android:name=
"android.permission.MODIFY_AUDIO_SETTINGS"
></uses-permission>
step 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
package
com.markjoker.sensortest;
import
java.io.FileInputStream;
import
java.io.IOException;
import
android.hardware.Sensor;
import
android.hardware.SensorEvent;
import
android.hardware.SensorEventListener;
import
android.hardware.SensorManager;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Context;
import
android.util.Log;
import
android.view.Menu;
import
android.widget.Toast;
public
class
MainActivity
extends
Activity
implements
SensorEventListener {
private
AudioManager audioManager;
private
SensorManager mSensorManager;
private
Sensor mSensor;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private
void
init() {
audioManager = (AudioManager)
this
.getSystemService(Context.AUDIO_SERVICE);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
MediaPlayer mPlayer =
new
MediaPlayer();
try
{
mPlayer.reset();
mPlayer.setDataSource(
new
FileInputStream(
"/sdcard/snow.mp3"
).getFD());
mPlayer.prepare();
mPlayer.start();
}
catch
(IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected
void
onResume() {
mSensorManager.registerListener(
this
, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
super
.onResume();
}
@Override
protected
void
onPause() {
// TODO Auto-generated method stub
mSensorManager.unregisterListener(
this
);
super
.onPause();
}
@Override
public
void
onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float
range = event.values[
0
];
if
(range == mSensor.getMaximumRange()) {
Toast.makeText(
this
,
"正常模式"
, Toast.LENGTH_LONG).show();
audioManager.setMode(AudioManager.MODE_NORMAL);
}
else
{
Toast.makeText(
this
,
"听筒模式"
, Toast.LENGTH_LONG).show();
audioManager.setMode(AudioManager.MODE_IN_CALL);
}
}
@Override
public
void
onAccuracyChanged(Sensor sensor,
int
accuracy) {
// TODO Auto-generated method stub
}
}
|