私のプロジェクトでうまく動作するロケーションマネージャがcn1にあります。しかし、私はjobschedulerを使用して数分ごとに場所の価値を更新する必要があります。私は、ネイティブインターフェイスを使用してjobSchedulerを実行し、そのメソッドの1つ(ここではonStartJob()メソッド)でgpsコードが必要です。だから私はネイティブのネイティブのアンドロイドで位置マネージャー(gps)を再度コードしたくありません。したがって、私はネイティブインタフェースで直接cn1ロケーションプロバイダを使用し、エラーを出しています。ネイティブインターフェイスsmhowでcn1を混在させることはできますか?ネイティブインターフェイス内でcn1をコード化できますか?
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);
}
});
}
}
エラーログ:
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)
アップデート1:私は場所のためのCN1コードを持っているcheckGPS()メソッドを削除した場合、jobschedulerのが正常に動作します。
@Override
public boolean onStartJob(JobParameters jobParameters) {
if (Display.isInitialized()) {
checkGPS();
}
return false;
}
エラー(アプリのクラッシュ)
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);
}
});
}
AndroidImplementation.javaファイルへのリンクをplzできます – beck
ファイルはCodename One GitHubリポジトリhttps://github.com/codenameone/CodenameOneにあります。ファイルは次のパスにあります:CodenameOne/Ports/Android/src/com/codename1/impl/android/AndroidImplementation.java – Diamond
コードネームコードと呼ばれるネイティブコードがどのように見えるかは、Googleマップの実装をご覧ください。 https://github.com/codenameone/codenameone-google-maps/blob/master/GoogleMaps/native/android/com/codename1/googlemaps/InternalNativeMapsImpl.java – Diamond