2012-06-14 97 views
1

我在我的應用程序中啓動了設備上的默認媒體播放器並播放音頻文件(播客)中的2個區域。一個人在下載後從文件系統獲取文件,另一個從網站上的文件中獲取流。你可以在後臺啓動默認音樂播放器嗎?

這現在工作正常,問題是如果我打回家或回家嘗試並返回到我的應用程序啓動媒體播放器後,播放器關閉和播放停止。

有沒有辦法在後臺或作爲服務啓動它,以便當我回到應用程序時,音樂會繼續在播放器中播放。我希望它的功能就像從音樂播放器開始播放歌曲一樣。因此,用戶可以正常使用該設備,播放將繼續。

這是我的代碼,用於啓動流媒體音樂播放器。

private void playPodcast(Podcast podcast) { 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.parse(podcast.getContentLink()), "audio/*"); 
    startActivity(intent); 
} 

在此先感謝。


編輯!在收到以下建議後,我嘗試將其作爲服務啓動。我嘗試過這兩種方式。
這兩種方法都有這個清單項:

<service android:name=".DefaultMusicPlayerLaunchService"> 
</service> 

的第一次嘗試是讓服務類只是一個骨架,並與上面類似的方法啓動它。

DefaultMusicPlayerLaunchService V1:

public class DefaultMusicPlayerLaunchService extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     return START_STICKY; 
    } 
} 

playPodcast方法:

private void playPodcast(Podcast podcast) { 
     Intent intent = new Intent(getApplicationContext(), 
            DefaultMusicPlayerLaunchService.class); 
     intent.setDataAndType(Uri.parse(podcast.getContentLink()), "audio/*"); 
     startService(intent); 
    } 

我的想法是這樣,它會啓動音樂播放器,它在活動,我以前還的方式類似,但不用離開它的屏幕就可以啓動它。我沒有看到LogCat中發生任何事情。我覺得這應該工作,但我錯過了一些東西。

我嘗試的另一種方法是將播客對象作爲一個額外的序列化並將其放在我爲DefaultMusicPlayerLaunchService所做的Intent上。然後,在onStartCommand方法中,我抓住對象,創建一個新的Intent,然後調用startActivity,類似於頂部的原始playPodcast方法。正如預期的那樣,它只是頂級球員所做的......發起球員,但只要我回到家或回家,球就會關閉。

我很抱歉,如果我失去了明顯的東西。我是Android新手,迄今爲止所使用的所有內容都使用了Activity。這是我第一次嘗試啓動Service

回答

0

是的,您可以將其作爲服務啓動。你需要創建一個擴展android.app.Service的類。並從一個Activity傳遞startService(intent)給它一個意圖,以啓動服務。重寫onStartCommand方法並讓它返回START_STICKY,這將使服務運行直到它明確停止。您可以通過代碼或Android操作系統來節約資源。你也可以重寫onBind來將服務綁定到一個Activity,這將使服務具有與前臺Activity相同的重要性,這使得Android不太可能殺死該服務來節省資源。

+0

感謝您的輸入。對不起,我花了這麼長時間來嘗試這一點。我不確定我是否正確地做這件事。我試過了2種不同的方式,都沒有工作。我將用更多信息更新主要主題。 – Shino

相關問題