1

I have gone through google links and all I have been able to gather is on how I can play audio from firebase on a button click. In my App I have added custom buttons on my listView item. I have tried to play my files from the raw folder but this will increase the Apk size which I am avoiding.

I am trying to make the buttons in my adapter class play different audio urls on click.

Please does anyone know how I can I play my audio files in a listView from firebase storage?

I want to make the buttons play in order, just as it in my firebase database. This Can I use Firebase Storage for online music streaming? Only gives explanation on how to play with One url. What about using muiltiple Urls from firebase taking each item on the listView???

Here is my AudioActivity

public class AudioActivity extends Activity{

    private ArrayList<AudiosModel> arrayList;
    private CustomAudioAdapter adapter;
    private ListView songList;

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

        songList = (ListView) findViewById(R.id.songList);
        arrayList = new ArrayList<>();
        arrayList.add(new AudiosModel("", "",));
        arrayList.add(new AudiosModel("", "", ));
        arrayList.add(new AudiosModel("", "", ));
        arrayList.add(new AudiosModel("Success Defined", "", R.raw.tan));
        arrayList.add(new AudiosModel("", "", R.raw.tan));
        arrayList.add(new AudiosModel("", "", R.raw.tan));
        arrayList.add(new AudiosModel("", "", R.raw.tan));
        arrayList.add(new AudiosModel("Divine Friends", "", R.raw.tan));
        arrayList.add(new AudiosModel("Time", "", R.raw.tan));

        adapter = new CustomAudioAdapter(this, R.layout.custom_music_item, arrayList);
        songList.setAdapter(adapter);
             }
     }

and here is my Adapter Class

public class CustomAudioAdapter extends BaseAdapter {

    private Context context;
    private int layout;
    private ArrayList<AudiosModel> arrayList;
    private MediaPlayer mediaPlayer;
    private Boolean flag = true;

    public CustomAudioAdapter(Context context, int layout, ArrayList<AudiosModel> arrayList) {
        this.context = context;
        this.layout = layout;
        this.arrayList = arrayList;
    }

    @Override
    public int getCount() {
        return arrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    private class ViewHolder {
        TextView txtName, txtSinger;
        ImageView ivPlay, ivStop;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if(convertView == null){
            viewHolder = new ViewHolder();
            LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = layoutInflater.inflate(layout, null);
            viewHolder.txtName = (TextView) convertView.findViewById(R.id.tvSongName);
            viewHolder.txtSinger = (TextView) convertView.findViewById(R.id.Singer);
            viewHolder.ivPlay = (ImageView) convertView.findViewById(R.id.ivPlay);
            viewHolder.ivStop = (ImageView) convertView.findViewById(R.id.ivStop);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        final AudiosModel music = arrayList.get(position);

        viewHolder.txtName.setText(music.getName());
        viewHolder.txtSinger.setText(music.getSinger());

        // play music
        viewHolder.ivPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(flag){
                    mediaPlayer = MediaPlayer.create(context, music.getSong());
                    flag = false;
                }
                if(mediaPlayer.isPlaying()) {
                    mediaPlayer.pause();
                    viewHolder.ivPlay.setImageResource(R.drawable.ic_play);
                } else {
                    mediaPlayer.start();
                    viewHolder.ivPlay.setImageResource(R.drawable.ic_play);
                }
            }
        });


        return convertView;
    }
}
Tech Joe
  • 33
  • 1
  • 5

0 Answers0