//MainActivity中代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140import android.content.ContentResolver; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; public class MainActivity extends AppCompatActivity { private ListView listView; private TextView singerName,singer; private ArrayList<MusicInfo> list=new ArrayList<>(); private MediaPlayer play; private int number; MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 listView = (ListView)findViewById(R.id.listView); singerName = (TextView)findViewById(R.id.singName); singer = (TextView)findViewById(R.id.singer); //设置数据源 //给ListView添加适配器 adapter = new MyAdapter(list, this); listView.setAdapter(adapter); //加载本地音乐 loadLocalData(); //初始化媒体播放器 play = new MediaPlayer(); //设置点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { number=position; MusicInfo info = list.get(position); singer.setText(info.getSinger()); singerName.setText(info.getSingName()); //因为有可能其他音乐正在被播放,所以要先停止再播放 stopMusic(); //播放音乐 play.reset(); try { play.setDataSource(info.getPath()); playMusic(); } catch (IOException e) { e.printStackTrace(); } } }); } private void loadLocalData() { //1.获得ContentResolver对象 ContentResolver resolver = getContentResolver(); //2.获得Uri地址 Uri musicuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; //3.查找地址中的内容 Cursor cursor = resolver.query(musicuri, null, null, null, null); //4.遍历cursor信息 int id=0; while (cursor.moveToNext()){ String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); String displayname = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); SimpleDateFormat sdf = new SimpleDateFormat("mm:ss"); String time = sdf.format(new Date(duration)); id++; String idStr = id+""; MusicInfo info = new MusicInfo(idStr,title,singer,album,time,path); list.add(info); } adapter.notifyDataSetChanged(); } /**播放音乐*/ private void playMusic() { if (play!=null&&!play.isPlaying()){ try { play.prepare();//准备播放 play.start(); } catch (IOException e) { e.printStackTrace(); } } } /**停止音乐*/ private void stopMusic() { if (play!=null&&play.isPlaying()){ play.pause(); play.seekTo(0); play.stop(); } } public void onClick(View view) { switch (view.getId()){ case R.id.next_btn://下一个,需要显示下一首歌曲 //获取数据 number++; MusicInfo info = list.get(number); singer.setText(info.getSinger()); singerName.setText(info.getSingName()); //因为有可能其他音乐正在被播放,所以要先停止再播放 stopMusic(); //播放音乐 play.reset(); try { play.setDataSource(info.getPath()); playMusic(); } catch (IOException e) { e.printStackTrace(); } break; case R.id.stop_btn://暂停 if (play!=null){ if (play.isPlaying()){//暂停 play.pause(); }else if (!play.isPlaying()){//开始 play.start(); } } break; } } @Override protected void onDestroy() { super.onDestroy(); stopMusic(); } }
//内容实体类:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66public class MusicInfo { private String id; private String singName; private String singer; private String alumb; private String time; private String path; public MusicInfo() { } public MusicInfo(String id, String singName, String singer, String alumb, String time, String path) { this.id = id; this.singName = singName; this.singer = singer; this.alumb = alumb; this.time = time; this.path = path; } public String getId() { return id; } public String getSingName() { return singName; } public String getSinger() { return singer; } public String getAlumb() { return alumb; } public String getTime() { return time; } public String getPath() { return path; } public void setId(String id) { this.id = id; } public void setSingName(String singName) { this.singName = singName; } public void setAlumb(String alumb) { this.alumb = alumb; } public void setSinger(String singer) { this.singer = singer; } public void setPath(String path) { this.path = path; } public void setTime(String time) { this.time = time; } @Override public String toString() { return "MusicInfo{" + "id='" + id + ''' + ", singName='" + singName + ''' + ", singer='" + singer + ''' + ", alumb='" + alumb + ''' + ", time='" + time + ''' + ", path='" + path + ''' + '}'; } }
//listView需要一个适配器器
复制代码
//主界面布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; /** * Created by Administrator on 2018/1/4 0004. */ public class MyAdapter extends BaseAdapter{ private ArrayList<MusicInfo> list; private Context context; public MyAdapter(ArrayList<MusicInfo> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView==null) { convertView = LayoutInflater.from(context).inflate(R.layout.item_layout,null); holder = new ViewHolder(convertView); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } MusicInfo musicInfo = list.get(position); holder.idTv.setText(musicInfo.getId()); holder.titleTv.setText(musicInfo.getSingName()); holder.alubmTv.setText(musicInfo.getAlumb()); holder.singerTv.setText(musicInfo.getSinger()); holder.timeTv.setText(musicInfo.getTime()); return convertView; } class ViewHolder{ TextView idTv,titleTv,singerTv,alubmTv,timeTv; public ViewHolder(View itemView){ idTv = (TextView) itemView.findViewById(R.id.item_music_id); titleTv = (TextView) itemView.findViewById(R.id.item_music_sing); singerTv = (TextView) itemView.findViewById(R.id.item_music_singer); alubmTv = (TextView) itemView.findViewById(R.id.item_music_album); timeTv = (TextView) itemView.findViewById(R.id.item_music_time); } } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.operation_20180104_music.MainActivity"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="80dp" android:background="#FFF" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/music_icon" android:id="@+id/image" android:layout_centerVertical="true"/> <TextView android:id="@+id/singName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:text="歌名" android:textSize="22sp" android:layout_toRightOf="@+id/image" android:padding="10dp" android:layout_marginTop="5dp"/> <TextView android:id="@+id/singer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="张朝韩" android:textSize="16sp" android:padding="10dp" android:layout_alignBottom="@+id/image" android:layout_toRightOf="@+id/image" android:layout_toEndOf="@+id/image" /> <ImageButton android:id="@+id/next_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/image01" android:layout_alignParentRight="true" android:background="#FFF" android:onClick="onClick"/> <ImageButton android:id="@+id/stop_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/image02" android:background="#FFF" android:layout_toLeftOf="@+id/next_btn" android:onClick="onClick"/> </RelativeLayout> </RelativeLayout>
//listView中内容的布局
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/item_music_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:textSize="24sp" android:textStyle="bold" android:layout_centerVertical="true"/> <TextView android:id="@+id/item_music_sing" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="玫瑰花的葬礼" android:textSize="20sp" android:textStyle="bold" android:singleLine="true" android:ellipsize="end" android:layout_marginLeft="20dp" android:layout_toRightOf="@+id/item_music_id"/> <TextView android:id="@+id/item_music_singer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="许嵩" android:textSize="16sp" android:textColor="#888" android:layout_marginTop="10dp" android:layout_alignLeft="@+id/item_music_sing" android:layout_below="@+id/item_music_sing"/> <TextView android:id="@+id/line" android:layout_width="2dp" android:layout_height="20dp" android:background="#ccc" android:layout_toRightOf="@+id/item_music_singer" android:layout_alignTop="@+id/item_music_singer" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"/> <TextView android:id="@+id/item_music_album" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="专辑名称" android:layout_marginTop="10dp" android:textSize="16sp" android:textColor="#888" android:ellipsize="end" android:singleLine="true" android:layout_toRightOf="@+id/line" android:layout_below="@+id/item_music_sing"/> <TextView android:id="@+id/item_music_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:layout_below="@+id/item_music_singer" android:text="4:30" android:layout_alignParentRight="true"/> </RelativeLayout>
//一个简单的本地音乐播放器完成
最后
以上就是正直雪碧最近收集整理的关于Android 基础——本地音乐播放器的全部内容,更多相关Android内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复