簡體   English   中英

使用ImageButton android播放音樂

[英]Playing musics with ImageButton android

我有一個要與ImageButton一起播放的音樂(.mp3)列表,我想播放每個聲音及其ID

首先,我有一個具有字段_id的數據庫。 然后,我試圖

 final String ambil = kata.get(3)

用於從我使用的查詢中檢索_id。 然后,我用

speaker.setTag(ambil);

揚聲器是一個ImageButton,我想為其每個按鈕加上_id標記,以使聲音彼此不同。

然后,我訂購了與此相關的所有聲音文件

int names[] = {R.raw.a,R.raw.a,R.raw.c};

最后,我想以此創建一個MediaPlayer

MediaPlayer mp = MediaPlayer.create(LazyAdapter.this, R.raw.names[ambil]);

我的算法正確嗎?

您可以嘗試一下:

首先,使用文件名獲取資源ID:

int rid = context.getResources()
        .getIdentifier("filename","raw", context.getPackageName());

然后在輸入流中獲取文件:

InputStream iS;
iS = getResources().openRawResource(rID);

您可以參考這篇文章以獲得更多說明。

另一篇參考

希望能幫助到你。

現在,我將提示如何以簡單的方式完成它。 您可以使用原始資源創建一個數組:

 int names[] = new int {R.raw.a,R.raw.b,R.raw.c};

不要像您那樣做一個String數組,這將無法工作。 使用上面的示例,並像這樣創建mediaplayer:

 MediaPlayer mp = MediaPlayer.create(LazyAdapter.this, names[0]);

編輯

從上面的示例中,我看到了一些錯誤的內容。

首先,您不能傳遞字符串來標識數組的編號。 您這樣做是這樣的:

     final String ambil = kata.get(3)

並且您試圖獲取mediaPlayer的資源,例如:

     MediaPlayer mp = MediaPlayer.create(LazyAdapter.this, R.raw.names[ambil]);

在那里,您傳遞了一個字符串以從names [] ---> R.raw.names [ambil]]獲取資源。 不要寫R.raw.names [],只寫名字[]。

另外,您必須傳遞一個整數才能從數組中獲取值,例如:

      names[0]

問題是,您從數據庫中獲得了哪個整數,您說您獲得了id,但是值是多少? 為了便於說明,如果您寫入名稱[0],則意味着您獲得了數組的第一個值(因為數組以0開頭)。 在您的情況下,請參考資源R.raw.a。 如果要引用第二首歌曲,則必須寫名稱[1]。

我不知道您如何實現數據庫以及以何種方式提供_id。 但是請確保以這種方式給出_id,使其不會高於資源數量。 如果您創建一個自動增量ID,則當該值大於歌曲數時,它將無法使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM