2
java (Android) 클래스를 구현하여 장치의 고도를 계산했으며 다른 클래스에서이 값에 액세스하려고합니다. 다음과 같이센서의 반환 값은 항상 0입니다.
첫 번째 클래스입니다 : 나는 기압계하지만 반환 값은 항상 0을 통합하는 실제 스마트 폰을 사용하고
public class DeviceAltitudeHandler extends Activity implements SensorEventListener{
SensorManager sm;
Sensor sensor;
float altitude ;
public DeviceAltitudeHandler(SensorManager sm, float altitude) {
super();
this.sm = sm;
this.altitude = altitude;
sensor = sm.getDefaultSensor(Sensor.TYPE_PRESSURE);
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_UI);
}
@Override
public void onSensorChanged(SensorEvent event) {
float [] values = event.values;
altitude = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE,values[0]);
}
public float getAltitude() {
return altitude;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void start() {
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_UI);
}
public void stop() {
sm.unregisterListener(this);
}
}
! 두 번째 클래스의 코드는 다음과 같습니다
public class TestActivity extends Activity {
TextView tv;
DeviceAltitudeHandler dah;
float altitude;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
tv = (TextView) findViewById(R.id.textView5);
SensorManager sm = (SensorManager) getSystemService(Service.SENSOR_SERVICE);
dah = new DeviceAltitudeHandler(sm,altitude);
tv.setText(""+dah.getAltitude());
}
@Override
protected void onResume() {
super.onResume();
dah.start();
}
@Override
protected void onPause() {
super.onPause();
dah.stop();
}
}
감사합니다 사전에. 기본적으로
빠른 답장을 보내 주셔서 감사합니다. 문제는 onSensorChanged 메서드에서 발생하며 호출되지 않으며 반환 값은 항상 0 (초기 값)입니다. – Wima
사실, 문제는 "getAltitude()"메소드에서 발생하며 고도 값을 반환하지 않습니다. – Wima
@Wima이 링크를 확인하십시오 http://stackoverflow.com/questions/7410095/android-is-there-a-way-to-obtain-altitude-aside-from-location-getaltitude-i 귀하의 코드와 비교하십시오 어쩌면 당신은 실수를했습니다 –