【问题标题】:GPS gives wrong date and time in AndroidGPS在Android中给出错误的日期和时间
【发布时间】:2013-01-20 01:21:33
【问题描述】:

我正在从 GPS 获取当前日期和时间,但它给了我当前日期前 3 天的日期。在 MyLocationListener 类中 loc.getTime();给我当前日期前 3 天的日期。我正在使用的代码

public class Location_gps extends Activity
{
 Button btn;
 LocationManager mlocManager;
 LocationListener mlocListener;
 Location loc;
 SimpleDateFormat sdf;
 Date d;

@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_location_gps);

  btn = (Button)findViewById(R.id.btn);

  /* Use the LocationManager class to obtain GPS locations */
  mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

  mlocListener = new MyLocationListener();
  mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

  loc = mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

  sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
 d = new Date(loc.getTime());


  btn.setOnClickListener(new OnClickListener()
  {
  @Override
  public void onClick(View v)
  {
   String Text = "My current location is: " +
        "\nLatitude = " + loc.getLatitude() +
        "\nLongitude = " + loc.getLongitude() +
        "\nAccuracy = " + loc.getAccuracy() +
        "\nAltitude = " + loc.getAltitude() +
        "\nProvider = " + loc.getProvider() +
        "\nTime = " + sdf.format(d); 

Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
  }
 });

}

public class MyLocationListener implements LocationListener
{

  @Override
  public void onLocationChanged(Location loc)
  {

    loc.getLatitude();
    loc.getLongitude();

    String Text = "My current location is: " +
    "\nLatitude = " + loc.getLatitude() +
    "\nLongitude = " + loc.getLongitude() +
    "\nAccuracy = " + loc.getAccuracy() +
    "\nAltitude = " + loc.getAltitude() +
    "\nTime = " + loc.getTime();

    Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onProviderDisabled(String provider)
  {
    Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show();
  }

  @Override
  public void onProviderEnabled(String provider)
  {
    Toast.makeText( getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onStatusChanged(String provider, int status, Bundle extras)
  {

  }
}
}

如何从 GPS 获取当前日期和时间。请帮帮我。

【问题讨论】:

    标签: android date gps


    【解决方案1】:

    当您使用“getLastKnownLocation”方法时,它会返回自收到位置更新以来的最后一个参数。

    loc = mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    

    如果您的设备最近没有收到更新,它将返回您的案例 3 天后的最后一次更新。如果它无法接收 gps 更新,请检查您的“gps”是否启用或在户外尝试。

    【讨论】:

      【解决方案2】:

      这似乎是一个 Android 错误...请查看以下内容:

      http://www.zdnet.com/blog/hardware/the-time-displayed-on-most-android-phones-is-wrong/19387

      【讨论】:

      • 不,那么只有15秒,不需要按照上面的链接
      【解决方案3】:

      您应该使用 NTP api 而不是 GPS。查看http://code.google.com/p/ntp-sync/ 和“Is Android using NTP to sync time?”。基本上在Android上搜索NTP。 NTP 是跨所有设备、服务器和网络的网络时间协议标准。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-26
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        相关资源
        最近更新 更多