当前位置: 首页 > 知识库问答 >
问题:

在listview中播放下一个音频文件

祁渊
2023-03-14

我正在使用媒体播放器播放带有列表视图的原始文件夹中的音频文件。一切正常,但我有一个问题。
问题是:当第一个音频文件结束时,它播放第二个文件,但当第二个文件结束时,它不播放第三个文件。
问题是什么??我尝试在mp上添加setOnCompletionListener并重置mp并在(位置+1)中播放audion,这是真的吗?

我还有一个问题。当它结束播放listview中的第一个项目并开始播放第二个项目时,第一个项目的背景仍然是彩色的(蓝色),而它不是彩色的第二个项目的背景。有人能帮我吗

private final String[] listContent = { "song1", "song2","song3"};

private final int[] resID = { R.raw.song1, R.raw.song2, R.raw.song3 };


    mp = new MediaPlayer();
    mainList = (ListView)     findViewById(R.id.listView1);
    final ArrayAdapter<String> adapter =   new ArrayAdapter<String>(this,
                                                             android.R.layout.simple_list_item_1, listContent);
                                                            mainList.setAdapter(adapter);

        mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void    onItemClick(AdapterView<?> adapterView, View view,
                                    final int position,final long id) {
                playSong(position);

                String selectedSweet =     mainList.getItemAtPosition(position).toString();
                tv1.setText(selectedSweet);
                   System.out.println(selectedSweet);

                   mainList.setSelector(R.drawable.selecteditem);
                   btnn2.setBackgroundResource(R.drawable.play);        



                   mp.setOnCompletionListener(new    OnCompletionListener(){

                                @Override public void   onCompletion(MediaPlayer mp){  

            String selectedSweet2 =    mainList.getItemAtPosition(position+1).toString();
            tv1.setText(selectedSweet2);

//There to play next file
               mainlist.setSelection(position+1);
              mainList.setSelector(R.drawable.selecteditem);

                                playSong2(position);


                                }
});}
                        private void playSong2(int    songIndex)
                                {

                                    mp.reset();
    mp =    MediaPlayer.create(getApplicationContext(), resID[songIndex]);

                                    mp.start();


                                }});






    }




public void playSong(int songIndex) {

    mp.reset();
    mp = MediaPlayer.create(getApplicationContext(), resID[songIndex]);

}

共有1个答案

山疏珂
2023-03-14

这两个问题的答案都是歌曲的结束不会导致ListView的索引发生任何变化。尝试在歌曲结束时更新listview索引。

 类似资料:
  • 我有listview,它包含一个带有播放按钮和搜索栏的音频文件列表。 当我单击listview的播放按钮时,我想播放一个音频文件。我成功地实现了这一点,但当我单击列表中的另一个播放按钮时,两个音频文件正在连续播放,它将继续所有单击播放按钮。我如何限制媒体播放器在一个位置播放,如果我点击另一个图标,它必须停止旧的媒体播放器,并开始播放新的。有人能说我怎么实现这个吗?。我有相同的按钮播放和暂停。

  • 问一下Xamarin.Forms便携里面Xamarin.Forms的音频怎么播放 正如我所知,有依赖服务,我看到了一些示例,只有iOS和Android,但没有Windows Phone 8.1/Windows 8.1和UWP。

  • 问题内容: 我正在寻找一种轻松播放远程 .mp3 文件的解决方案。我看过适用于本地文件的“ pyglet”模块,但似乎无法处理远程文件。我可以临时下载 .mp3 文件,但是由于 .mp3 文件看起来太大,因此不建议这样做。 我宁愿它用于跨平台而不是仅用于Windows等。 例如,播放来自以下位置的音频文件: http://example.com/sound.mp3 只需在下载文件时流式传输文件,我

  • 我尝试建立一个按钮,一旦点击它播放一个音频文件,如果再次点击它停止它。在按钮中,有一个属性src,其中放置了应该播放的文件的路径。 null null 当我尝试单击该按钮时,日志显示“”。但音频已设置,警报显示文件路径在那里。 我做错了什么?

  • 我正在读一本书。wav文件在C中,然后我尝试使用一些QT函数播放音频文件。以下是我如何阅读该文件: 所以我的音频文件在里面。的每个元素都是无符号的16位整数。 为了播放声音,我将每个16位无符号整数分成两个字符,然后每隔3毫秒(使用计时器)向音频卡发送256个字符。假设是256个字符的字符数组,我这样做(每隔3毫秒)来播放声音: 此外,定义为: 并且定义为: 并且音频格式设置正确为: 然而,当我试