2013-05-20 40 views
2

我是Android應用程序開發新手,但我對JAVA和一般編程有很好的瞭解。我正在嘗試爲Android編寫一個應用程序,它可以將音樂文件排入Android中的默認音樂播放器(如Google Play音樂)。我的應用程序決定播放哪首歌曲,但我不想編寫完整的音樂播放器應用程序。我只想給現有的播放器應用程序提供新的音樂。如何通過應用程序將音樂排入默認的Android音樂播放器?

我在尋找的東西,如「應用程序內間」通信(可能使用意圖是什麼?),通過它我可以養活內容到音樂播放器,並可能控制播放器本身。

我不知道,如果這種設備在Android的存在,所以其他替代建議,也歡迎。另外,如果我沒有正確解釋問題,請告訴我。

回答

1

意圖是安卓的一個非常強大的功能,其中有沒有在Java中的任何直接模擬。你想要使用的是一種稱爲隱式意圖的機制。通常,當您從另一個活動啓動一項活動時,您將創建一個意圖並指定要啓動的活動。使用隱含的意圖,您可以提供一個操作(Intent.ACTION_VIEW)和數據(指向音樂文件的URI)。使用隱式的Intent,您可以事先不知道哪個Activity會處理哪一個數據。

當您將您的意圖傳遞給startActivity()時,操作系統將嘗試以儘可能最好的方式解析數據,通常會彈出一個可能處理數據的應用程序列表。用戶選擇適當的應用程序,該應用程序處理意圖,播放您的音樂文件。任何註冊爲可以處理數據的服務的應用程序都將顯示在列表中。通過意向後,您的活動將進入後臺,處理意圖的應用程序將進入前臺。

一旦用戶選擇一個應用程序來處理來自您的活動意圖,該應用程序將始終使用您的活動來處理那樣的意圖,直到您刪除了自己的應用程序的數據。

看看在official doc來讓自己開始,然後提出新問題時,你有你試圖解決一個更具體的問題。

這裏是一個演示了一個非常簡單的隱含意圖例如,通過一個URL是不知道該瀏覽器將打開它打開了一個代碼示例:

package com.marsatomic.intentimplicitdemo; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity 
{ 
    public final static Uri URI = Uri.parse("http://www.marsatomic.com"); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button buttonConnect = (Button)findViewById(R.id.button_connect); 
     buttonConnect.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent i = new Intent(Intent.ACTION_VIEW, URI); 
       startActivity(i); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 
+0

感謝您的回答MarsAtomic。是否有可能提前決定目標應用程序而不詢問用戶每次我的應用程序需要播放文件時選擇哪個應用程序?另外,我認爲我有一個相當具體的問題。我希望我的應用程序能夠控制音樂播放器並將內容提供給它。當我的應用程序開始運行時,它應該加載某些音樂文件並將它們排入音樂播放器並啓動音樂播放器。另外,我知道這可以通過讓我的應用成爲一個獨立的音樂播放器來完成。我正在尋找可以避免編寫音樂播放器的替代解決方案。 –

+0

在我的回答中添加了第三段,以便爲您澄清事情。使用隱含的意圖,你絕對可以避免寫一個音樂播放器。如果您的問題得到解答,請將答案標記爲「已接受」,以便未來的讀者獲益,並在新問題中創建更多具體的後續查詢。 – MarsAtomic

+0

該解決方案可以使用音樂播放器打開URI。我也在尋找一種方法來從我的應用程序中控制音樂播放器(播放/暫停/停止等) –

相關問題