Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

Best practice GPS location on application suspend and resume
Started by yourxlnc Feb 04 2015 05:52 AM

No replies to this topic
[TOPIC CONTROLS]
This topic has been archived. This means that you cannot reply to this topic.
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

yourxlnc

[GLOBAL: userInfoPane.html]
yourxlnc
  • Observer

  • 15 posts
  • Corona SDK

Hi,

In simulator application starts like this

function scene:show( event )
	local sceneGroup = self.view
	local phase = event.phase
	
	if phase == "will" then
		-- Called when the scene is still off screen and is about to move on screen
	elseif phase == "did" then
		-- Called when the scene is now on screen
		-- 
		-- INSERT code here to make the scene come alive
		-- e.g. start timers, begin animation, play audio, etc.

		-- resume network call timer
		trtimer = 65
		delayTimer = timer.performWithDelay( 1000, listener, trtimer )
			
		-- Activate location listener
		Runtime:addEventListener( "location", locationHandler )
		Runtime:addEventListener( "system", onSystemEvent )
	end
end

Location handler is like this

local locationHandler = function( event )
    print("GPS Running") in simulator print once
    -- Check for error (user may have turned off location services)
    if ( event.errorCode ) then
        print( "Location error: " .. tostring( event.errorMessage ) )
    else
        local latitudeText = string.format( '%.4f', event.latitude )
        latitude = latitudeText

        local longitudeText = string.format( '%.4f', event.longitude )
        longitude = longitudeText

        local altitudeText = string.format( '%.3f', event.altitude )
        altitude = altitudeText

        local accuracyText = string.format( '%.3f', event.accuracy )
        accuracy = accuracyText

        local speedText = string.format( '%.3f', event.speed )
        speed = speedText

        local directionText = string.format( '%.3f', event.direction )
        direction = directionText

        -- Note that 'event.time' is a Unix-style timestamp, expressed in seconds since Jan. 1, 1970
        local timeText = string.format( '%.0f', event.time )
        time = timeText
    end
end

and onSystemEvents are 

local function onSystemEvent( event )
   if event.type == "applicationStart" then
        print("start")
    elseif event.type == "applicationExit" then
        print("exit")
    elseif event.type == "applicationSuspend" then
        print("suspend")
        -- want to get GPS handler while app is still in background
        -- want to run my timer function here. timer.resume() is giving warning not paused
    elseif event.type == "applicationResume" then
        print("resume")
    end
end

my timer listener function is 

local function listener( event )
	trtimer = trtimer - 1
    print( "listener called"..trtimer )
    if trtimer == 0 then
        -- now reset timer and call it again
	trtimer = 65
	delayTimer = timer.performWithDelay( 1000, listener, trtimer )
    end
end

Problem is when I run the simulator, It only prints in Shell 

>>> GPS Running

>>> listener called 64

>>> listener called 63

>>> listener called 62

>>> listener called 61

>>> listener called 60

>>> listener called 59

>>> suspend

>>> WARNING: timer.resume( timerId ) ignored b/c timerId was not paused.

 

I want it like this

 

>>> GPS Running

>>> listener called 64

>>> GPS Running

>>> listener called 63

>>> GPS Running

>>> listener called 62

>>> listener called 61

>>> listener called 60

>>> listener called 59

>>> suspend

>>> listener called 58

>>> listener called 57

>>> listener called 56

>>> listener called 55

>>> listener called 54

>>> listener called 53

>>> listener called 52

>>> listener called 51

>>> resume

>>> listener called 50

>>> listener called 49

>>> listener called 48

>>> listener called 47

 

 

I understand GOS running will not be print in simulator but what about the timer why it is giving me error even if i use timer.resume(delimiter) under application suspend?

 

Thanks for help.

Kind regards

Ali

 

 




[topic_controls]
[/topic_controls]