Cập nhật: Tôi cũng đã thêm phần tử phân tích cú pháp "ele", vì vậy mã này có thể phù hợp với yêu cầu của bạn.
Tôi sẽ đề xuất phương pháp tiếp cận khác nhau: https://gist.github.com/kamituel/6465125.
Trong cách tiếp cận của tôi, tôi không tạo ra một ArrayList của tất cả các điểm theo dõi (điều này được thực hiện trong ví dụ bạn đã đăng). Danh sách như vậy có thể tiêu thụ khá nhiều bộ nhớ, có thể là một vấn đề trên Android.
Tôi thậm chí đã từ bỏ việc sử dụng phân tích cú pháp regex để tránh phân bổ quá nhiều đối tượng (khiến trình thu gom rác chạy).
Kết quả là, chạy Java với kích thước heap 16Mb, phân tích cú pháp tệp GPX với hơn 600 điểm, bộ thu gom rác sẽ chỉ chạy 12 lần. Tôi chắc rằng người ta có thể xuống thấp hơn, nhưng tôi đã không tối ưu hóa nó nhiều.
Cách sử dụng:
GpxParser parser = new GpxParser(new FileInputStream(file));
TrkPt point = null;
while ((point = parser.nextTrkPt()) != null) {
// point.getLat()
// point.getLon()
}
Tôi đã sử dụng thành công mã này để phân tích khoảng 100 Mb bộ GPX tập tin trên Android. Xin lỗi nó không có trong repo thường xuyên, tôi đã không có kế hoạch để chia sẻ nó chỉ được nêu ra.
Hoàn hảo! Cảm ơn – user2649377