gpt4 book ai didi

android:如何用模拟(假)坐标修复gps?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:27 25 4
gpt4 key购买 nike

我正在尝试在 GPS 信号不可用时以编程方式修复 GPS。我想这样做是为了向谷歌地图等其他应用程序提供模拟坐标。我尝试使用 GPS_PROVIDER 和 NETWORK_PROVIDER 但只有使用后者我才能获得对谷歌地图有效的新位置。但这仅适用于第一个 tima,如果我想重新修复更多模拟位置,谷歌地图看不到任何变化......为什么?我必须为我想做的事做服务吗?

public void setLocation(double latitude, double longitude) {   


//mocLocationProvider = LocationManager.GPS_PROVIDER;
mocLocationProvider = LocationManager.NETWORK_PROVIDER;
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.clearTestProviderEnabled(mocLocationProvider);
lm.requestLocationUpdates(mocLocationProvider,0,0,new llistener());
lm.addTestProvider(mocLocationProvider, false, false, false, false, false, false, false, 0, 10);
lm.setTestProviderEnabled(mocLocationProvider, true);
Location loc = new Location(mocLocationProvider);
loc.setTime(System.currentTimeMillis());
loc.setLatitude(latitude);
loc.setLongitude(longitude);
loc.setAccuracy(10);
lm.setTestProviderStatus(mocLocationProvider, LocationProvider.AVAILABLE,null, System.currentTimeMillis());
lm.setTestProviderLocation(mocLocationProvider, loc);

}

和位置监听器

public class llistener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
}

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

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

@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}

}

谢谢

最佳答案

模拟位置需要什么:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">

同样在 android 手机设置中,确保勾选了“允许模拟位置”复选框

locationManager.addTestProvider(mocLocationProvider, false, false,
false, false, true, true, true, 0, 5);
locationManager.setTestProviderEnabled(mocLocationProvider, true);

.现在每当你想发送一个位置时,调用这个代码:

Location mockLocation = new Location(mocLocationProvider); // a string
mockLocation.setLatitude(location.getLatitude()); // double
mockLocation.setLongitude(location.getLongitude());
mockLocation.setAltitude(location.getAltitude());
mockLocation.setTime(System.currentTimeMillis());
locationManager.setTestProviderLocation( mocLocationProvider, mockLocation);

.

But this works only the first time

因为你调用过一次。

I have to do a service for what I want to do

你可以这样做,即使是 AsyncTask 也可以

do this or not: lm.requestLocationUpdates()

是的,您必须使用 mocLocationProvider

I already call more times the method setLocation(latitude,longitude) but it works(location updateding) only first time for google maps

没有名为setLocation() 的方法,请使用setTestLocation()

What actually I have to do in asynckTask

您可以使用 Thread、TimerTask 或任何您喜欢的东西。这个想法是每秒将位置注入(inject)框架。

关于android:如何用模拟(假)坐标修复gps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044208/

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