2011-04-11 67 views
0

我剛剛開始關注Android開發,並且正在創建一個小應用程序,它將「收聽」意圖映射到媒體播放器功放(最近發佈的api)。 這個應用程序沒有gui它是一個聲音控制和功率放大器之間的粘合劑。Android - 語音控制 - 媒體意圖

我可以捕捉意圖android.media.action.MEDIA_PLAY_FROM_SEARCH和控制功率放大器,但我的問題是,爲了捕捉android.media.action.MEDIA_PLAY_FROM_SEARCH我必須聲明我的應用程序作爲一項活動,所以當我使用語音控制發送意圖我的應用程序加載在屏幕上。我試圖將該應用程序聲明爲receiver \ service,但我無法讓它們捕獲該意圖。

應用程序如何運行隱藏但仍捕獲此意圖?

謝謝,Ger。

回答

0

如果我正確理解您的需求,您實際上不需要在您的應用中使用任何活動。只是一個擴展BroadcastReceiver並實現onRecieve(Context,Intent)方法的類。

然後在您的清單中,您可以將該接收器綁定到您想要偵聽的特定意圖。您的應用將在沒有UI的情況下啓動,入口點是您實施的BroadcastReceiver類。

清單條目看起來像:

<receiver android:name=".MyBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="com.android.music.metachanged" /> 
       <action android:name="com.amazon.mp3.metachanged" /> 
       <!-- <action android:name="com.amazon.mp3.playstatechanged" /> --> 
       <!-- <action android:name="com.android.music.playbackcomplete" />--> 
       <action android:name="com.android.music.playstatechanged" /> 
       <action android:name="com.htc.music.metachanged" /> 
       <!-- <action android:name="com.htc.music.playbackcomplete" />--> 
       <!-- <action android:name="com.htc.music.playstatechanged" /> --> 
       <action android:name="com.sec.android.app.music.metachanged" /> 
       <action android:name="com.nullsoft.winamp.metachanged" /> 
       <action android:name="com.nullsoft.winamp.playstatechanged" /> 
      </intent-filter> 
    </receiver> 
+0

我試圖用我的活動 ' \t <接收器的Android使用了相同的意向來實現reciever:NAME =」 MusicVoiceControl_BkGrd 「> \t <意圖濾波器> \t <操作機器人:名稱=」 android.media.action.MEDIA_PLAY_FROM_SEARCH」 /> \t <類別機器人:名稱= 「android.intent.category.DEFAULT」/> \t \t ' 但是當我使用語音控制它無法找到安裝的應用程序,我想知道將語音控制只發送了「聽」的意圖活動!? – user425678 2011-04-11 20:05:28

+0

我認爲你可能是對的,這個意圖沒有被廣播,但只用於開始 - 實際的概念。 http://developer.android.com/reference/android/content/BroadcastReceiver.html上的文檔暗示了兩者之間的區別。 – mmeyer 2011-04-11 20:45:09