如何利用手机基站寻找用户位置?

12

如何在Android中使用手机基站寻找用户位置,或者如何基于Cell ID获取基站位置?

4个回答

5
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;
    }
}

3
仅使用最后已知位置可能导致非常不准确的结果,需小心。 - Chris Stewart
这需要 GPS 吗? - Samitha Chathuranga
这是需要GPS吗?如果有任何解决方案,请提供不使用GPS获取位置的解决方案。谢谢。 - Ramesh Bhati
解决方案中使用基站信息在哪里? - Waqas Ahmed Ansari

3

2
并且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);
    }
}

解决方案与所提出的问题无关。 - Waqas Ahmed Ansari

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接