Problem with Position

In my app i have a problem i think with GPS signal and when i take GPS signal i receive icon error message.

I have in InputApp.mc this code:

using Toybox.Application;
using Toybox.Position;

class MyApp extends Application.AppBase {

var positionView;

function initialize() {
AppBase.initialize();
}

// onStart() is called on application start up
function onStart(state) {
Position.enableLocationEvents(Position.LOCATION_CONTINUOUS, method(:onPosition));
}

// onStop() is called when your application is exiting
function onStop(state) {
Position.enableLocationEvents(Position.LOCATION_DISABLE, method(:onPosition));
}

function onPosition(info) {
positionView.setPosition(info);

}

// Return the initial view of your application here
function getInitialView() {
return [new InputView(), new InputDelegate()];
}

}

and in InputView.mc this code:

class InputView extends WatchUi.View {

var posnInfo = null;

function initialize() {
View.initialize();

}


function callback3() {
count3 += 1;
WatchUi.requestUpdate();
}


function onUpdate(dc) {

dc.setColor(Graphics.COLOR_BLACK, Graphics.COLOR_WHITE);
dc.clear();

var stringt;
// Set background color
dc.setColor(Graphics.COLOR_BLACK, Graphics.COLOR_WHITE);
if( posnInfo != null ) {
//stringt = "speed = " + posnInfo.speed.toString();
//dc.drawText( (dc.getWidth() / 2), ((dc.getHeight() / 2) ), Graphics.FONT_SMALL, stringt, Graphics.TEXT_JUSTIFY_CENTER );

// with GPS active
if( Toybox has :ActivityRecording ) {
// Draw the instructions
if( ( session == null ) || ( session.isRecording() == false ) ) {
dc.setColor(Graphics.COLOR_RED, Graphics.COLOR_WHITE);
dc.drawText(dc.getWidth() / 2, dc.getHeight() / 2+20, Graphics.FONT_SMALL, "Press START to\nStart Recording", Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER);
}
else if( ( session != null ) && session.isRecording() ) {
var x = dc.getWidth() / 2;
var y = dc.getFontHeight(Graphics.FONT_XTINY);
dc.setColor(Graphics.COLOR_RED, Graphics.COLOR_WHITE);
dc.drawText(x, y+100, Graphics.FONT_SMALL, "Recording...", Graphics.TEXT_JUSTIFY_CENTER);
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_WHITE);
dc.drawText(dc.getWidth() / 2, dc.getHeight() / 2+20, Graphics.FONT_SMALL, "Press STOP again to\nStop Recording", Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER);
}
}
// tell the user this sample doesn't work
else {
dc.setColor(Graphics.COLOR_RED, Graphics.COLOR_WHITE);
dc.drawText(dc.getWidth() / 2, dc.getWidth() / 2, Graphics.FONT_MEDIUM, "This product doesn't\nhave FIT Support", Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER);
}

var string;

if( ( session != null ) && session.isRecording() ) {

timer3.start(method(:callback3), 1000, true);
if ( count3 < 10 ) {
// Do something
secondi= "0" + count3;
} else if ( count3 == 60 ) {
// Do something else
secondi = "00";
count3 = 0;
count2 += 1;
minuti = count2;
if (count2 < 10) {
minuti = "0"+ count2;
} else if (count2 ==60 ) {
secondi ="00";
minuti = "00";
count3 = 0;
count2 = 0;
count1 += 1;
ore = count1;
if (count1 <10) {
ore = "0"+ count1;
}
}

} else {
// If all else fails
secondi = count3;

}

} else {

}

dc.setColor(Graphics.COLOR_BLACK, Graphics.COLOR_WHITE);


dc.drawRectangle(1, 1, 198, 260);
dc.drawLine(1, 45, 198, 45);
dc.drawLine(1, 75, 198, 75);
dc.drawLine(100, 45, 100, 75);
dc.drawLine(1, 105, 198, 105);
dc.drawLine(100, 75, 100, 105);

string = ore + ":" + minuti + ":" + secondi;
dc.drawText(120, 7, Graphics.FONT_LARGE, string, Graphics.TEXT_JUSTIFY_CENTER);

crono.draw(dc);
heart.draw(dc);
altitud.draw(dc);
speed.draw(dc);
road.draw(dc);
aquila.draw(dc);

activityInfoX = Activity.getActivityInfo();
// if (activityInfo != null){
// elaTime = activityInfo.elapsedTime;
// hr = activityInfo.currentHeartRate;
// Kcal = activityInfo.calories;
// alt = activityInfo.altitude;
// trainingEffect = activityInfo.trainingEffect;
// acc = activityInfo.currentLocationAccuracy;
// asc = activityInfo.totalAscent;
// dsc = activityInfo.totalDescent;
// dist = activityInfo.elapsedDistance;
// speed = activityInfo.currentSpeed;
// avgSpeed = activityInfo.averageSpeed;
// Cadence = activityInfo.currentCadence;
// avgCadence = activityInfo.averageCadence;
// averageHeartRate = activityInfo.averageHeartRate;
// maxHeartRate = activityInfo.maxHeartRate;
// }

if (activityInfoX != null) {
infoalt = activityInfoX.altitude.format( "%.0d" );
speedva = activityInfoX.currentSpeed != null ? activityInfoX.currentSpeed * 3.6 : 0;
hrrate = activityInfoX.currentHeartRate != null ? activityInfoX.currentHeartRate : 0;
distance = activityInfoX.elapsedDistance != null ? activityInfoX.elapsedDistance : 0;
//if (speedva !=null && speedva>0) {
// return speedva.format("%0.1f");
//}
dc.drawText(60,53, Graphics.FONT_SMALL, hrrate, Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(30,53, Graphics.FONT_SMALL, "bpm: ", Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(153,53, Graphics.FONT_SMALL, infoalt, Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(123,53, Graphics.FONT_SMALL, "mt: ", Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(60,83, Graphics.FONT_SMALL, speedva.format("%0.1f"), Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(28,83, Graphics.FONT_SMALL, "km/h: ", Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(153,83, Graphics.FONT_SMALL, distance, Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(123,83, Graphics.FONT_SMALL, "Km: ", Graphics.TEXT_JUSTIFY_CENTER);
dc.drawText(100,230, Graphics.FONT_MEDIUM, "EAGLE", Graphics.TEXT_JUSTIFY_CENTER);
//dc.drawText(100,230, Graphics.FONT_SMALL, speedva.format("%0.1f"), Graphics.TEXT_JUSTIFY_CENTER);
}

}
else {
dc.drawText( (dc.getWidth() / 2), (dc.getHeight() / 2), Graphics.FONT_SMALL, "Wait GPS....", Graphics.TEXT_JUSTIFY_CENTER );
}

}

function setPosition(info) {
posnInfo = info;
WatchUi.requestUpdate();
}

}

i dont understand why appear icon error message...

  • You mean the "IQ!" image?  What's in the console window of he sim, or in ciq_log on the watch?

  • Yes IQ! image.

    I have Edge 520.

    Ciq_log in my Edge.

    for me the problem is in the InputApp.Mc.

    Becouse in the PositionSampleApp.mc sample there is this code:

    using Toybox.Application;
    using Toybox.Position;

    class PositionSampleApp extends Application.AppBase {

    var positionView;

    function initialize() {
    AppBase.initialize();
    }

    //! onStart() is called on application start up
    function onStart(state) {
    Position.enableLocationEvents(Position.LOCATION_CONTINUOUS, method(:onPosition));
    }

    //! onStop() is called when your application is exiting
    function onStop(state) {
    Position.enableLocationEvents(Position.LOCATION_DISABLE, method(:onPosition));
    }

    function onPosition(info) {
    positionView.setPosition(info);
    }

    //! Return the initial view of your application here
    function getInitialView() {
    positionView = new PositionSampleView();
    return [ positionView ];
    }

    }

    i dont found a solution for function GetInitialView() ...

  • and in my app i have:

    // Return the initial view of your application here
    function getInitialView() {
    return [new InputView(), new InputDelegate()];
    }

  • i have tried this solution but now work:

    // Return the initial view of your application here
    function getInitialView() {
    positionView = new InputView();
    return [new InputView(), new InputDelegate(), positionView ];
    }

  • i think to have solved using this solution:

    // Return the initial view of your application here
    function getInitialView() {
       positionView = new InputView();
       return [positionView, new InputDelegate()];
    }