package com.example.ykmusicmajor;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import java.io.IOException;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
private List<User> list;
private android.widget.ListView ListView;
private TextView MusicName;
private TextView MusicheadName;
private SeekBar seekBar;
private ImageView listImage;
private ImageView leftImage;
private ImageView zantingImage;
private ImageView kaishiImage;
private ImageView rightImage;
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},100);
list = new MusicUtil().Adddate(this);
ListView = (ListView) findViewById(R.id.List_view);
MusicName = (TextView) findViewById(R.id.Music_name);
MusicheadName = (TextView) findViewById(R.id.Musichead_name);
seekBar = (SeekBar) findViewById(R.id.seek_bar);
listImage = (ImageView) findViewById(R.id.list_image);
leftImage = (ImageView) findViewById(R.id.left_image);
zantingImage = (ImageView) findViewById(R.id.zanting_image);
kaishiImage = (ImageView) findViewById(R.id.kaishi_image);
rightImage = (ImageView) findViewById(R.id.right_image);
play();
zantingImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
kaishiImage.setVisibility(View.VISIBLE);
zantingImage.setVisibility(View.GONE);
mp.start();
}
});
kaishiImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
zantingImage.setVisibility(View.VISIBLE);
kaishiImage.setVisibility(View.GONE);
mp.pause();
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
if (b){
mp.seekTo(i);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
private void play() {
ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
MusicName.setText(list.get(i).getMusic_name());
MusicheadName.setText(list.get(i).getMusichead_name());
zantingImage.setVisibility(View.GONE);
kaishiImage.setVisibility(View.VISIBLE);
mp = new MediaPlayer();
mp.reset();
try {
mp.setDataSource(list.get(i).getData());
mp.prepareAsync();
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mp.start();
}
});
seekBar.setMax(Integer.parseInt(list.get(i).getZong_time()));
time();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private void time() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
seekBar.setProgress(mp.getCurrentPosition());
}
},0,1000);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
ListView.setAdapter(new BaseAdapter() {
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view==null){
viewHolder = new ViewHolder();
view = layoutInflater.inflate(R.layout.list_item,null);
viewHolder.listItemMusicName = view.findViewById(R.id.list_item_music_name);
viewHolder.listItemMusicheadName = view.findViewById(R.id.list_item_musichead_name);
viewHolder.listItemMusicTime = view.findViewById(R.id.list_item_music_time);
view.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.listItemMusicName.setText(list.get(i).getMusic_name());
viewHolder.listItemMusicheadName.setText(list.get(i).getMusichead_name());
viewHolder.listItemMusicTime.setText(list.get(i).getZong_time());
return view;
}
});
}
private class ViewHolder {
private TextView listItemMusicName;
private TextView listItemMusicTime;
private TextView listItemMusicheadName;
}
}
package com.example.ykmusicmajor;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import java.util.ArrayList;
import java.util.List;
public class MusicUtil {
private List<User> list = new ArrayList<>();
public List<User> Adddate(Context context){
ContentResolver cr = context.getContentResolver();
Cursor query = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (query!=null){
while(query.moveToNext()){
String Music_name = query.getString(query.getColumnIndex(MediaStore.Audio.Media.TITLE));
String Musichead_name = query.getString(query.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String Zong_time = query.getString(query.getColumnIndex(MediaStore.Audio.Media.DURATION));
String data = query.getString(query.getColumnIndex(MediaStore.Audio.Media.DATA));
String size_s = query.getString(query.getColumnIndex(MediaStore.Audio.Media.SIZE));
User user = new User(Music_name, Musichead_name, Zong_time, data, size_s);
list.add(user);
}
}
return list;
}
}
package com.example.ykmusicmajor;
public class User {
private String Music_name;
private String Musichead_name;
private String Zong_time;
private String data;
private String size_s;
public User() {
}
public User(String music_name, String musichead_name, String zong_time, String data, String size_s) {
Music_name = music_name;
Musichead_name = musichead_name;
Zong_time = zong_time;
this.data = data;
this.size_s = size_s;
}
public String getMusic_name() {
return Music_name;
}
public void setMusic_name(String music_name) {
Music_name = music_name;
}
public String getMusichead_name() {
return Musichead_name;
}
public void setMusichead_name(String musichead_name) {
Musichead_name = musichead_name;
}
public String getZong_time() {
return Zong_time;
}
public void setZong_time(String zong_time) {
Zong_time = zong_time;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getSize_s() {
return size_s;
}
public void setSize_s(String size_s) {
this.size_s = size_s;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:id="@+id/List_view"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight="1">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_centerInParent="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="3">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="歌名"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:id="@+id/Music_name"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="歌手名字"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:id="@+id/Musichead_name"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:id="@+id/seek_bar"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/playbar_btn_playlist"
android:id="@+id/list_image"
android:layout_centerInParent="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="4"
>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/playbar_btn_prev"
android:id="@+id/left_image"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/playbar_btn_play"
android:id="@+id/zanting_image"
android:layout_centerInParent="true"
android:visibility="visible"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/playbar_btn_pause"
android:id="@+id/kaishi_image"
android:layout_centerInParent="true"
android:visibility="gone"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/playbar_btn_next"
android:layout_alignParentLeft="true"
android:id="@+id/right_image"
/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="120dp">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/list_item_image"
android:src="@mipmap/ic_launcher"
android:layout_centerInParent="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="歌曲名称"
android:id="@+id/list_item_music_name"
android:layout_marginLeft="20dp"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5:11"
android:id="@+id/list_item_music_time"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="歌手名称"
android:layout_marginLeft="20dp"
android:id="@+id/list_item_musichead_name"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>