如何使用手机塔find用户位置?

如何在Android中使用单元格塔来查找用户位置,或者如何根据Android中的Cell ID获取单元格位置?

Related of "如何使用手机塔find用户位置?"

class MyLocationActivity extends MapActivity { MapController mapController; MyPositionOverlay positionOverlay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewById(R.id.mapview); mapController = mapView.getController(); // Configure the map display options mapView.setSatellite(true); mapView.setStreetView(true); mapView.displayZoomControls(false); mapController.setZoom(17); // Add the MyPositionOverlay positionOverlay = new MyPositionOverlay(); List<Overlay> overlays = mapView.getOverlays(); overlays.add(positionOverlay); LocationManager locationmanager; String context=Context.LOCATION_SERVICE; locationmanager=(LocationManager) getSystemService(context); String provider=LocationManager.NETWORK_PROVIDER; Location location= locationmanager.getLastKnownLocation(provider); updateWithNewLocation(location); } private void updateWithNewLocation(Location location) { if(location!=null){ positionOverlay.setLocation(location); Double lat=location.getLatitude()*1E6; Double lon=location.getLongitude()*1E6; GeoPoint point = new GeoPoint(lat.intValue(),lon.intValue()); mapController.animateTo(point); } else{ } } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } } 

使用LocationManager注册位置更新。 您可以通过指定一个提供者来指明您想要的粒度级别。 对于手机信号塔更新,请使用NETWORK_PROVIDER 。

MyPositionOverlay也在这里…..

 public class MyPositionOverlay extends Overlay { private final int mRadius = 5; Location location; public Location getLocation() { return location; } public void setLocation(Location location) { this.location = location; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { Projection projection = mapView.getProjection(); if (shadow == false) { // Get the current location Double latitude = location.getLatitude()*1E6; Double longitude = location.getLongitude()*1E6; GeoPoint geoPoint; geoPoint = new GeoPoint(latitude.intValue(),longitude.intValue()); // Convert the location to screen pixels Point point = new Point(); projection.toPixels(geoPoint, point); RectF oval = new RectF(point.x - mRadius, point.y - mRadius, point.x + mRadius, point.y + mRadius); // Setup the paint Paint paint = new Paint(); paint.setARGB(250, 255, 0, 0); paint.setAntiAlias(true); paint.setFakeBoldText(true); Paint backPaint = new Paint(); backPaint.setARGB(175, 50, 50, 50); backPaint.setAntiAlias(true); RectF backRect = new RectF(point.x + 2 + mRadius, point.y - 3*mRadius, point.x + 65, point.y + mRadius); // Draw the marker canvas.drawOval(oval, paint); //canvas.drawLines(pts, paint); canvas.drawRoundRect(backRect, 5, 5, backPaint); canvas.drawText("I am here", point.x + 2*mRadius, point.y, paint); } super.draw(canvas, mapView, shadow); } } 

你可以findLAC(位置区号)从手机塔通过API ericsson

https://labs.ericsson.com/apis/mobile-location/documentation