setTestProviderLocation()不会触发调用onLocationChanged的() [英] setTestProviderLocation() does not trigger calling of onLocationChanged()

查看:2538
本文介绍了setTestProviderLocation()不会触发调用onLocationChanged的()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获得code此位工作:

测试GPS Android中

现在的问题是,当我运行测试,onLocationChanged()不会被调用:

 公共类LocationTest0扩展AndroidTestCase实现LocationListener的{
私人的位置接到= NULL;
公共无效testExample(){
    LocationManager LM =(LocationManager)this.getContext()getSystemService(Context.LOCATION_SERVICE)。
    字符串testProvider =测试;

    如果(空== lm.getProvider(testProvider)){
        lm.addTestProvider(testProvider,假的,假的,假的,假的,假的,假的,假的,Crit​​eria.POWER_LOW,Crit​​eria.ACCURACY_FINE);
    }

    lm.setTestProviderEnabled(testProvider,真正的);
    lm.requestLocationUpdates(testProvider,0,0,这一点);
    lm.setTestProviderStatus(testProvider,LocationProvider.AVAILABLE,空,System.currentTimeMillis的());

    位置位置=新的位置(testProvider);
    location.setLatitude(1.0);
    location.setLongitude(2.0);
    location.setTime(System.currentTimeMillis的());
    lm.setTestProviderLocation(testProvider,位置);

    Assert.assertFalse(接收的位置是空,收到== NULL);

    lm.removeTestProvider(testProvider);
}
@覆盖
公共无效onLocationChanged(位置定位){
    收到=位置;
    Log.d(LocationTest0,onLocationChanged叫做);
    //不会被调用
}
 

解决方案

这是为我工作。

  locationManager.addTestProvider(mocLocationProvider,假的,假的,
                    假的,假的,真正的,真实的,真实的,0,5);
locationManager.setTestProviderEnabled(mocLocationProvider,真正的);
 

 位置mockLocation =新的位置(mocLocationProvider); //字符串
mockLocation.setLatitude(location.getLatitude()); // 双
mockLocation.setLongitude(location.getLongitude());
mockLocation.setAltitude(location.getAltitude());
mockLocation.setTime(System.currentTimeMillis的());
locationManager.setTestProviderLocation(mocLocationProvider,mockLocation);
 

 <使用-权限的Andr​​oid:名称=android.permission.ACCESS_MOCK_LOCATION>
 

另外,在Android手机上设置确保您有允许模拟位置复选框勾选

I'm trying to get this bit of code to work:

Testing GPS in Android

The problem is, when I run the test, onLocationChanged() is never called:

public class LocationTest0 extends AndroidTestCase implements LocationListener {
private Location received = null;
public void testExample() {
    LocationManager lm = (LocationManager)this.getContext().getSystemService(Context.LOCATION_SERVICE);
    String testProvider = "Test";

    if (null == lm.getProvider(testProvider)){
        lm.addTestProvider(testProvider, false, false, false, false, false, false, false, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);
    }

    lm.setTestProviderEnabled(testProvider, true);
    lm.requestLocationUpdates(testProvider, 0, 0, this);
    lm.setTestProviderStatus(testProvider, LocationProvider.AVAILABLE, null, System.currentTimeMillis());

    Location location = new Location(testProvider);
    location.setLatitude(1.0);
    location.setLongitude(2.0);
    location.setTime(System.currentTimeMillis());
    lm.setTestProviderLocation(testProvider, location);

    Assert.assertFalse("Received Location is null", received == null );

    lm.removeTestProvider(testProvider);
}
@Override
public void onLocationChanged(Location location) {
    received = location;
    Log.d("LocationTest0", "onLocationChanged CALLED");
    // Never gets called
}

解决方案

This is what worked for me

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); 

.

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

Also in the android phone settings make sure you have the "Allow mock locations" checkbox ticked

这篇关于setTestProviderLocation()不会触发调用onLocationChanged的()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆