2012年2月10日 星期五

Android 開發筆記 - 實機模擬 GPS 座標變化 @ Android 3.2

DDMSLocation


對 Android 模擬器來說,可以透過 DDMS 模擬 GPS 座標及其變化,然而在實體機器上卻沒看到幾篇相關文章?之所以用實體機器的主因,實在是平板模擬器跑太慢了!程式還是在實體機器跑得順多囉。


用法:


在 AndroidManifest.xml 檔案中,增加 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 設定。


新增函數:


public void setMockLocation(double latitude, double longitude)
{
    LocationManager testLM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
   if( testLM != null )
   {
      try
      {
         String mocLocationProvider = testLM.GPS_PROVIDER;
         testLM.addTestProvider(mocLocationProvider, false, false, false, false, false, false, false, 0, 5);
         testLM.setTestProviderEnabled(mocLocationProvider, true);
         Location loc = new Location(mocLocationProvider);
         loc.setTime(System.currentTimeMillis());
         loc.setLatitude(latitude);
         loc.setLongitude(longitude);
         testLM.setTestProviderLocation(mocLocationProvider, loc);
         Toast.makeText(getApplicationContext(), "MockGPS Set", Toast.LENGTH_SHORT).show();
      }
      catch( Exception e )
      {
         Toast.makeText(getApplicationContext(), "MockGPS Failed", Toast.LENGTH_SHORT).show();
      }
  }
  else
      Toast.makeText(getApplicationContext(), "No LocationManager", Toast.LENGTH_SHORT).show();
}


之後,在程式碼中就可以透過 setMockLocation(0,0) 用來,來模擬假的 GPS 囉,最大的缺點仍是需要寫程式。


 應用:


除了在應用程式中模擬 GPS 的測試外,這東西應該有機會跟其他 GPS 定位裝置結合,例如用藍芽傳輸或 wifi 傳輸的 GPS 定位裝置,把收到的 GPS 給手機定位。


1 則留言:

  1. 請問一下這個函式的作用程序大概是怎樣呢?
    我設定了執行卻總是Failed
    謝謝

    版主回覆:(09/19/2011 10:04:56 AM)


    這...我也不知道 XD 當時是用 Android 2.2
    剩下的只好自行看錯誤訊息 & Google 囉

    回覆刪除