2014-02-21 1 views
0

Я создаю приложение для Android с использованием локализации GPS, и для этого мне нужно сначала отобразить параметры локализации, такие как скорость, время последнего исправления, дельтатичность, и так далее. Нет проблем со скоростью, но как только я попытаюсь отобразить результат getTime (0) в textView, приложение выйдет сразу после получения первого исправления GPS. Я не знаю, как получить представление стека, поскольку я тестирую приложение прямо на своем телефоне, на реальном GPS-сигнале. Мне было трудно настроить моделирование путешествия через файл данных GPX (эмулятор продолжает перезагружаться, когда я пытаюсь имитировать сигнал GPS), поэтому я пошел прямо на работу с реальным телефоном.Android, пытающийся отобразить GPS getTime(), приводит к сбою приложения

Вот ключевые элементы задачи:

public void displayText(Integer input, double t1, double t0, int signal, int counter) { 
tv.setText(String.valueOf(input)); 
t1tv.setText("t1 : "+String.valueOf(t1)); 
t0tv.setText("t0 : "+String.valueOf(t0));  
signaltv.setText("Signal : "+signal); 
countertv.setText("Counter : "+counter);  
} 

private class MyLocationListener implements LocationListener { 
Integer counter = 0; 

public void onLocationChanged(Location loc) { 
if (loc != null) { 
    Integer fix=0; 
    Double speed = 0.0; 

if (loc.hasSpeed()) { 
    speed = loc.getSpeed() * 1.0; 
    fix=2; 
    speed = speed * 3.6d; 
    displayText(speed.intValue(), loc.getTime(), 0.0, fix, counter); 
//having the "loc.getTime()" sent to the displayText method is making the app crash.     
       } 
    else { 
    try { 
// Here I have some other code, but it's irrelevant for the occasion as not used when the app chrashes.  } 
       catch (NullPointerException e) { 
       } 
      }     
      counter = (counter + 1) % data_points; 
     } 
} 

Ничего слишком сложно я предполагаю, но я совершенно новый для программирования на Java (работаем года на Pascal/Delphi программирование) и любезно прося вас о какой-либо помощи.

UPDATE: я изменил функцию getElapsedRealtimeNanos(), изменен мин API до 17, местами на другую виртуальную машину и удалось запустить эмуляцию GPS, и до сих пор происходит сбой приложения, но теперь по крайней мере у меня есть какой-то след:

02-21 07:57:08.942: W/dalvikvm(1131): threadid=1: thread exiting with uncaught exception (group=0xb1a53ba8) 
02-21 07:57:08.982: E/AndroidRuntime(1131): FATAL EXCEPTION: main 
02-21 07:57:08.982: E/AndroidRuntime(1131): Process: com.the314.td, PID: 1131 
02-21 07:57:08.982: E/AndroidRuntime(1131): java.lang.NullPointerException 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at com.the314.td.testdrive$MyLocationListener.onLocationChanged(testdrive.java:308) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.os.Looper.loop(Looper.java:136) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-21 07:57:08.982: E/AndroidRuntime(1131):  at dalvik.system.NativeStart.main(Native Method) 
02-21 07:57:17.652: I/Process(1131): Sending signal. PID: 1131 SIG: 9 

ответ

0
getTime() 

Верните время UTC данного исправления, в миллисекундах (длинный), начиная с 1 января 1970 года

Обратите внимание, что время UTC на устройстве не является монотонной: она может прыгать вперед или назад непредсказуемо. Поэтому при вычислении временных дельтах всегда используйте getElapsedRealtimeNanos().

С другой стороны, getTime() полезен для представления пользователю удобного для пользователя времени или для тщательного сравнения исправлений местоположения при перезагрузке или между устройствами.

Все местоположения, созданные агентством LocationManager, гарантируют действительное время UTC, однако помните, что системное время могло измениться с момента создания местоположения.

Если вы все еще не уверены, отправьте сообщение об ошибке, чтобы я мог помочь вам лучше.

+0

Большое спасибо за ваш ответ. Я редактировал вопрос, чтобы обновить его с помощью новой информации. – user3336112

Смежные вопросы