Zuoye1023


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;
    //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);

        //new 一个存放数据的Music工具类
        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
        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 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 ImageView listItemImage;
        private TextView listItemMusicName;
        private TextView listItemMusicTime;
        private TextView listItemMusicheadName;

//        listItemImage = (ImageView) findViewById(R.id.list_item_image);
//        listItemMusicName = (TextView) findViewById(R.id.list_item_music_name);
//        listItemMusicTime = (TextView) findViewById(R.id.list_item_music_time);
//        listItemMusicheadName = (TextView) findViewById(R.id.list_item_musichead_name);

    }
}


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 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值