java获取传感器重量数据,通过距离感应器获取实际距离[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;

……

2、中断模式,在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

}};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值