Java 如何从列表视图播放mp3文件

Java 如何从列表视图播放mp3文件,java,android,Java,Android,我是编程新手,我正在尝试构建一个从URL流式传输.mp3文件的应用程序。该应用程序有1个活动。屏幕的50%是带有音频文件名称的列表视图,另一半用于媒体播放器控件。到目前为止,它与计数器一起工作。当按下播放按钮时,计数器从0开始,并从字符串中获取第一个URL。按下“下一步”按钮使计数器转到+1,播放机开始播放字符串中的第二个URL。ListView只打印祝酒词,到目前为止对媒体播放器没有影响。我想如果有人能给我指出一个正确的方向,如何让这个应用程序像我想的那样工作。ie列表项1将播放url编号0,

我是编程新手,我正在尝试构建一个从URL流式传输.mp3文件的应用程序。该应用程序有1个活动。屏幕的50%是带有音频文件名称的列表视图,另一半用于媒体播放器控件。到目前为止,它与计数器一起工作。当按下播放按钮时,计数器从0开始,并从字符串中获取第一个URL。按下“下一步”按钮使计数器转到+1,播放机开始播放字符串中的第二个URL。ListView只打印祝酒词,到目前为止对媒体播放器没有影响。我想如果有人能给我指出一个正确的方向,如何让这个应用程序像我想的那样工作。ie列表项1将播放url编号0,列表项2将播放url编号1,依此类推

public class MainActivity extends AppCompatActivity implements AudioManager.OnAudioFocusChangeListener {

ListView listView;

String[] listItems = new String[] {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"};

final String urls[] = {
        "https://firebasestorage.googleapis.com   0...",
        "https://firebasestorage.googleapis.com   1...",
        "https://firebasestorage.googleapis.com   2...",
        "https://firebasestorage.googleapis.com   3...",
        "https://firebasestorage.googleapis.com   4...",};

private AudioManager audioManager;

private MediaPlayer mediaPlayer;

private TextView textView;

private int counter;

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

    listView = findViewById(R.id.list_view);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, listItems);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(MainActivity.this, listItems[position], Toast.LENGTH_SHORT).show();
        }
    });


    audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

    textView = findViewById(R.id.textView);
    Button btn_play = findViewById(R.id.play_btn);
    Button btn_pause = findViewById(R.id.pause_btn);
    Button btn_next = findViewById(R.id.next_btn);
    Button btn_prev = findViewById(R.id.prev_btn);
    
    counter = 0;

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

    btn_play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            textView.setText(urls[counter]);

            try {
                mediaPlayer.setDataSource(urls[counter]);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                mediaPlayer.prepare();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mediaPlayer.start();

        }
    });

    btn_pause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mediaPlayer.pause();
        }
    });

    btn_next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(counter < urls.length) {
                counter = counter + 1;

                textView.setText(urls[counter]);

                try {
                    mediaPlayer.reset();
                } catch (Exception ex) {

                }

                try {
                    mediaPlayer.setDataSource(urls[counter]);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    mediaPlayer.prepare();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mediaPlayer.start();
            }
        }
    });

    btn_prev.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(counter > 0) {
                counter = counter - 1;

                textView.setText(urls[counter]);

                try {
                    mediaPlayer.reset();
                } catch (Exception ex) {

                }

                try {
                    mediaPlayer.setDataSource(urls[counter]);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    mediaPlayer.prepare();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mediaPlayer.start();
            }
        }
    });
公共类MainActivity扩展AppCompative实现AudioManager.OnAudioFocusChangeListener{
列表视图列表视图;
String[]listItems=新字符串[]{“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”};
最终字符串URL[]={
"https://firebasestorage.googleapis.com   0...",
"https://firebasestorage.googleapis.com   1...",
"https://firebasestorage.googleapis.com   2...",
"https://firebasestorage.googleapis.com   3...",
"https://firebasestorage.googleapis.com   4...",};
私人音频经理;
私人媒体播放器;
私有文本视图文本视图;
专用int计数器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=findViewById(R.id.list\u视图);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u list\u item\u 1,android.R.id.text1,list items);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(MainActivity.this,listItems[position],Toast.LENGTH_SHORT).show();
}
});
audioManager=(audioManager)getSystemService(Context.AUDIO\u服务);
audioManager.requestAudioFocus(这是audioManager.STREAM_音乐,audioManager.AUDIOFOCUS_增益);
textView=findViewById(R.id.textView);
按钮btn_play=findViewById(R.id.play_btn);
按钮btn\u pause=findViewById(R.id.pause\u btn);
按钮btn_next=findviewbyd(R.id.next_btn);
按钮btn_prev=findViewById(R.id.prev_btn);
计数器=0;
mediaPlayer=新的mediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
btn_play.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
setText(URL[计数器]);
试一试{
setDataSource(URL[计数器]);
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(安全异常e){
e、 printStackTrace();
}捕获(非法状态){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
mediaPlayer.prepare();
}捕获(非法状态){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
mediaPlayer.start();
}
});
btn_pause.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mediaPlayer.pause();
}
});
btn_next.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(计数器0){
计数器=计数器-1;
setText(URL[计数器]);
试一试{
mediaPlayer.reset();
}捕获(例外情况除外){
}
试一试{
setDataSource(URL[计数器]);
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(安全异常e){
e、 printStackTrace();
}捕获(非法状态){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
mediaPlayer.prepare();
}捕获(非法状态){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
mediaPlayer.start();
}
}
});