1

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 から現在の日付と時刻を取得する方法。私を助けてください。

4

3 に答える 3

2

「getLastKnownLocation」メソッドを使用すると、位置の更新を受信して​​からの最後のパラメーターが返されます。

loc = mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

お使いのデバイスが最近更新を受信して​​いない場合は、ケースの 3 日前の最後の更新が返されます。GPS アップデートを受信できない場合は、「GPS」が有効になっているかどうかを確認するか、屋外で試してください。

于 2013-02-05T08:00:36.907 に答える
0

これは Android のバグのようです...以下をご覧ください。

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

于 2013-02-05T07:29:33.467 に答える
-1

GPS の代わりに NTP API を使用する必要があります。http://code.google.com/p/ntp-sync/と「Android は NTP を使用して時刻を同期していますか? 」を確認してください。基本的にAndroidでNTPを検索します。NTP は、すべてのデバイス、サーバー、およびネットワークにおけるネットワーク タイム プロトコルの標準です。

于 2013-02-05T07:34:38.007 に答える