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;
}
}