Question

Je suis en train de mettre en œuvre JSR-179 APi dans le téléphone Nokia Symbian pour la mise à jour périodique de localisation à l'aide setLocationListener par J2ME. Dans l'émulateur, il fonctionne très bien. Alors que j'ai installé Midlet sur l'appareil Nokia 5230, il est donné NullPointerException et l'application est automatiquement fin à. Quelles pourraient être les causes possibles?

Voici ma classe, je suis l'objet instancié pour cette classe sur un formulaire dans 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();

    }
    }
} 
Était-ce utile?

La solution

public MovementTracker() throws LocationException

...
Je ne l'ai pas écrit de code pour le traitement LocationException.

Aucun code est une pratique très dangereuse, il suffit de chercher sur le web pour quelque chose comme "les exceptions de Java".

Il est tout à fait possible qu'en raison de spécificités de l'implémentation Nokia lance LocationException où émulateur ne jette pas. Puisque vous ne gérez pas exception cela peut vous fait tomber en panne MIDLet chez Nokia -. Et vous ne savez pas la raison de cela parce que, encore une fois, vous avez écrit pas de code pour gérer

Comment puis-je attraper cette exception?

La chose la plus simple que vous pouvez faire est d'afficher une alerte avec le message d'exception et quitter le midlet après lit utilisateur et congédie alerte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top