개발 가이드

Local Navigation

BlackBerryLocation 클래스를 사용하여 위성 정보 검색

GPS 수정값을 요청하고 현재 확인 가능한 위성 수, 추적된 위성, 평균적인 위성 신호 품질, GPS 데이터 소스(내부 또는 외부 GPS) 및 GPS 모드를 검색할 수 있습니다.

  1. 필요한 클래스를 가져옵니다.
    import java.util.*;
    import java.lang.*;
    import net.rim.device.api.gps.*;
  2. 클래스와 생성자를 만듭니다.
    public class handleGPS
    {
       public handleGPS()
       {
       }
    }
  3. 클래스에서, 검색하는 위치 정보의 각 항목과 스레드에 대한 static 필드를 선언합니다.
    static GPSThread gpsThread;
    static int satCount;
    static int signalQuality;
    static int dataSource;
    static int gpsMode;
  4. 생성자에서 스레드를 만들고 시작합니다.
    gpsThread = new GPSThread();
    gpsThread.start();
  5. 클래스에서 Thread를 확장하는 private static 클래스를 만들고 run() 메소드를 만듭니다.
    private static class GPSThread extends Thread
    {
        public void run()
        {
        }
    }
  6. run()에서 try/catch 블록을 만듭니다. 이 블록에서 GPS 모드를 지정하는 BlackBerryCriteria 클래스의 인스턴스를 만듭니다. 두 번째 try/catch 블록을 만듭니다. 이 블록에서 BlackBerryCriteria 객체의 인스턴스를 가져와서 BlackBerryLocationProvider 클래스의 인스턴스를 만듭니다.
    try
    {
        BlackBerryCriteria myCriteria = new BlackBerryCriteria(GPSInfo.GPS_MODE_AUTONOMOUS);
        try
        {
            BlackBerryLocationProvider myProvider =
                (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria);
    
  7. 세 번째 try/catch 블록(첫 번째 try/catch 블록 내)을 만듭니다. BlackBerryLocation 객체를 만들어 300초 시간 제한 만료를 포함한 GPS 수정값을 검색합니다. 필드를 채우고 위성 정보를 StringBuffer 객체로 추출합니다.
    try
    {
        BlackBerryLocation myLocation =
            (BlackBerryLocation)myProvider.getLocation(300);
        satCount= myLocation.getSatelliteCount();
        signalQuality = myLocation.getAverageSatelliteSignalQuality();
        dataSource = myLocation.getDataSource();
        gpsMode = myLocation.getGPSMode();
        SatelliteInfo si;
        StringBuffer sb = new StringBuffer("[Id:SQ:E:A]\n");
        String separator = ":";
        for (Enumeration e = myLocation.getSatelliteInfo();
            e!=null && e.hasMoreElements(); )
        {
            si = (SatelliteInfo)e.nextElement();
            sb.append(si.getId() + separator);
            sb.append(si.getSignalQuality() + separator);
            sb.append(si.getElevation() + separator);
            sb.append(si.getAzimuth());
            sb.append('\n');
        }
    }
    catch ( InterruptedException iex )
    {}
    catch ( LocationException lex )
    {}

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.