web-dev-qa-db-ja.com

android)で定期的に現在地をサーバーに送信する

現在地の詳細(緯度と経度)を定期的にサーバーに送信する必要があります(例:5分ごと)。最善の方法はありますか?現在地を取得する方法と詳細をサーバーに送信する方法を知っています。しかし、これを定期的に繰り返すにはどうすればよいですか?

11
Santhosh

BroadcastReceiver を使用すると、定期的なリクエストを送信するのに適しています。

ここ はBroadcastReceiverを使用するためのチュートリアルです。

2
ngesh

AlarmManagerを使用してサービスをウェイクアップし、サーバーに到達した場所を投稿するための最良の方法。

1
Dharmendra

私はサービスで10秒と15秒で一日中携帯電話の位置を取得するアプリケーションを開発しています。それは正常に動作しますが、ネットワークプロバイダーリスナーのメソッドOnLocationChangedが呼び出されなくなることがあります。

 import Android.location.Address;
    import Android.location.Geocoder;
    import Android.support.v7.app.AppCompatActivity;
    import Android.os.Bundle;
    import Android.view.View;
    import Android.widget.AdapterView;
    import Android.widget.ListView;
    import Android.widget.SimpleCursorAdapter;
    import Android.widget.TextView;


    import Java.io.IOException;
    import Java.util.List;

    import foodinn.databases.LocationUpdaterDatabase;

    public class LocationUpdatesActivity extends AppCompatActivity {
        private LocationUpdaterDatabase locationUpdaterDatabase;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_location_updates);

            locationUpdaterDatabase = new LocationUpdaterDatabase(this, "Locations.db", null, 1);

            final Geocoder geocoder = new Geocoder(this);

            ListView listView = (ListView) findViewById(R.id.locationUpdatesListView);

            listView.setAdapter(new SimpleCursorAdapter(this, R.layout.location_updates_list_view_view, locationUpdaterDatabase.getLocationUpdates(), new String[] {"latitude", "longitude", "whenUpdated"}, new int[] {R.id.listViewTextView1, R.id.listViewTextView2, R.id.listViewTextView3}, SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER));

            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    double latitude = Double.valueOf(((TextView) view.findViewById(R.id.listViewTextView1)).getText().toString());
                    double longitude = Double.valueOf(((TextView) view.findViewById(R.id.listViewTextView2)).getText().toString());

                    try {
                        List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);

                        String address = addressList.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
                        String city = addressList.get(0).getLocality();
                        String state = addressList.get(0).getAdminArea();
                        String country = addressList.get(0).getCountryName();
                        String postalCode = addressList.get(0).getPostalCode();
                        String knownName = addressList.get(0).getFeatureName();

                        ((TextView) view.findViewById(R.id.listViewTextView4)).setText(address + ", " + city + ", " + country);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
0
vicky mahale