将 GPS 接收器添加到 java 代码?
Posted
技术标签:
【中文标题】将 GPS 接收器添加到 java 代码?【英文标题】:Adding a GPS receiver to java code? 【发布时间】:2016-01-30 15:32:04 【问题描述】:我正在尝试构建一个基于位置的应用程序,并在下面输入了以下代码,但是当我运行该应用程序时,它会将位置移动到我的手机所在的位置,并调出许多位于同一位置的其他 GPS 手机。我需要能够看到我的位置。
import android.content.Context;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import android.location.Location;
import android.widget.Toast;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends Activity
private GoogleMap map;
private static final LatLng LONDON =
new LatLng(+51.50000, -0.11670);
private LocationManager lm;
private LocationListener locationListener;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
map = ((MapFragment) getFragmentManager()
.findFragmentById(R.id.map))
.getMap();
map.moveCamera(CameraUpdateFactory
.newLatLngZoom(LONDON, 15));
map.addMarker(new MarkerOptions().position(LONDON));
lm = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
@Override
protected void onResume()
super.onResume();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
@Override
protected void onPause()
super.onPause();
lm.removeUpdates(locationListener);
private class MyLocationListener implements LocationListener
@Override
public void onLocationChanged(Location location)
if (location!= null)
Toast.makeText(getBaseContext(),
"Location changed:" + location.toString(),
Toast.LENGTH_LONG).show();
LatLng latLng = new
LatLng(location.getLatitude(),
location.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));
map.addMarker(new MarkerOptions().position(latLng));
@Override
public void onProviderDisabled(String provider)
@Override
public void onProviderEnabled(String provider)
// TODO Auto-generated method stub
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
【问题讨论】:
【参考方案1】:您无法获取周围其他手机的位置。您只需从手机的 GPS 芯片接收修复信息。
发生的情况是,在收到的每个位置上,您都添加了一个新标记,但您没有清除之前添加的标记。
【讨论】:
【参考方案2】:在添加新标记之前,您需要删除旧标记。添加标记时,您可以简单地将其实例化为如下变量:
Marker marker = map.addMarker(..);
然后像这样删除它:
marker.remove();
*编辑
请注意,智能手机中的 GPS 传感器确实不准确,因此从这种传感器接收到的位置会在您的实际位置附近“跳跃”。它可能离您真的很远(数百米),这取决于是否、卫星位置和您的传感器校准。您几乎没有机会以低于 5 米的精度获得位置。
【讨论】:
以上是关于将 GPS 接收器添加到 java 代码?的主要内容,如果未能解决你的问题,请参考以下文章
将 Gps 作为后台服务运行并将接收到的当前位置数据与 Sqlite 中的值进行比较?