有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java音频流未在SetonicClickListener上播放

以下是主要活动。爪哇

lv_tracks.setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {

    Resources res = getResources();
    String[] links = res.getStringArray(R.array.links);
    String url = links[position];
    try {
        mMediaPlayer.setDataSource(url);
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        mMediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mMediaPlayer.start();

}});

我需要播放放置在字符串数组中的数据源。 就像这样:

<string-array name="links">
    <item>http://210.56.24.230:8006/</item>
    <item>http://210.56.24.230:8044/</item>
    <item>http://210.56.24.230:8034/</item>
</string-array>

但这里的问题是:

  • 我听不到任何声音。也许不是在玩
  • 选择特定列表项时,将播放三个链接。我这样做对吗

共 (1) 个答案

  1. # 1 楼答案

    下面的代码在我之前的项目中运行良好,您可以尝试这种方式

     public static MediaPlayer mp;
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lv= (ListView)findViewById(R.id.lv);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                try {
    
                    if(mp==null){
                        mp= new MediaPlayer();
                    }else{
                        if(mp.isPlaying()){
                            mp.stop();
                        }
                    }
                    //Strat Loading
                    mp.setDataSource(CarsActivity.this,
                            Uri.parse(getResources().getStringArray(R.id.arr)[position]));
    
                    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mp.start();
                            //Dismiss Loading
                        }
                    });
                    mp.prepareAsync();
    
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SecurityException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
            }});
       }