Il y a un gestionnaire de localisation dans cn1 qui fonctionne très bien pour mon projet. Mais j'ai besoin de mettre à jour la valeur de l'emplacement en utilisant jobscheduler toutes les quelques minutes. J'ai fait jobScheduler en utilisant une interface native et j'ai besoin de code gps dans l'une de ses méthodes (méthode onStartJob() ici). Donc, je ne veux pas coder le gestionnaire de localisation (gps) à nouveau dans natif android natif. Par conséquent, j'ai utilisé le fournisseur de localisation cn1 directement dans l'interface native et il donne une erreur. Puis-je mélanger cn1 dans l'interface native de smhow?Pouvons-nous coder cn1 dans une interface native?
public class MyJobService extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
if (Display.isInitialized()) {//updated
checkGPS();
}
Toast.makeText(this,
"Live track running with jobScheduler",
Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
Toast.makeText(this,
"Live track running with jobScheduler stops",
Toast.LENGTH_SHORT).show();
return false;
}
//using cn1 location manager...
public void checkGPS() {
LocationManager.getLocationManager().setLocationListener(new LocationListener() {
@Override
public void locationUpdated(Location location) {
loc = location;
latitude = location.getLatitude();
longitude = location.getLongitude();
System.out.println("locationUpdated latitudeeee " + latitude);
System.out.println("locationUpdated longitudeeee " + longitude);
}
@Override
public void providerStateChanged(int newState) {
System.out.println("newState " + newState);
}
});
}
}
journal d'erreur:
09-11 10:48:14.980 15455-15455/? E/JobService: Error while executing job: 1
09-11 10:48:14.990 15455-15455/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.capitaleyenepal.nokia, PID: 15455
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'com.codename1.location.LocationManager com.codename1.impl.CodenameOneImplementation.getLocationManager()' on a null object reference
at android.app.job.JobService$JobHandler.handleMessage(JobService.java:130)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7409)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.codename1.location.LocationManager com.codename1.impl.CodenameOneImplementation.getLocationManager()' on a null object reference
at com.codename1.ui.Display.getLocationManager(Display.java:3091)
at com.codename1.location.LocationManager.getLocationManager(LocationManager.java:70)
at com.capitaleyenepal.nokia.MyJobService.checkGPS(MyJobService.java:56)
at com.capitaleyenepal.nokia.MyJobService.onStartJob(MyJobService.java:30)
at android.app.job.JobService$JobHandler.handleMessage(JobService.java:126)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7409)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Update1: Si je supprime la méthode checkGPS() qui a des codes CN1 pour l'emplacement, le JobScheduler fonctionne très bien.
@Override
public boolean onStartJob(JobParameters jobParameters) {
if (Display.isInitialized()) {
checkGPS();
}
return false;
}
Erreur lors du débogage (application se bloque) méthode
10-18 11:33:36.608 2580-2726/? E/ActivityManager: ANR in com.capitaleyenepal.nokia
PID: 15661
Reason: executing service com.capitaleyenepal.nokia/.MyJobService
Load: 0.0/0.0/0.0
CPU usage from 97817ms to 0ms ago:
5.6% 2580/system_server: 3.6% user + 2% kernel/faults: 8228 minor 44 major
3.2% 1102/mmcqd/0: 0% user + 3.2% kernel
2.1% 3681/com.samsung.android.providers.context: 1.2% user + 0.8% kernel/faults: 2529 minor 397 major
0.9% 1262/mc_fastcall: 0% user + 0.9% kernel
0.5% 22199/com.sec.spp.push:RemoteDlcProcess: 0.3% user + 0.2% kernel/faults: 1906 minor 1027 major
0.9% 3136/com.android.systemui: 0.7% user + 0.1% kernel/faults: 11113 minor 7 major
0.7% 24072/adbd: 0.2% user + 0.5% kernel/faults: 1053 minor
0.5% 16674/logcat: 0.2% user + 0.3% kernel/faults: 17 minor
0.3% 7253/com.android.bluetooth: 0.2% user + 0.1% kernel/faults: 1791 minor
0.3% 4423/com.google.android.gms.persistent: 0.2% user + 0% kernel/faults: 1875 minor
0.3% 2241/jbd2/dm-0-8: 0% user + 0.3% kernel
0.2% 2115/servicemanager: 0.1% user + 0.1% kernel
0.2% 7549/com.samsung.android.sm.provider: 0.1% user + 0% kernel/faults: 768 minor
0.1% 2117/surfaceflinger: 0% user + 0.1% kernel/faults: 127 minor
0.1% 2268/argosd: 0.1% user + 0% kernel
0.1% 3114/com.android.phone: 0.1% user + 0% kernel/faults: 333 minor
0% 2284/fingerprintd: 0% user + 0% kernel/faults: 1234 minor
0.1% 15594/kworker/0:3: 0% user + 0.1% kernel
0.1% 15661/com.capitaleyenepal.nokia: 0.1% user + 0% kernel/faults: 2 minor
0.1% 16390/com.google.android.gms: 0.1% user + 0% kernel/faults: 3539 minor 2 major
0.1% 15207/kworker/1:1: 0% user + 0.1% kernel
0.1% 16358/com.google.android.gms.persistent: 0% user + 0% kernel/faults: 1797 minor
0% 2277/sdp_cryptod: 0% user + 0% kernel/faults: 74 minor
0.1% 3403/android.process.acore: 0% user + 0% kernel/faults: 182 minor
0.1% 12561/cfinteractive0: 0% user + 0.1% kernel
0.1% 7/rcu_preempt: 0% user + 0.1% kernel
0.1% 7424/com.samsung.android.sm: 0% user + 0% kernel/faults: 541 minor
0% 15160/kworker/2:1: 0% user + 0% kernel
0% 7618/com.opera.max.oem: 0% user + 0% kernel/faults: 43 minor
0% 16656/kworker/3:0: 0% user + 0% kernel
0% 2114/lmkd: 0% user + 0% kernel
0% 9858/com.sec.spp.push: 0% user + 0% kernel/faults: 15 minor
0% 1453/dhd_dpc: 0% user + 0% kernel
0% 10/migration/0: 0% user + 0% kernel
0% 13/migration/1: 0% user + 0% kernel
0% 23/migration/3: 0% user + 0% kernel
0% 2086/kworker/0:1H: 0% user + 0% kernel
0% 13720/com.facebook.katana: 0% user + 0% kernel/faults: 426 minor 1 major
0% 16211/com.samsung.cmh:CMH: 0% user + 0% kernel/faults: 38 minor
0% 25159/com.google.android.gms: 0% user + 0% kernel/faults: 2183 minor
0% 18/migration/2: 0% user + 0% kernel
0% 28/migration/4: 0% user + 0% kernel
0% 616/ion_noncontig_h: 0% user + 0% kernel
0% 686/kswapd0: 0% user + 0% kernel
0% 2113/healthd: 0% user + 0% kernel
0% 12378/wpa_supplicant: 0% user + 0% kernel/faults: 1 minor
0% 16576/com.sec.android.daemonapp: 0% user + 0% kernel/faults: 254 minor
0% 17723/com.sec.android.inputmethod: 0% user + 0% kernel/faults: 2743 minor
0% 1//init: 0% user + 0% kernel/faults: 46 minor
0% 30/kworker/4:0: 0% user + 0% kernel
0% 33/migration/5: 0% user + 0% kernel
0% 38/migration/6: 0% user + 0% kernel
0% 1475/ueventd: 0% user + 0% kernel
0% 2122/tee_scheduler: 0% user + 0% kernel
0% 2252/edmaudit: 0% user + 0% kernel
0% 2257/rild: 0% user + 0% kernel/faults: 35 minor
0% 2323/rild: 0% user + 0% kernel/faults: 53 minor
0% 16370/com.google.process.gapps: 0% user + 0% kernel/faults: 31 minor
0% 8/rcu_sched: 0% user + 0% kernel
0% 14/ksoftirqd/1: 0% user + 0% kernel
0% 43/migration/7: 0% user + 0% kernel
0% 870/hwrng: 0% user + 0% kernel
0% 1451/dhd_watchdog_th: 0% user + 0% kernel
0% 2087/kworker/2:1H: 0% user + 0% kernel
0% 2116/mcDriverDaemon: 0% user + 0% kernel/faults: 656 minor
0% 2254/netd: 0% user + 0% kernel/faults: 17 minor
0% 2278/diagexe: 0% user + 0% kernel
0% 2913/tlc_s
checkGps()
public void checkGPS() {
LocationManager.getLocationManager().setLocationListener(new LocationListener() {
@Override
public void locationUpdated(Location location) {
loc = location;
latitude = location.getLatitude();
longitude = location.getLongitude();
System.out.println("locationUpdated latitudeeee " + latitude);
System.out.println("locationUpdated longitudeeee " + longitude);
}
@Override
public void providerStateChanged(int newState) {
System.out.println("newState " + newState);
}
});
}
Pouvez-vous donner le lien vers le fichier AndroidImplementation.java? – beck
Le fichier se trouve sur le dépôt Codename One GitHub https://github.com/codenameone/CodenameOne. Le fichier peut être trouvé dans ce chemin: CodenameOne/Ports/Android/src/com/nom de code1/impl/android/AndroidImplementation.java – Diamond
Vous pouvez jeter un oeil à la mise en œuvre de la carte Google pour voir comment les codes natifs Codename One codes. https://github.com/codenameone/codenameone-google-maps/blob/master/GoogleMaps/native/android/com/codename1/googlemaps/InternalNativeMapsImpl.java – Diamond