gpt4 book ai didi

android - android中的模拟位置

转载 作者:太空狗 更新时间:2023-10-29 13:42:50 25 4
gpt4 key购买 nike

我正在使用以下内容来模拟我在 Android 中的位置。

public class GPSwork extends Activity implements LocationListener{
LocationManager locationManager;
String mocLocationProvider;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mocLocationProvider = LocationManager.GPS_PROVIDER;
setLocation(28.574853,78.063201);
}

public void setLocation(double latitude, double longitude) {
locationManager.addTestProvider(mocLocationProvider, false, true, false, false, false, false, false, 0, 5);
locationManager.setTestProviderEnabled(mocLocationProvider, true);
locationManager.requestLocationUpdates(mocLocationProvider, 0, 0, this);
Location loc = new Location(mocLocationProvider);
loc.setTime(System.currentTimeMillis());
loc.setLatitude(latitude);
loc.setLongitude(longitude);
locationManager.setTestProviderLocation(mocLocationProvider, loc);
}

public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}

public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}

public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}

但它不起作用。我想在真实设备中看到它并且气泡在该位置闪烁,但我什么也没得到。请更正我的代码,并帮助我。我使用了权限。

我想构建一个模拟位置欺骗的应用程序。实际上,当我们打开谷歌地图时,它会显示我们当前的位置,并在我们的位置闪烁蓝色。类似地,如果我更改了坐标,即纬度和纬度,它必须显示我在蓝色闪烁的那个位置,

![替代文字][1]这是屏幕短路..

我的 XML 罚款是

<?xml version="1.0" encoding="utf-8"?>

<com.google.android.maps.MapView 
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0Sy8vgJlQkFxcisUAkrxu3xN33dqFgBetCg4jxg"
/>

最佳答案

这是使用谷歌地图的应用程序的基本模式:

public class MapsActivity extends MapActivity 
{

MapView mapView;
MapController mc;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mapView = (MapView)findViewById(R.id.mapView);
//zoom controlls
mc = mapView.getController();
mc.setZoom(12);
setContentView(R.layout.main);
}

@Override
protected boolean isRouteDisplayed() {
return false;
}
}

在您的 AndroidManifest.xml 文件中添加:

 <uses-library android:name="com.google.android.maps" />

和:

<uses-permission android:name="android.permission.INTERNET" />

要显示您的特定位置,请将此添加到 onCreate 方法:

 String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);

p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));

mc.animateTo(p);
mc.setZoom(17);
mapView.invalidate();

最后,您需要使用 map 叠加层设置您的标记。将以下类添加到您的 MapsActivity 类:

class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);

//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);

//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.my_bubble);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}

在这种绘制方法中,如果需要,您可以添加一些标记动画。现在您必须将叠加层添加到您的 map 中:

//---Add a location marker---
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);

mapView.invalidate();

这是一个快速概览。您需要一个 google api key 才能使用 google maps api。关于 google maps api 的详细教程可以在这里找到,Using Google Maps in Android

关于android - android中的模拟位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com