SDK 5.0及更高版本中的标准和GPS

时间:2012-05-28 21:54:31

标签: blackberry

我正在开发一个BB应用程序,我需要获得当前的位置。

在使用v5.0的BB机型中没问题,但是在带v6.0的BB中,我总是将locationProvider设为null。 (gps已开启)。

任何人都知道会发生什么以及如何解决它?

我使用的代码是:

private boolean startLocationUpdate() {
    boolean retval = false;

    try {
        Criteria criteria = new Criteria();
        criteria.setCostAllowed(true);
        criteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);

        criteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
        criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);

        locationProvider = LocationProvider.getInstance(criteria);

        if (locationProvider == null) {

            Runnable showGpsUnsupportedDialog = new Runnable() {
                public void run() {

                    Dialog.alert("GPS is not supported on this platform...");
                    // System.exit( 1 );
                }
            };

            UiApplication.getUiApplication().invokeAndWait(
                    showGpsUnsupportedDialog); // Ask event-dispatcher
                                                // thread to display dialog
                                                // ASAP.
        } else {

            locationProvider.setLocationListener(
                    new LocationListenerImpl(), interval, 1, 1);

            retval = true;
        }
    } catch (LocationException le) {
        System.err
                .println("Failed to instantiate the LocationProvider object, exiting...");
        System.err.println(le);
        System.exit(0);
    }
    return retval;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

根据Criteria的API文档,您正在请求Cellsite模式。 LocationProvider.getInstance()的文档指定:

a LocationProvider meeting the defined criteria or null if a LocationProvider that meets the defined criteria can't be returned but there are other supported available or temporarily unavailable providers that do not meet the criteria.

因此,API告诉您不支持Cellsite,但还有其他支持的模式可用。如果您想使用GPS,您需要指定一个要求自治模式的标准。