2014-09-10 52 views
1

我正在進行一項正在進行的服務,該服務正在偵聽與收音機的USB接口連接。當找到這樣的連接時,該服務更新其通知以反映所述連接;當連接丟失(例如通過拔下事件或關閉無線電)時,該服務將更新其通知以反映所述分離連接。該服務在檢測到更改時也會寫入數據庫,因此其他應用程序可以使用該信息。Android:OTG存儲通知與收音機衝突c

此服務在沒有配置爲OTG存儲的USB端口上正常工作。但是,如果使用啓用了OTG存儲的USB端口,則會遇到一些問題,即服務通知無法正確更新,即使數據庫已正確寫入。我相信這是因爲我連接的無線電也起着OTG存儲設備的作用,所以一旦與上述無線電建立連接,就會發生OTG存儲通知,並且我可能會丟失我的通知上下文。此外,如果OTG存儲之前斷開與無線電的連接能夠正確安裝,則服務通知和數據庫會正確更新。例如,如果我當前連接到無線電並且OTG存儲已經掛載,如果我斷開所述無線電,OTG存儲將卸載,但是我的服務通知不會反映該改變,儘管我可以看到在數據庫變更正確發生。

我在Android 4.0.4運行這一點,所以我覺得這個問題是僅僅因爲我的代碼已被否決:

import android.app.Notification; 
import android.app.Notification.Builder; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 

Notification notification = new Notification(icon, contentTitle, time); 
notification.setLatestEventInfo(this, contentTitle, contentText, 
      contentIntent); 

notification.flags = Notification.FLAG_FOREGROUND_SERVICE 
      | Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT; 

notificationManager.notify(NOTIFICATION_ID, notification); 

但更新到Notification.Builder時,我仍然有問題:

Notification.Builder notiBuilder = 
      new Notification.Builder(this); 

notiBuilder.setSmallIcon(icon); 
notiBuilder.setContentTitle(contentTitle); 
notiBuilder.setContentText(contentText); 
notiBuilder.setContentIntent(contentIntent); 
notiBuilder.setPriority(2); 

notificationManager.notify(NOTIFICATION_ID, notiBuilder.getNotification()); 

所以我對這個問題可能會有些困惑。

請讓我知道你是否有任何想法或建議,或者如果有任何代碼我應該包括更有幫助。

回答

1

更新:而不是作爲實際通知的問題,這個問題竟然是在OTG存儲和我的服務監聽相同拔掉事件之間的競爭條件。爲了解決這個問題,我讓我的服務監聽OTG存儲狀態的變化。這似乎已經解決了這個問題,但無可否認,更多的是解決辦法比什麼的。