【发布时间】:2015-08-21 20:06:24
【问题描述】:
我正在尝试在 Android 中测试 GPS,所以我遵循了这个建议 Testing GPS in Android
我的MainActivity 班级是这样的:
public class MainActivity extends Activity implements LocationListener {
...
private LocationManager locationManager;
...
protected void onCreate(Bundle savedInstanceState) {
...
this.locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
...
}
...
protected void onResume() {
...
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
this.locationManager.requestLocationUpdates(Constants.GEOPOSITIONING_UPDATE_PERIOD,Constants.GEOPOSITIONING_UPDATE_DISTANCE, criteria, this, null);
...
}
...
public LocationManager getLocationManager() {
return this.locationManager;
}
...
}
我的测试课是这样的:
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
...
@UiThreadTest
public void test001() {
LocationManager locationManager = null;
try {
MainActivity mainActivity = getActivity();
locationManager = mainActivity.getLocationManager();
locationManager.addTestProvider("Test", false, false, false, false, true, true, true, 0, 5);
locationManager.setTestProviderEnabled("Test", true);
Location location = new Location("Test");
location.setLatitude(10.0);
location.setLongitude(20.0);
location.setAltitude(0);
location.setTime(System.currentTimeMillis());
location.setElapsedRealtimeNanos(System.currentTimeMillis());
location.setAccuracy(Criteria.ACCURACY_FINE);
locationManager.setTestProviderLocation("Test", location);
...
} finally {
if (locationManager != null) {
locationManager.removeTestProvider("Test");
}
}
}
...
}
但是MainActivity 的onLocationChanged 永远不会被调用,即使在调用setTestProviderLocation 之后也是如此。
PS:我在清单中使用<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 权限。
【问题讨论】:
标签: android gps locationmanager android-testing