Chcę użyć PositionService
z Gluon Mobile na iOS. Napisałem małą przykładową aplikację, która działa na komputerze, zapewniając (zgodnie z zamierzeniami) fałszywe zmiany lokalizacji i na Androida. Jednak w symulatorze iOS słuchacz nie jest wywoływany. Tutaj jest odpowiednia część kodu:Jak korzystać z usługi PositionService w Gluon Mobile na iOS?
public class BasicView extends View {
private static final Logger LOGGER = Logger.getLogger(BasicView.class.getName());
final Label label;
public BasicView(String name) {
super(name);
label = new Label();
VBox controls = new VBox(15.0, label);
controls.setAlignment(Pos.CENTER);
setCenter(controls);
// get current position
Platform p = PlatformFactory.getPlatform();
PositionService ps = p.getPositionService();
outputPos(ps.getPosition());
ps.positionProperty().addListener((obs, oldPos, newPos) -> {
LOGGER.log(Level.INFO, "\nobs: {0}\noldPos: {1}\nnewPos: {2}",
new Object[]{obs, oldPos, newPos});
outputPos(newPos);
});
}
private void outputPos(Position p) {
if (p != null) {
label.setText(String.format("We are currently here: %f %f",
p.getLatitude(),
p.getLongitude()));
}
}
@Override
protected void updateAppBar(AppBar appBar) {
appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> System.out.println("Menu")));
appBar.setTitleText("Basic View");
appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}
}
Dodałem libCharm.a, ale o ile mogę powiedzieć, że nie powinno być tutaj potrzebne.
Też znalazłem wskazówki dotyczące aktualizacji pliku info.plist w następujący sposób, ale z lub bez niego detektor nie jest wywoływany.
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>location-services</string>
</array>
...
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location is required to find out where you are</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Location is required to find out where you are</string>
Jedyne wyjście dotyczące lokalizacji widzę to tak:
Aug 27, 2016 1:37:31 PM com.gluonhq.charm.down.ios.IOSPositionService <init>
INFO: Location Manager configured with desiredAccuracy 10.00 and distanceFilter 100.00
Aug 27, 2016 1:37:31 PM com.gluonhq.charm.down.ios.IOSPositionService <init>
INFO: Telling LocationManager to start updating location.
Myślę, że jestem brakuje czegoś tutaj ... Jak zawsze, każda pomoc jest mile widziana.
EDIT: Niestety, zapomniałem build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.thomaskuenneth.gluon.positionservicedemo.PositionServiceDemo'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
compileSdkVersion = 23
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
Właśnie wydaliśmy Charm Down 3.0.0, z całkowitym remontem biblioteki. Spójrz na zaktualizowane próbki Gluon, które korzystają z nowej wersji 1.1.0 wtyczki jfxmobile. Również wtyczki IDE są aktualizowane w celu użycia tych wersji. Spróbuj i daj mi znać, jeśli to rozwiąże Twój problem. –
José, przepraszam, że poświęciłem trochę czasu na odpowiedź. Zmieniłem wersję na Gluon Mobile 4, czyli wtyczkę i nowy Charm Down. Kiedy uaktualniłem swój kod (używając Usług) i zastosowałem zmiany, o których wspomniałem w swojej odpowiedzi, zacząłem widzieć zmiany pozycji w symulatorze iPada. Aktualizacja do Gluon Mobile 4 rozwiązała mój problem. ;-) – Thomas
Importujesz 'com.gluonhq.charm.down.plugins. *' (Zawierający PositionServices)? Kompiluję 'com.gluonhq: charm: 4.3.7' w mojej' kompilacji.gradle' file - ale nie mogę/nie wiem, jak uzyskać dostęp do najnowszych usług - widzę tylko ograniczoną ich liczbę. Nie są one możliwe poprzez 'import com. *. * ...' (etc). – Lealo