2017-09-11 2 views
1

私のプロジェクトでうまく動作するロケーションマネージャが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); 
    } 
}); 
} 

答えて

1

コードネームの一つが実行されていないので、これが起こっているのデバッグ中。それはあなたには、いくつかのニュアンスがあるので、可能な場合、私はそれに対して助言する、initを呼び出して試してみて、あなたのコンテキストオブジェクトを渡すことができない場合は

if(Display.isInitialized()) { 
    ... 
} 

:あなたはDisplayクラスのようなコードを使用して初期化されていることを確認する必要があります。そのパスに従うことを選択した場合、AndroidImplementation.javaファイルを調べることをお勧めします。

+0

AndroidImplementation.javaファイルへのリンクをplzできます – beck

+0

ファイルはCodename One GitHubリポジトリhttps://github.com/codenameone/CodenameOneにあります。ファイルは次のパスにあります:CodenameOne/Ports/Android/src/com/codename1/impl/android/AndroidImplementation.java – Diamond

+0

コードネームコードと呼ばれるネイティブコードがどのように見えるかは、Googleマップの実装をご覧ください。 https://github.com/codenameone/codenameone-google-maps/blob/master/GoogleMaps/native/android/com/codename1/googlemaps/InternalNativeMapsImpl.java – Diamond

関連する問題