如何以编程方式在黑莓上找到方向?

时间:2010-03-02 09:22:10

标签: blackberry gps

如何使用GPS以编程方式在黑莓手机上查找方向?

3 个答案:

答案 0 :(得分:3)

使用GPS,最小分辨率为3米。如果您连续获取GPS读数并查找给定方向的重大变化,它将为您提供旅行方向的粗略估计,从而可以确定该人员可能面向的方向。

这不如使用磁罗盘好,目前市场上没有黑莓(Blackberrys?)。

某些GPS系统有两个GPS接收器以已知方向彼此相邻放置。他们可以根据比较两个GPS读数来计算设备面向的方向。他们称之为GPS指南针。此外,these systems太大而无法在此时包含在手机中。

您可以使用Blackberry API查找GPS信息,包括课程标准(getCourse方法)。它会给你一个指南针读数,其中0.00为北方。

答案 1 :(得分:1)

GPS数据不能给你方向,它只给你位置。如果你有两个位置(例如你在1秒前的位置,以及你现在的位置),大多数实现,包括黑莓,将为你提供从一个点到另一个点的方位(方向)。

Android设备和IIRC的iPHone 3Gs,带有数字磁罗盘可以为您提供方向。我不相信还有黑莓装有指南针。

答案 2 :(得分:0)

Blackberry使用的java micro中的 GPS API 将为您提供电话指向的方向。以下是GPS类的片段,可检索大部分基本GPS信息:

/**
 * This will start the GPS
 */
public GPS() {
    // Start getting GPS data
    if (currentLocation()) {
        // This is going to start to try and get me some data!
    }
}

private boolean currentLocation() {
    boolean retval = true;
    try {
        LocationProvider lp = LocationProvider.getInstance(null);
        if (lp != null) {
            lp.setLocationListener(new LocationListenerImpl(), interval, 1, 1);
        } else {
            // GPS is not supported, that sucks!
            // Here you may want to use UiApplication.getUiApplication() and post a Dialog box saying that it does not work
            retval = false;
        }
    } catch (LocationException e) {
        System.out.println("Error: " + e.toString());
    }

    return retval;
}

private class LocationListenerImpl implements LocationListener {
    public void locationUpdated(LocationProvider provider, Location location) {
        if (location.isValid()) {
            heading = location.getCourse();
            longitude = location.getQualifiedCoordinates().getLongitude();
            latitude = location.getQualifiedCoordinates().getLatitude();
            altitude = location.getQualifiedCoordinates().getAltitude();
            speed = location.getSpeed();

            // This is to get the Number of Satellites
            String NMEA_MIME = "application/X-jsr179-location-nmea";
            satCountStr = location.getExtraInfo("satellites");
            if (satCountStr == null) {
                satCountStr = location.getExtraInfo(NMEA_MIME);
            }

            // this is to get the accuracy of the GPS Cords
            QualifiedCoordinates qc = location.getQualifiedCoordinates();
            accuracy = qc.getHorizontalAccuracy();
        }
    }

    public void providerStateChanged(LocationProvider provider, int newState) {
        // no-op
    }
}