如何从Firebase存储中的listView中播放音频文件?

时间:2018-08-21 15:20:34

标签: android firebase listview firebase-realtime-database android-arrayadapter

我已经浏览了Google链接,而我所能收集到的一切就是如何在单击按钮时从Firebase播放音频。在我的应用程序中,我在listView项上添加了自定义按钮。我试图从原始文件夹播放文件,但这会增加我避免的Apk大小。

我试图使适配器类中的按钮在单击时播放不同的音频URL。

请问有人知道如何从Firebase存储中的listView中播放音频文件吗?

我想使按钮按顺序播放,就像在Firebase数据库中一样。  Can I use Firebase Storage for online music streaming?仅说明如何使用一个URL。 从Firebase使用多个Urls怎么办,将listView上的每个项目都提取出来??

这是我的 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);
             }
     }

这是我的适配器类

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

0 个答案:

没有答案