列出三个不同的声音(ogg)文件,可以点击播放?

Posted

技术标签:

【中文标题】列出三个不同的声音(ogg)文件,可以点击播放?【英文标题】:List three different sound (ogg) files with ability to play on click? 【发布时间】:2013-08-05 08:42:28 【问题描述】:

我有三个声音文件:sound1.ogg、sound2.ogg 和 sound3.ogg。每个都有几秒钟的长度,并存储在我项目的/res/raw 文件夹中。

我希望它们在我的 main_activity 上的 ListView 中能够在用户触摸相应的剪辑名称时播放剪辑。

谁能给我发一个例子来说明如何做到这一点?到目前为止,我已经花了 3 天时间研究 soundpool,但我仍然摸不着头脑。

我不太会java

【问题讨论】:

你看过a tutorial并尝试关注它吗? 【参考方案1】:

下面的代码将根据点击项目的位置播放声音。这里的主 xml 文件中的所有内容都是 ID 为 listview1 的 ListView。 您应该能够更改 r.raw 引用和列表视图的 id,并且此代码将起作用。

那里有大量的教程,如果你自己尝试这样的事情而不是要求答案,你会学得更好。

 public class MainActivity extends Activity 

SoundPool sp;
String sounds[] = "sound1","sound2","sound3";
private ListView lv;


@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
    sound1 = sp.load(this, R.raw.sound1, 1);
    sound2 = sp.load(this, R.raw.sound2,1);
    sound3 = sp.load(this, R.raw.sound3,1);


    lv =(ListView) findViewById(R.id.listview1);
    lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, sounds));
    lv.setTextFilterEnabled(true);
    lv.setOnItemClickListener(new OnItemClickListener()
    

    @Override
        public void onItemClick(AdapterView<?> list, View view, int position,
                long id) 
            // TODO Auto-generated method stub
            if(position == 0)
                sp.play(sound1, 1, 1, 0, 0, 1);

            else if (position == 1)
                    sp.play(sound2,1,1,0,0,1);

                else if (position == 2)
                    sp.play(sound3, 1, 1, 0, 0, 1);
                


    
    );



      

【讨论】:

以上是关于列出三个不同的声音(ogg)文件,可以点击播放?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Chrome浏览器用<video>播放视频没有画面就只有声音,IE就可以。

在点击菜单上播放不同的声音

使用不同的 swift 文件播放音频

video标签播放视频只有声音没有画面&在iOS9中video标签播放无效

Firefox 不会播放声音,但可以在其他浏览器中使用

如何使用 xcode 播放 .ogg 文件