Como fazer um tocador de música para android
Android Kotlin

Como fazer um tocador de música para android 2





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

Primeiramente nessa segunda parte de nosso tutorial vamos criar um package chamado adapter que vai conter nosso RecyclerAdapter para carregar as músicas como na imagem a seguir.

Como fazer um tocador de música para android 2
Criando package.

Logo depois de ter criado o package vamos criar nosso arquivo de layout que vai ser utilizado pelo nosso adapter como na imagem a seguir.

Como fazer um tocador de música para android 2
Adicionando layout resource file com o nome de content_musicas

O layout deve ter o nome de content_musicas conforme o está no projeto.

Então vamos utilizar o seguinte código para o layout.

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:paddingTop="@dimen/default_margin"
            android:paddingBottom="@dimen/default_margin"
            android:gravity="center"/>
        <TextView
            android:id="@+id/tvAdpTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:text="Author"
            android:paddingTop="@dimen/default_margin"
            android:paddingBottom="@dimen/default_margin"
            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:paddingBottom="@dimen/default_margin"
            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 criado o arquivo de layout vamos criar a classe do RecyclerAdapter para podermos listar as músicas adicionadas.

Portanto vamos criar o arquivo de classe com o nome de MusicAdapter dentro da pasta adapter como na imagem a seguir.

Como fazer um tocador de música para android 2
Adicionando arquivo class de kotlin no package adapter.

Agora posteriormente ter criado a classe do adapter vamos inserir nele o seguinte código.

MusicAdapter

package br.com.uware.mp3player.adapter

import android.content.Context
import android.graphics.Color
import android.media.MediaMetadataRetriever
import android.media.MediaMetadataRetriever.*
import android.media.MediaPlayer
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import br.com.uware.mp3player.R
import kotlinx.android.synthetic.main.content_music_list.view.*
import java.text.SimpleDateFormat

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_music_list, 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(METADATA_KEY_TITLE)
        holder.author.text = mmr.extractMetadata(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
    }
}

Este código será editado no futuro conforme o necessário para o nosso aplicativo.

Assim termino essa parte do tutorial, esperem por novos posts sobre 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.

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

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

[[email protected] ~]$ git pull

E assim seu repositório será atualizado.

Enfim espero ter dado continuidade com o Como fazer um tocador de música para android 2.

Veja também logo depois de ler esse tutorial Como usar o material design em kotlin.





<- Parte 1 Parte 3 ->

Rodrigo Leutz
Desenvolvedor Web e Android ( Kotlin e Java )
https://uware.com.br