QGeoPositionInfoSourceAndroidGms::QGeoPositionInfoSourceAndroidGms(QObject * parent) :
	QGeoPositionInfoSource(parent),
	m_error(NoError),
	regularProvider_(NULL),
	updatesRunning_(false),
	activeProvidersDisabled_(false)
{
	qRegisterMetaType<QGeoPositionInfo>();

	providersListener_ = new QLocationManagerProvidersListener(this);
	regularProvider_ = new QAndroidGmsLocationProvider(this);
	setPreferredPositioningMethods(NonSatellitePositioningMethods);

	if (providersListener_)
	{
		QObject::connect(providersListener_, &QLocationManagerProvidersListener::providersChange,
							this, &QGeoPositionInfoSourceAndroidGms::onProvidersChange);

		onProvidersChange(providersListener_->isActiveProvidersEnabled());
	}

	if (regularProvider_)
	{
		QObject::connect(regularProvider_, &QAndroidGmsLocationProvider::locationRecieved,
						  this, &QGeoPositionInfoSourceAndroidGms::processRegularPositionUpdate);

		QObject::connect(regularProvider_, &QAndroidGmsLocationProvider::statusChanged,
						  this, &QGeoPositionInfoSourceAndroidGms::onStatusChanged);
	}
}
QGeoPositionInfoSourceAndroid::QGeoPositionInfoSourceAndroid(QObject *parent) :
    QGeoPositionInfoSource(parent), updatesRunning(false), m_error(NoError)
{
    qRegisterMetaType< QGeoPositionInfo >();
    androidClassKeyForUpdate = AndroidPositioning::registerPositionInfoSource(this);
    androidClassKeyForSingleRequest = AndroidPositioning::registerPositionInfoSource(this);

    //qDebug() << "androidClassKey: "  << androidClassKeyForUpdate << androidClassKeyForSingleRequest;
    //by default use all methods
    setPreferredPositioningMethods(AllPositioningMethods);

    m_requestTimer.setSingleShot(true);
    QObject::connect(&m_requestTimer, SIGNAL(timeout()), this, SLOT(requestTimeout()));
}
void QGeoPositionInfoSourceBb::setProvider(const QString &provider)
{
    setPreferredPositioningMethods(positioningMethodsToProviderMap.key(provider));
}