资讯详情

通过距离感应器获取实际距离[FAQ04538][Sensor]java层获得P_sensor距离传感器当前真实值,不止0,1

如何使上层java距离传感器的当前真实值可获得0、1以上

[PLATFORM]

MT6575 MT6577 MT6589

[SOLUTION]

proximity sensor报告值已处理,一般为固定报告1或0,如需取得proximity sensor根据不同的处理模式,实时值:

1、polling模式,XXX_ps_operate()函数中

case SENSOR_GET_DATA:

……

sensor_data->values[0]=XXX_get_ps_value(……);//上传判断后的值,即0或1;

sensor_data->values[1]=obj->ps;//使用values[1]上传proximity sensor的raw data;

……

中断模式,在XXX_eint_work函数中:

……

sensor_data->values[0]=XXX_get_ps_value(……);//上传判断后的值,即0或1;

sensor_data->values[1]=obj->ps;//使用values[1]上传proximity sensor的raw data;

1和2的方式还需要hwmsen_dev.c:

在hwmsen_get_interrupt_data(int sensor,hwm_sensor_data *data)在函数中,需要把proximity sensor单独提出处理,即添加此代码:

if(sensor == ID_PROXIMITY)

{

if(data->values[1] != obj_data.sensors_data[sensor].values[1])

{

mutex_lock(&obj_data.lock);

obj_data.data_updata[sensor] = 1;

obj_data.sensors_data[sensor].values[1] = data->values[1];

obj_data.sensors_data[sensor].time = nt;

obj_data.sensors_data[sensor].value_divide = data->value_divide;

mutex_unlock(&obj_data.lock);

}

}

这样,在应用层中监控onSensorChanged可以:

用values[0]即可得到表示靠近和远离的0和1;

用values[1]即可获得sensor 的raw data。

java 层

private SensorManager sensorManager;

private Sensor P_sensor;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_fullscreen);

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

P_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

}

@Override

protected void onResume() {

super.onResume();

sensorManager.registerListener(sensorEventListener, P_sensor, SensorManager.SENSOR_DELAY_NORMAL);

}

@Override

protected void onPause() {

super.onPause();

sensorManager.unregisterListener(sensorEventListener);

}

/**

*

*/

private SensorEventListener sensorEventListener = new SensorEventListener() {

@Override

public void onSensorChanged(SensorEvent event) {

float f_proximiny = event.values[0];

float f_proximiny2 = event.values[1];

String f_proximinystr=String.valueOf(f_proximiny);

String f_proximinystr2=String.valueOf(f_proximiny2);

String str="P-Sensor" "\n" "靠近或远离values[0]=" f_proximinystr "\n" "真实距离values[1]=" f_proximinystr2;

controlsView1.setText(str);

// Toast.makeText(FullscreenActivity.this , f_proximinystr, 0).show();

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

// TODO Auto-generated method stub

}};

标签: 重量传感器f1814nt1传感器02n感应距离传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台