2010-06-12 60 views
1

我正在研究每秒發出一聲蜂鳴聲的應用程序。當我點擊主頁按鈕時,我想讓它關閉程序並停止發出嗶嗶聲。現在它關閉了程序,但仍然發出嘟嘟聲。Android停止計數器和銷燬媒體播放器

我在做什麼錯?

 if ((keyCode == KeyEvent.KEYCODE_HOME)) { 
     isdone = true; 
     mp.release(); 
     counter.cancel(); 
     finish(); 
    } 

回答

1

當我打的主頁按鈕,我希望它 關閉程序並停止蜂鳴聲。

您無法攔截應用程序代碼中的HOME按鈕 - 抱歉!

0

您不能直接攔截HOME按鈕,儘管解決方法是讓您的應用程序開始活動爲HOME意向/默認家庭活動;在你的XML清單,這將是這樣的:

<intent-filter> 
    <action android:name="android.intent.action.MAIN"/> 
    <category android:name="android.intent.category.LAUNCHER"/> 
    <category android:name="android.intent.category.HOME"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 

因此,當用戶按下主頁按鈕,你會引導用戶到你的應用程序的啓動活動,從這裏你可以他重定向到任何其他先前的活動,即通過預先保存用戶的狀態。 在上面提到的活動中,如果發出嘟嘟聲,應將停止命令放在onPause或onWindowFocusChanged中。

上述方法僅在某些情況下才有意義,並取決於您的應用程序邏輯/業務案例和您要部署的環境。

我們在應用程序中使用這種方法(處理home按鈕),我們的應用程序將始終與設備捆綁在一起並分發。所以我們完全控制了設備設置。當您將自己的活動設置爲默認家庭活動時,用戶最初將獲得一個選項屏幕,其中包含哪個活動應該處理家庭意圖(默認的Android家庭或您的應用活動)。然後用戶可以選擇,也可以選中一個複選框,以便在未來再次使用此活動作爲默認活動。

對於公共市場上的一般應用程序,這可能不是最好的方式,因爲它不會很麻煩,也不是很好的屏幕流/用戶體驗。 對於您完全控制的應用程序,這可能是一個合適的解決方法。

如果你確實想捕捉HOME按鈕,你需要修改android操作系統,它在android.policy.jar中的PhoneWindowManager.java類中。 但是,如果您完全控制設備,並且將設備捆綁到設備上,或者它是將設備交付給用戶並控制您部署哪個ROM的內部應用程序,這也是唯一有意義的。

還有約上的主頁按鈕的進一步聯繫了有益的探討: http://www.anddev.org/home_menu_button-t10232.html

0

是不是你活動的onPause()方法稱爲當你點擊home鍵?

你可以殺死那裏的櫃檯。不要自己殺死這個活動,系統會在適當的時候爲你做這件事。