2

私は 3 つの GSM 電話と 3 つのベライゾン (CDMA) 電話を持っています。ロケーションリスナーが 5 分間隔に設定されている BB アプリケーションがあります。

2 台の Verizon 電話では、アプリケーションの位置更新メソッドが頻繁に呼び出されます。残りの部分では、ロケーション リスナーが通常の 5 分間隔で呼び出されます。

この動作の違いの原因は何ですか?

public synchronized void locationUpdated(LocationProvider locationProvider, Location location) {
        if (enabled) {

            if (blackberryProvider != null) {
                try {                       
                    constructCriteria(GPSInfo.GPS_MODE_CELLSITE);
                    gpsUpdate();
                } catch (LocationException e) {
                   log stuff//  
                }
            }
        }
    }


    private void gpsUpdate() throws LocationException, InterruptedException {
        try {
            String gpsMode = null;
        if (bbCriteria.getMode() == GPSInfo.GPS_MODE_CELLSITE) {
                gpsMode = "cellsiteMode";
            }


            if (gpsMode == "cellsiteMode" && gpsMode.length() > 0 && bbProvider != null) {
                // variable declaration

                try {
                    bbLocation = (BlackBerryLocation) bbProvider.getLocation(10);
                } catch (LocationException e) {

                    bbLocation = null;
                }

                if (bbLocation != null) {
                    // do stuff
                    // store location in the database   


                        }

                    }

                }

            }
        }
    }





private void constructCriteria(final int mode) {
    blackberryCriteria = null;
    blackberryProvider = null;
    blackberryCriteria = new BlackBerryCriteria();
    blackberryCriteria.setSatelliteInfoRequired(true, false);



     if (mode == GPSInfo.GPS_MODE_CELLSITE) {
        setCriteraForCellSite();
    }
    try {
        blackberryProvider = (BlackBerryLocationProvider) LocationProvider.getInstance(blackberryCriteria);

        if (iLocationListner == null) {
            iLocationListner = new ILocationListner();
            blackberryProvider.setLocationListener(iLocationListner, locationInterval == 0 ? 300 : locationInterval, -1, -1);
        } else {
            blackberryProvider.setLocationListener(iLocationListner, locationInterval == 0 ? 300 : locationInterval, -1, -1);
        }
    } catch (LocationException lex) {
        Logger.log("LocationEventSource constructor", lex);
        return;
    } 

}
4

1 に答える 1

2

それ以外の場合は、 300 秒ごとに更新するように基準を設定してlocationInterval == 0います。これは本当にあなたが望むものですか?locationInterval はどこで初期化されますか? プログラムが実行されると、その値はどのように変化しますか?

于 2012-11-29T18:11:12.637 に答える