最近在做一个OA类的项目,当然产品经理可不止希望他是一个单纯的OA(CRM)项目,在开发中 产品经理要求做一个类似微信朋友圈的页面,可以查看一些类型的信息,其中有语音信息。
开始忙碌加班,项目在测试阶段,产品经理过来说咱们的内部信息不能让别人听到,所以,要加类似微信的听筒模式,这里我也是现学现卖的。下面是我的代码 (代码渣,多多指教)
/***************************1:这里首先实现接口SensorEventListener (这里我是在适配器里实例化的 ,对于三星手机可能会出问题 这里建议写在Activity里)
public class CRMCustomInformationAdapter extends BaseAdapter implements SensorEventListener {
private List<CustomerInformation> mlist;
private BaseActivity mBaseActivity;
/************************2:声明控件
SensorManager _sensorManager = null; // 传感器管理器
Sensor mProximiny = null; // 传感器实例
private Object mlock = new Object();
float f_proximiny; // 当前传感器距离AudioManager audioManager = null; // 声音管理器
public CRMCustomInformationAdapter(List<CustomerInformation> list,
BaseActivity BaseActivity) {
this.mlist = list;
this.mBaseActivity = BaseActivity;
//***************************3:这里是实例化距离传感器 和管理者
audioManager = (AudioManager) mBaseActivity.getSystemService(Context.AUDIO_SERVICE);
_sensorManager = (SensorManager) mBaseActivity.getSystemService(Context.SENSOR_SERVICE);
mProximiny = _sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
_sensorManager.registerListener(this, mProximiny,SensorManager.SENSOR_DELAY_NORMAL);
}
/***************************************
/*
* 4:实现SensorEventListener需要实现的两个方法。
* 这里的 mProximiny.getMaximumRange() 是监听手机听筒旁的红外线感应器的 如果检测到有物体靠近听筒时 自动开启听筒播放功能
* if (f_proximiny >= mProximiny.getMaximumRange()) {
* audioManager.setMode(AudioManager.MODE_NORMAL);
* } else {
* audioManager.setSpeakerphoneOn(false);
* audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
* }
*/
@Override
public void onSensorChanged(SensorEvent event) {
synchronized (mlock) {
f_proximiny = event.values[0];
if (f_proximiny >= mProximiny.getMaximumRange()) {
audioManager.setMode(AudioManager.MODE_NORMAL);
} else {
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
}
}
}
/*
*/
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void releaseSensor() {
_sensorManager.unregisterListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
});
}