Интеграция GPS в JavafxPorts

У меня есть приложение Javafx, которое нужно развернуть на Android. Моему приложению нужно получить широту и долготу, но я не знаю, как их реализовать. Может ли кто-нибудь дать мне пример кода о том, как это сделать в JavaFX?

ОБНОВЛЕНО:

package com.gpstracker;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class GPSTracker extends Application {

    @Override
    public void start(Stage stage) {
        TextField t1 = new TextField();

        TextField t2 = new TextField();

        Button button = new Button("Show Location");
        button.setOnAction(new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent event) {
                PositionService positionService = PlatformFactory.getPlatform().getPositionService();
                Position position = positionService.getPosition();
            }
        });

        VBox root = new VBox(20);
        root.setPadding(new Insets(20));
        root.getChildren().addAll(t1, t2, button);

        Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds();
        Scene scene = new Scene(root, visualBounds.getWidth(), visualBounds.getHeight());

        stage.setScene(scene);
        stage.show();
    }

}

Похоже, Gloun не может найти вызов класса PositionService и Position.


person Walker    schedule 07.04.2016    source источник


Ответы (3)


С Gluon Mobile текущее положение устройства можно отслеживать с помощью ПозиционСервис. Пример фрагмента кода:

PositionService positionService = PlatformFactory.getPlatform().getPositionService();
Position position = positionService.getPosition();
System.out.println("Current GPS position: " + position.getLatitude() + "," + position.getLongitude());
person Joeri Sykora    schedule 07.04.2016
comment
Сэр, спасибо за ответ, но Gluon не может найти класс PositionService и Position, пожалуйста, обратитесь к обновленному вопросу выше. - person Walker; 07.04.2016
comment
Привет, почему переменная position возвращает null? Я уже включил свое местоположение с высокой точностью. Есть идеи, сэр? - person Walker; 08.04.2016
comment
При загрузке PositionService в первый раз он попытается установить текущую позицию в последнюю известную позицию, используя следующий метод: developer.android.com/reference/android/location/. Это может вернуть null. Вместо этого вы можете добавить ChangeListener к свойству position: positionService.positionProperty().addListener((obs, oldPos, newPos) -> System.out.println("New GPS position: " + newPos.getLatitude() + "," + newPos.getLongitude()));. Этот прослушиватель будет вызываться каждый раз при изменении позиции. - person Joeri Sykora; 08.04.2016

Этого можно добиться с помощью библиотеки Gluon Mobile. http://gluonhq.com/products/mobile/

person mipa    schedule 07.04.2016

Чтобы использовать PositionService, упомянутый Joeri, вы должны добавить зависимость к charm-down библиотеке Gluon с открытым исходным кодом. Вот пример конфигурации для вашего build.gradle:

dependencies {
    compile 'com.gluonhq:charm-down-common:2.0.0';
    desktopRuntime 'com.gluonhq:charm-down-desktop:2.0.0';
    androidRuntime 'com.gluonhq:charm-down-android:2.0.0';
    iosRuntime 'com.gluonhq:charm-down-ios:2.0.0';
}
person Eugene Ryzhikov    schedule 07.04.2016
comment
привет, где разместить этот код? Можете ли вы сказать мне, где разместить эти коды в build.gradle? - person Walker; 08.04.2016
comment
ваше приложение javafxports должно иметь файл build.gradle в корневой папке. В этом файле уже может быть раздел зависимостей, просто добавьте в него эти 4 записи. Вам также следует прочитать документацию по javafxports на странице docs.gluonhq.com/javafxports/#_build_gradle. - person Eugene Ryzhikov; 08.04.2016