2013-04-04 18 views
2

使用corona SDK,我希望每次用戶點擊homebutton時都會重啓我的應用程序。 如果他/她收到電話呼叫,拉下下拉菜單等,我希望應用程序繼續其當前狀態。Corona SDK:只有當用戶按下「home」時才能重新啓動應用程序

有什麼建議嗎?

謝謝, /S

+0

我想你的意思是iPhone? – 2013-04-04 17:04:04

+0

這兩個android(那些homebutton ..)和iPhone。謝謝 – Eyeball 2013-04-04 17:05:20

回答

4

我是怎麼解決的!

suspendTime = 0 
resumeTime = 0 

function onSystemEvent(event) 
    if event.type == "applicationSuspend" then 
     suspendTime = os.time() 
     print(suspendTime) 
    elseif event.type == "applicationResume" then 
     resumeTime = os.time() 
     print(resumeTime) 
     print("deltaTime: "..resumeTime - suspendTime) 
      if(resumeTime - suspendTime > 30) then 
      local sceneName = storyboard.getCurrentSceneName() 
      if(sceneName ~= "levels.splash") then 
       print(sceneName) 
       print(resumeTime) 
         storyboard.gotoScene("levels.splash") 
      end 
     end 
    end 

end 
Runtime:addEventListener("system", onSystemEvent) 
+0

不要忘記suspendTime = 0和resumeTime = 0,找到delta後)順便說一句,os.time()返回小時嗎?當您在23:59暫停應用並在00:01再次打開時,它會做什麼? – 2013-04-04 19:23:47

+0

我相信os:time是unix的時間戳。 http://en.wikipedia.org/wiki/Unix_time – Eyeball 2013-04-05 07:10:23

+0

所以,我想它不會重演分鐘。無論如何,你可以通過嘗試或製造這種價值來確定。如果它可以很好地工作,不需要做任何事情.. – 2013-04-05 07:57:32

1
function onKeyEvent(event) 
    local keyname = event.keyName; 
    if (event.phase == "up" and (event.keyName=="back" or event.keyName=="menu" or event.keyName == "home")) then 
     if keyname == "menu" then 
     os.exit() 
    end 
    end 
    return false 
end 

Runtime:addEventListener("key", onKeyEvent) 

這人會爲Android工作。 我檢查了http://docs.coronalabs.com/api/event/key/keyName.html,所以在iPhone上沒有辦法做到這一點。

但你可以試試這個:獲取應用程序暫停的時間。並將其保存到文件目錄。然後,當應用程序恢復時,檢查兩次會話之間的時間。如果超過半小時,重新開始所有的事情。

+0

真棒,我會給它一個鏡頭!謝謝! – Eyeball 2013-04-04 17:49:58

+0

不,這不適用於android上的home按鈕,正如您在鏈接中看到的那樣,它會顯示:'homePage' \t'導航到主頁「按鈕(這不是Android上的」Home「按鈕)。眼球答案像魅力一樣起作用! – Arash 2015-11-17 10:26:20

相關問題