为什么安卓湿度传感器不起作用?



我创建了一个从各种传感器读取数据的应用程序。问题是,在湿度和温度传感器的情况下,没有显示任何信息。其他传感器工作没有任何问题。

正常工作的光传感器代码:

public class LightFragment extends Fragment implements SensorEventListener {
TextView lightTV;
SensorManager sensorManager;
Sensor lightSensor;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_light, container, false);
lightTV = (TextView) v.findViewById(R.id.LightValue);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(LightFragment.this, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor sensor = sensorEvent.sensor;
if (sensor.getType() == Sensor.TYPE_RELATIVE_HUMIDITY) {
lightTV.setText(String.format("%.2f", +(int) sensorEvent.values[0]) + "ttt" + "[lux]");
} else {
lightTV.setText("Light Sensor not supported on this device");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}

湿度传感器代码:

public class HumiFragment extends Fragment implements SensorEventListener {
TextView humiTV;
SensorManager sensorManager;
Sensor humiditySensor;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_humi, container, false);
humiTV = (TextView) v.findViewById(R.id.HumiValue);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
humiditySensor = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
sensorManager.registerListener(HumiFragment.this, humiditySensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor sensor = sensorEvent.sensor;
if (sensor.getType() == Sensor.TYPE_RELATIVE_HUMIDITY) {
humiTV.setText(String.format("%.2f", +sensorEvent.values[0]) + "ttt" + "[%]");
} else {
humiTV.setText("Humidity Sensor not supported on this device");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}

温度传感器代码:

public class TempFragment extends Fragment implements SensorEventListener {
TextView tempTV;
SensorManager sensorManager;
Sensor tempSensor;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_temp, container, false);
tempTV = (TextView) v.findViewById(R.id.TempValue);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
tempSensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
sensorManager.registerListener(TempFragment.this, tempSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor sensor = sensorEvent.sensor;
if (sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) {
tempTV.setText(String.format("%.4f", +sensorEvent.values[0]) + "ttt" + "[°C]");
} else {
tempTV.setText("Temperature Sensor not supported on this device");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}

正如你所看到的,所有的代码都非常相似,但onSensorChanged只适用于光传感器。我检查了三种不同设备(小米、三星、华为(上的应用程序,每种设备上的这两个特定传感器都不工作。onSensorChanged功能应该显示有关传感器缺乏支持的信息,但它不存在。这两个传感器不工作并且没有返回任何信息的原因是什么?

唯一在市场上发布的带有湿度计(湿度传感器(和温度计的设备是Galaxy S4和Note 3。一些CAT加固设备有温度计。

最新更新