tôi cần để có được một phép đo chính xác về độ cao chỉ sử dụng GPS.Android: Làm thế nào để có được độ cao chính xác?
tôi đã cố gắng Location.getAltitude(), nhưng đó là khủng khiếp không chính xác. Bạn có lời khuyên nào không?
tôi cần để có được một phép đo chính xác về độ cao chỉ sử dụng GPS.Android: Làm thế nào để có được độ cao chính xác?
tôi đã cố gắng Location.getAltitude(), nhưng đó là khủng khiếp không chính xác. Bạn có lời khuyên nào không?
Có hai vấn đề với việc sử dụng độ cao của một GPS điện thoại thông minh/máy tính bảng:
Cảm ơn. Vì vậy, tôi đoán tôi không thể có được độ cao chính xác trừ khi tôi có truy cập internet trong ứng dụng của tôi để sửa cho chiều cao Geoid. – ask
Bạn có thể làm điều đó ngoại tuyến. Bạn chỉ cần tính toán sự khác biệt giữa ellipsoid và mực nước biển. Đó là không tầm thường. Xem câu trả lời này: https://stackoverflow.com/a/12811478/1561404 –
Có nhiều cách khác để có được độ cao hơn bằng GPS. Bạn có thể sử dụng thước đo nhưng không có nhiều thiết bị có cảm biến khí áp (chỉ có cảm biến mới). Tôi sẽ khuyên bạn nên sử dụng một dịch vụ web để có được dữ liệu mong muốn.
Đây là một câu hỏi mà sẽ giúp bạn qua: Get altitude by longitude and latitude in Android
Một cách khác sẽ được phân tích chuỗi NMEA. $GPGGA sentence đã chứa dữ liệu độ cao đã sửa ở trên mực nước biển.
Vì vậy, chỉ cần tạo một người biết lắng nghe để NMEA-strings cho LocationManager của bạn và phân tích các thông điệp:
private GpsStatus.NmeaListener mNmeaListener = new GpsStatus.NmeaListener() {
@Override
public void onNmeaReceived(long timestamp, String nmea) {
parseNmeaString(nmea);
}
};
public void registerLocationManager(Context context) {
mLocationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
mLocationManager.addNmeaListener(mNmeaListener);
}
private void parseNmeaString(String line) {
if (line.startsWith("$")) {
String[] tokens = line.split(",");
String type = tokens[0];
// Parse altitude above sea level, Detailed description of NMEA string here http://aprs.gids.nl/nmea/#gga
if (type.startsWith("$GPGGA")) {
if (!tokens[9].isEmpty()) {
mLastMslAltitude = Double.parseDouble(tokens[9]);
}
}
}
}
Bạn có thể thay thế các độ cao của đối tượng Location cuối cùng nhận được thông qua một người biết lắng nghe vị trí, hoặc phân tích toàn bộ vị trí mới thông qua NMEA.
Bản sao có thể có của [Nhận độ cao theo kinh độ và vĩ độ trong Android] (http://stackoverflow.com/questions/1995998/get-altitude-by-longitude-and-latitude-in-android) –