私は、その特定のlocation
ごとにデータベースに保存する必要があるアプリケーションに取り組んでいます。1 minute
device/user
アプリケーションが開いている間にユーザーが移動している場合、その座標は毎回データベースに挿入され続けるはず1 minute
です。そのため、MySql データベースにデータを挿入できる Web サービスをセットアップしました。挿入部分で WebService をテストしましたが、正常に動作します。
しかし、私が抱えている問題は、その特定のデバイス/ユーザーのMySqlデータベースに1 minute
. なぜそれが毎回起こっていないのか誰にも教えてもらえます1 minute
か? 以下のコードに問題がある場合は、上記のシナリオに従って機能する例を提供して、誰かが私を助けてくれますか?
どんな考えでも大いに役立ちます。
private final String id = UUID.randomUUID().toString();
private final String sampleURL = ServerInfo.getServiceURL() + "/insert";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
60000,
0,
this.locationListener);
}
以下は、 を実装するクラスですLocationListener
。
private class GPSLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
}
// Below code is used to insert into database
String userId = id;
String mLatitude = Double.toString(location.getLatitude());
String mLongitude = Double.toString(location.getLongitude());
String mProvider = location.getProvider();
String mHasAltitude = Boolean.toString(location.hasAltitude());
String mAltitude = Double.toString(location.getAltitude());
String mHasSpeed = Boolean.toString(location.hasSpeed());
String mSpeed = Float.toString(location.getSpeed());
String mHasBearing = Boolean.toString(location.hasBearing());
String mBearing = Float.toString(location.getBearing());
String mHasAccuracy = Boolean.toString(location.hasAccuracy());
String mAccuracy = Float.toString(location.getAccuracy());
WebServiceTask wst = new WebServiceTask(WebServiceTask.POST_TASK,
getApplicationContext(), "Posting data...");
wst.addNameValuePair("user_id", userId);
wst.addNameValuePair("mlatitude", mLatitude);
wst.addNameValuePair("mlogitude", mLongitude);
wst.addNameValuePair("mprovider", mProvider);
wst.addNameValuePair("mhasAltitude", mHasAltitude);
wst.addNameValuePair("mAltitude", mAltitude);
wst.addNameValuePair("mhasspeed", mHasSpeed);
wst.addNameValuePair("mspeed", mSpeed);
wst.addNameValuePair("mhasbearing", mHasBearing);
wst.addNameValuePair("mbearing", mBearing);
wst.addNameValuePair("mhasaccuracy", mHasAccuracy);
wst.addNameValuePair("maccuracy", mAccuracy);
// This will insert into database
wst.execute(new String[] { sampleURL });
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
注:- データベースに挿入していますが、必要な時間間隔で正確またはほぼ挿入していません。1 minute