Como fazer um tocador de música para android 4

Como fazer um tocador de música para android 4

Nesse tutorial vou dar continuidade em Como fazer um tocador de música para android 4, portanto é a quarta parte de como criar um tocador de música para android.

Nessa quarta parte de nosso tutorial vamos assim modificar o nosso recyclerview para receber as informações quando formos adicionar as músicas.

Então vamos criar dois arquivos de background para colocarmos um quando a música estiver tocando e outro para as musicas em espera.

Se você ainda não viu como criar um background então veja o tutorial Como criar um Background no Android Studio.

Para isso vamos criar os arquivos com os seguintes nomes e seus respectivos códigos.

background_item_list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:bottom="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
            <stroke android:color="#000" android:width="1dp"/>
        </shape>
    </item>
</layer-list>

background_item_list_active

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
</selector>

Vamos também criar nosso ícone de delete da música para o nosso recyclerview.

Se você não sabe como criar o ícone então veja o tutorial Como adicionar um Ícone para ImageButton.

Então vamos usar o nome de ic_delete_black para o nosso ícone, você pode escolher o ícone de sua preferência.

Logo depois de ter criado os dois backgrounds e o ícone de delete então vamos agora arrumar o nosso arquivo de layout do recyclerview e seu respectivo adapter.

Vamos modificar nosso arquivo de layout content_musicas para que fique assim como o seguinte.

content_musicas

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_item_list"
    android:id="@+id/layAdp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1">
        <TextView
            android:id="@+id/tvAdpAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:text="Author"
            android:gravity="center"/>
        <TextView
            android:id="@+id/tvAdpTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:text="Title"
            android:gravity="center"/>
        <TextView
            android:id="@+id/tvAdpTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:text="00:00"
            android:gravity="center"/>
    </LinearLayout>
    <ImageButton
        android:id="@+id/btnAdpDel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_delete_black"
        android:layout_gravity="center"
        android:paddingStart="5dp"
        android:paddingEnd="5dp"
        android:layout_weight="9"/>
</LinearLayout>

Logo após ter feito as modificações no nosso arquivo de layout vamos deixar certo nosso arquivo do adapter deixando assim como o seguinte.

MusicAdapter

class MusicAdapter (musicList: ArrayList<Uri>,
                    private var ctx: Context,
                    private val callback: (Uri,Int) -> Unit,
                    private val callbackMusic: () -> Int,
                    private val callbackDelete: (Int) -> Unit): RecyclerView.Adapter<MusicAdapter.ViewHolder>(){

    private var musicList: ArrayList<Uri> = ArrayList<Uri>()
    init {
        this.musicList = musicList
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(ctx).inflate(R.layout.content_musicas, parent, false)
        return ViewHolder(view)
    }
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val music = musicList[position]
        var mmr = MediaMetadataRetriever()
        mmr.setDataSource(ctx,music)
        holder.title.text = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE)
        holder.author.text = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST)
        holder.lay.setOnClickListener {
            callback(music,position)
        }
        var mediaPlayer = MediaPlayer.create(ctx,music)
        val sdf = SimpleDateFormat("mm:ss")
        holder.time.text = sdf.format(mediaPlayer!!.duration).toString()
        mediaPlayer.release()

        if(position == callbackMusic()){
            holder.lay.setBackgroundResource(R.drawable.background_item_list_active)
            holder.author.setTextColor(Color.WHITE)
            holder.title.setTextColor(Color.YELLOW)
            holder.time.setTextColor(Color.WHITE)
        } else{
            holder.lay.setBackgroundResource(R.drawable.background_item_list)
            holder.author.setTextColor(Color.BLACK)
            holder.title.setTextColor(Color.parseColor("#008577"))
            holder.time.setTextColor(Color.BLACK)
        }
        holder.del.setOnClickListener {
            callbackDelete(position)
        }
    }
    override fun getItemCount(): Int {
        return musicList.size
    }
    inner class ViewHolder(view: View): RecyclerView.ViewHolder(view){
        var lay = view.layAdp
        var author = view.tvAdpAuthor
        var title = view.tvAdpTitle
        var time = view.tvAdpTime
        var del = view.btnAdpDel
    }
}

Assim termino essa quarta parte de Como fazer um tocador de música para android.

Foi criado um gist do nosso projeto para facilitar nossa continuidade do projeto, então se sovê quiser clonar nosso projeto você pode utilizar a seguinte lina para isso.

[user@uware ~]$ git clone https://github.com/uware-com-br/MusicPlayer

Assim você vai precisar digitar o seguinte comando quando for atualizar seu repositório.

[user@uware ~]$ git pull

E assim seu repositório será atualizado.

Enfim espero poder ter ajudado com mais esta parte do tutorial de Como fazer um tocador de música para android 4.

Ainda assim se estiver com alguma dúvida entre em nosso canal no telegram clicando no link abaixo.


<- Parte 3 Parte 5 ->



Rodrigo Leutz
Desenvolvedor Web e Android ( Kotlin e Java )