Использование LocationListener вместе с игровым движком AndEngine - PullRequest
0 голосов
/ 11 марта 2011

Эй, я сейчас изучаю, как использовать AndEngine вместе с GPS-местоположением телефона.Я решил, что доступ к этой информации не должен быть слишком сложным, поэтому я просто взял пример ChangeableText и пытаюсь настроить его, чтобы убедиться, что он правильно захватывает Местоположение, в основном то, что я сделал, это:

добавлено 'реализует LocationListener' в объявление класса

    public class ChangeableTextExample extends BaseExample implements LocationListener{

добавлены переменные местоположения и менеджер местоположения в поля класса:

private long curlat;
private long curlng;
private LocationManager locationManager;

создание экземпляра locationManager вметод onLoadScene ():

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

устанавливает elapsedText для печати переменных curlat и curlng:

     scene.registerUpdateHandler(new TimerHandler(1 / 20.0f, true, new ITimerCallback() {
        public void onTimePassed(final TimerHandler pTimerHandler) {
            elapsedText.setText("Location: " + curlat + ", " + curlng);
            fpsText.setText("FPS: " + fpsCounter.getFPS());
        }
    }));

и реализует метод onLocationChanged (Location arg), чтобы он обновлялcurlat, curlng поля.

public void onLocationChanged(Location location) {
    this.curlat = (long) (location.getLatitude()*1E6);
    this.curlng = (long) (location.getLongitude()*1E6);     
}

К сожалению, это не работает, и мне было интересно, сможет ли кто-нибудь из вас указать мне правильное направление?Я довольно новичок в программировании для Android, и еще новее в программировании с AndEngine.Я предполагаю, что это как-то связано с тем, что locationManager не был должным образом создан?

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Кстати, вы можете использовать enableLocationSensor класса Engine / BaseGameActivity, чтобы AndEngine управлял поиском местоположения для вас.

1 голос
/ 11 марта 2011

См. Android - получение местоположения пользователя .

Вы должны фактически указать объект locationManager, чтобы он обновлял вас (а также добавить разрешение в AndroidManifest.xml для получения информации о местоположении)..

По ссылке вот то, что вам не хватает:

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

Для AndroidManifest.xml (вам может потребоваться изменить разрешение, если вы предпочитаете просто использовать толькоменее точные данные о местоположении сети / Wi-Fi вместо GPS):

<manifest ... >
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    ...
</manifest>
...