2014-07-10 37 views
0

我有一個通知是通過AlarmManager觸發的,通知還發出聲音 。ACTION_SCREEN_OFF後臺服務觸發器

顯然,當應用程序處於後臺時可能會觸發警報,並且我想讓用戶在按下鎖定按鈕時取消聲音 - 即收聽ACTION_SCREEN_OFF

因此,我想知道是否有可能開始服務,並聽取ACTION_SCREEN_OFF

我看過Listening for ACTION_SCREEN_OFF,但是隻有在前臺使用BroadCastReceiver纔有解決方案。對?

+0

不,接收器應該在後臺工作。但我相信您需要爲清單中的警報活動添加一個意圖過濾器。我已經爲USB_DEVICE_ATTACHED這樣做了,例如,在過濾後連接設備時啓動應用程序。 –

回答

0

例如,如果您正在嘗試執行ACTION_SCREEN_OFF,那麼您將在您的活動中定義您的廣播接收器,例如啓動鬧鐘。

public class SomeListener extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     //Turn off sounds 
    } 
} 

然後在清單中,在使用偵聽器的活動中提供類似這樣的東西。

<intent-filter> 
    <action android:name="android.hardware.usb.action.ACTION_SCREEN_OFF" /> 
</intent-filter> 
<meta-data android:name="android.hardware.usb.action.ACTION_SCREEN_OFF" 
         android:resource="@xml/my_filter" /> 

其中額外的my_filter類可以提供額外的元數據。在這種情況下,它是針對設備的串行或UUID的檢查,因此不能在所有USB連接上啓動。但你應該可以做類似的事情。

當動作發生時,這應該激發應用程序中的偵聽器,正如我所瞭解的那樣。此功能適用於過去在我的USB連接上啓動應用程序。即使沒有申請開放。

+0

我不明白應該放置意圖過濾器的位置。在活動或標記中,我是否都會自動完成顯示它? – Rabiees

+0

它們被放置在Activity標籤中。 –

+0

不幸的是,這不工作不幸 – Rabiees