1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android:音乐播放器(3)—从播放列表到播放歌曲

Android:音乐播放器(3)—从播放列表到播放歌曲

时间:2022-10-25 11:31:54

相关推荐

Android:音乐播放器(3)—从播放列表到播放歌曲

播放列表

播放列表布局

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="歌曲列表"android:textSize="25dp"android:id="@+id/textView"android:layout_alignParentTop="true"android:layout_centerHorizontal="true" /><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/listView"android:layout_below="@+id/textView"android:layout_alignParentLeft="true"android:layout_alignParentStart="true" />

播放列表代码

1.MusicMedia 类

public class MusicMedia {private int id; //音乐idprivate String title; //音乐标题private String artist;//音乐作者private String url; //音乐存放路径private String time; //音乐时长private String size; //音乐大小private int albumId; //专辑idprivate String album; //专辑public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getArtist() {return artist;}public void setArtist(String artist) {this.artist = artist;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getTime() {return time;}//修改时间格式public void setTime(int time) {time /= 1000;int minute = time / 60;int hour = minute / 60;int second = time % 60;minute %= 60;this.time = String.format("%02d:%02d", minute, second);}public String getSize() {return size;}public void setSize(Long size) {long kb = 1024;long mb = kb * 1024;long gb = mb * 1024;if (size >= gb) {this.size = String.format("%.1f GB", (float) size / gb);} else if (size >= mb) {float f = (float) size / mb;this.size = String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);} else if (size >= kb) {float f = (float) size / kb;this.size = String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);} elsethis.size = String.format("%d B", size);}public int getAlbumId() {return albumId;}public void setAlbumId(int albumId) {this.albumId = albumId;}public String getAlbum() {return album;}public void setAlbum(String album) {this.album = album;}}

2.Main4Activity代码

public class Main4Activity extends AppCompatActivity {private ListView listView;private List<MusicMedia> list=new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main4);listView= (ListView) findViewById(R.id.listView);getList();listView.setAdapter(new MyAdapter());listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Intent intent=new Intent(Main4Activity.this,Main3Activity.class);intent.putExtra("url",list.get(position).getUrl());startActivity(intent);}});}public void getList(){/*加载本地音乐文件库需要加READ_EXTERNAL_STORAGE权限查询媒体数据库的uri视频:MediaStore.Video.Media.EXTERNAL_CONTENT_URI图片:MediaStore.Images.Media.EXTERNAL_CONTENT_URI音乐(SD卡):MediaStore.Audio.Media.EXTERNAL_CONTENT_URI音乐(手机内部):MediaStore.Audio.Media.INTERNAL_CONTENT_URI*/ContentResolver contentResolver=getContentResolver();Cursor cursor= contentResolver.query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);while(cursor!=null){while (cursor.moveToNext()){int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));//歌曲标题String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));//歌曲的专辑名:MediaStore.Audio.Media.ALBUMString album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));int albumId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));//歌曲的歌手名: MediaStore.Audio.Media.ARTISTString artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//歌曲文件的路径 :MediaStore.Audio.Media.DATAString url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//歌曲的总播放时长 :MediaStore.Audio.Media.DURATIONint duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//歌曲文件的大小 :MediaStore.Audio.Media.SIZELong size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));MusicMedia musicMedia = new MusicMedia();musicMedia.setId(id);musicMedia.setArtist(artist);musicMedia.setSize(size);musicMedia.setTitle(title);musicMedia.setTime(duration);musicMedia.setUrl(url);musicMedia.setAlbum(album);musicMedia.setAlbumId(albumId);list.add(musicMedia);}}}class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView textView ;if(convertView==null){textView = new TextView(Main4Activity.this);}else{textView = (TextView) convertView;}textView.setText(list.get(position).getTitle());return textView;}}}

3.Main3Activity代码跳转播放页面代码

public class Main3Activity extends AppCompatActivity {private Button start,end,pause;MediaPlayer mediaPlayer;private SeekBar seekBar;Timer timer = new Timer();;TimerTask timerTask;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main3);start = (Button) findViewById(R.id.start);end = (Button) findViewById(R.id.end);pause = (Button) findViewById(R.id.pause);seekBar = (SeekBar) findViewById(R.id.seekBar);Intent intent = getIntent();String url = intent.getStringExtra("url");mediaPlayer = MediaPlayer.create(Main3Activity.this, Uri.parse(url));//歌曲的播放时长seekBar.setMax(mediaPlayer.getDuration());seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {Log.i("messgae","start");}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {Log.i("messgae","stop");//设置歌曲的进度为进度条的位置mediaPlayer.seekTo(seekBar.getProgress());}});}public void click(View view){int id = view.getId();switch(id){case R.id.start:start();break;case R.id.end:stop();break;case R.id.pause:pause();break;}}public void start(){mediaPlayer.start();timerTask = new TimerTask() {@Overridepublic void run() {//歌曲当前播放位置seekBar.setProgress(mediaPlayer.getCurrentPosition());}};//1.等多久再执行什么//2.每隔多久执行一次什么timer.schedule(timerTask,0,100);start.setEnabled(false);}public void pause(){String pause1 = pause.getText().toString().trim();if("暂停".equals(pause1)){mediaPlayer.pause();pause.setText("继续");}else{mediaPlayer.start();pause.setText("暂停");}}public void stop(){if(mediaPlayer!=null){timer.cancel();mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;start.setEnabled(true);}}}

注:调试时,需要真机!!因为用的手机默认音乐

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。