← Back to team overview

touch-packages team mailing list archive

[Bug 1481240] Re: Can't get correct location information before use other GPS apps

 

If I have a proper precise (GPS based) location (lat&long) in a scope
from SearchMetadata.location().latitude()|longitude(), and then disable
Location indicator > Location detection OR GPS, then reenable it and
refresh the scope, I never get a precise location back. I am stuck with
geo IP derived location.

To demo this, I wrote a simple scope that merely gets the lat and long
and logs it, or a message if ! has_location().

Here's the relevant code:
 
void Query::run(us::SearchReplyProxy const& reply)
{
    if (!metadata_.has_location())
    {   
        qDebug() << "LOCTEST: no location: " + QDateTime::currentDateTime().toString();
        return;
    }   
    try{
        auto lat = metadata_.location().latitude();
        auto lng = metadata_.location().longitude();
        qDebug() << "LOCTEST: lat long: " + QString::number(lat) + " " + QString::number(lng) + " " + QDateTime::currentDateTime().toString();
    } catch(unity::scopes::NotFoundException &e) {
        qWarning() << "==== Warning: Could not get location.";
    }   
}

Query::Query(const us::CannedQuery &query, const us::SearchMetadata & metadata, const QVariant accessToken, QString const& cacheDir_) :
    SearchQueryBase(query, metadata),
    metadata_(metadata),
    cannedQuery(query),
    query_(query.query_string()),
    accessToken_(accessToken),
    cacheDir_(cacheDir_)
{

}

Here are the results from scope-registry log grepped with LOCTEST.
COMMENTs and ACTIONs added:

COMMENT: starting lat/long are precise (GPS)

"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:32:46 2015"
"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:32:48 2015"

ACTION: disable indicator Location > Location detection

"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:33:24 2015"
"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:33:34 2015"
"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:33:36 2015"
"LOCTEST: lat long: 42.4062 -71.6038 Mon Nov 30 23:33:37 2015"

COMMENT: Why am I still seeing a precise location? Normally for me geo
IP based location is the next town over.

ACTION restart unity8-dash

"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:33:59 2015"

COMMENT: That ^ is the geo IP based vague location, as expected.

"LOCTEST: no location: Mon Nov 30 23:34:07 2015"

COMMENT: why do I get no location?

"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:34:24 2015"

ACTION: indicator Location > Location detection enabled

"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:35:58 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:03 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:10 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:13 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:16 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:54 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:36:56 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:02 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:04 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:11 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:15 2015"

COMMENT: Several minutes have passed. Why do I still see vague geo IP
based location? I expected GPS precision.

ACTION: restart unity8-dash

"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:40 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:37:53 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:38:01 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:38:03 2015"
"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:38:05 2015"

COMMENT: still geo ip based.

ACTION: Wait a while

"LOCTEST: lat long: 42.5244 -71.7657 Mon Nov 30 23:49:18 2015"

COMMENT: still geo IP based. So, all location indicator settings are on,
location is enabled in scope, but still: geo IP.

I don't know whether this is a problem with the scope framework using a
stale location in this case or if it is an underlying problem with the
location service not understanding that it was re enabled, getting a new
location, and refreshing unity...

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to unity-scopes-api in
Ubuntu.
https://bugs.launchpad.net/bugs/1481240

Title:
  Can't get correct location information before use other GPS apps

Status in NearBy Scope:
  New
Status in unity-scopes-api package in Ubuntu:
  Confirmed

Bug description:
  My location should be Tainan, Taiwan.
  If I did not run another GPS apps before, NearBy shows my location is in the center of Taiwan.

  system-image-cli -i
  current build number: 76
  device name: arale
  channel: ubuntu-touch/rc-proposed/meizu.en
  last update: 2015-08-04 15:20:42
  version version: 76
  version ubuntu: 20150804
  version device: 20150709-8965e37
  version custom: 20150716-819-8-42

To manage notifications about this bug go to:
https://bugs.launchpad.net/nearby-scope/+bug/1481240/+subscriptions