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