2012-01-13 3 views
1

Я пытаюсь реализовать jsr-179 APi в телефоне Nokia Symbian для периодического обновления местоположения с помощью setLocationListener через J2me. В эмуляторе он работает нормально. Пока я устанавливал Midlet на устройстве nokia 5230, ему предоставляется NullPointerException, и приложение автоматически завершается. Какие могут быть возможные причины?Ошибка NullPointerException при внедрении API Location на J2me

Ниже мой класс, я инстанцирование объекта для этого класса на форме в NetBeans

class MovementTracker implements LocationListener { 

     LocationProvider provider; 
     Location lastValidLocation; 
     UpdateHandler handler; 
     boolean done; 

    public MovementTracker() throws LocationException 
    { 

    done = false; 
    handler = new UpdateHandler(); 
    new Thread(handler).start(); 

     //Defining Criteria for Location Provider 
     /* 
     Criteria cr = new Criteria(); 
     cr.setHorizontalAccuracy(500); 
     */ 


     //you can place cr inside getInstance 
    provider = LocationProvider.getInstance(null); 

     //listener,interval,timeout,int maxAge 
     //Passing -1 selects default interval 
     // provider.setLocationListener(MovementTracker.this, -1, -1, -1); 
     provider.setLocationListener(MovementTracker.this, -1, 30000, 30000); 

    } 

    public void locationUpdated(LocationProvider provider, Location location) 
    { 
    handler.handleUpdate(location); 
     batteryLevel = System.getProperty("com.nokia.mid.batterylevel"); 
     sn = System.getProperty("com.nokia.mid.networksignal"); 
     localTime = System.currentTimeMillis(); 

     Send_Location(); 
    } 

    public void providerStateChanged(LocationProvider provider, int newState) 
    { 
    } 

    class UpdateHandler implements Runnable 
    { 
    private Location updatedLocation = null; 

    // The run method performs the actual processing of the location 

    public void run() 
     { 
     Location locationToBeHandled = null; 
     while (!done) 
      { 
     synchronized(this) 
       { 
      if (updatedLocation == null) 
        { 
      try 
         { 
       wait(); 
      } 
         catch (Exception e) 
         { 
       // Handle interruption 
      } 
      } 
      locationToBeHandled = updatedLocation; 
      updatedLocation = null; 
     } 

     // The benefit of the MessageListener is here. 
     // This thread could via similar triggers be 
     // handling other kind of events as well in 
     // addition to just receiving the location updates. 
     if (locationToBeHandled != null) 
      processUpdate(locationToBeHandled); 
     } 
       try 
       { 
        Thread.sleep(10000); //Sleeps for 10 sec & then sends the data 
       } 
       catch (InterruptedException ex) 
       { 
       } 


    } 

    public synchronized void handleUpdate(Location update) 
     { 
     updatedLocation = update; 
     notify(); 
    } 

    private void processUpdate(Location update) 
     { 
     latitude = update.getQualifiedCoordinates().getLatitude(); 
      longitude = update.getQualifiedCoordinates().getLongitude(); 
      altitude = update.getQualifiedCoordinates().getAltitude(); 

    } 
    } 
} 
+0

Вы могли бы предоставить код у вас есть проблемы с? желательно в форме [SSCCE] (http://www.sscce.org/) – gnat

+1

Я скопировал фрагмент кода из вашего «ответа» (http://stackoverflow.com/a/8877693/839601) в вопрос. Рекомендовать удалить «ответ» – gnat

+0

Хорошо! Не могли бы вы сказать мне, где я делаю неправильно? –

ответ

1
public MovementTracker() throws LocationException 

...
Я не писал никакого кода для обработки LocationException.

Нет кода очень опасной практики, просто найдите в Интернете что-то вроде «исключений лавы лавы».

Вполне возможно, что из-за особенностей реализации Nokia выбрасывает LocationException, когда эмулятор не бросает его. Поскольку вы не обрабатываете исключение, это может действительно привести к краху вашего мидлета в Nokia, и вы не узнаете причину этого, потому что, опять же, вы не создали кода для его обработки.

Как я могу поймать это исключение?

Самое простое, что вы можете сделать, это отобразить уведомление с сообщением исключения и выхода из мидлета после пользователь читает и увольняет оповещения

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

  • Нет связанных вопросов^_^