我们如何使用谷歌融合位置服务获得我们的Android设备的准确位置?

时间:2015-04-29 05:31:36

标签: android gps tracking

我每隔15秒请求一次位置更新,但每次更改位置时,即使设备位于同一位置。

任何人都可以帮助我,让我知道确切的位置,至少是大致的位置,以便我可以在旅行时计算距离,并等待长时间站在同一个地方的时间。

2 个答案:

答案 0 :(得分:0)

您可以检查位置的准确性。这可以定义您收到的位置的准确程度,具体取决于您可以过滤位置http://developer.android.com/reference/android/location/Location.html#getAccuracy()

答案 1 :(得分:0)

1 Create a layout file named layout_map having a fragment to render map

<?xml version="1.0" encoding="utf-8"?>
<!--
     <com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mapView" />
-->
<!--
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >

   <fragment
      android:id="@+id/map"
      android:name="com.google.android.gms.maps.MapFragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

</RelativeLayout> 
-->

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

2. Generate the mapkey and add it to in the manifest file

    <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBYc4fMCweLC4w77_hRctOktAt2bqLmnyg" />
3. Added metatdata tag for googleplay service

  <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

4. Add the map,internet,corselocation permissions

   <uses-permission android:name="com.smartdurg.fragment.map.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

5. Create an activity named as MapActivtivity

package com.smartcity.bilaspur;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.maps.model.LatLng;
public class MapActivity extends Activity  {

    String latitude,longitude,address,city,country;
    LatLng defaultLatLng;
    Context context;
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.map_activity);
          try {
              context = this;
        Bundle extras = getIntent().getExtras();
        if (extras != null)
        {   
            latitude = extras.getString("lat");
            longitude = extras.getString("lng");
            Log.e("MAP", "latitude? "+latitude);
            Log.e("MAP", "longitude?"+longitude);
        }   
        defaultLatLng = new LatLng(Double.valueOf(latitude), Double.valueOf(longitude));

         Geocoder geocoder;
             List<Address> addresses ;
             geocoder = new Geocoder(this, Locale.getDefault());

            addresses = geocoder.getFromLocation(Double.valueOf(latitude), Double.valueOf(longitude), 1);

            Log.v("addresses",">>>>>>>>>>>>>>>>"+addresses);
            if (addresses.size()<=0)
            {
                Toast.makeText(this, "InValid Location",2).show();
                finish();
            }
            else
            {
              address = addresses.get(0).getAddressLine(0);
              city = addresses.get(0).getAddressLine(1);
              country = addresses.get(0).getAddressLine(2);
             String geoUri = "http://maps.google.com/maps?q=loc:" + latitude + "," + longitude + " (" + "GOT IT" + ")";

            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(geoUri));
            context.startActivity(intent);
            }
        } 

          catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

In this case I have found the latitude & longitude form the webservice, you can find a code to get exact location from below link also with current latitude & longitude.
http://stackoverflow.com/questions/17519198/how-to-get-the-current-location-latitude-and-longitude-in-android