目录

    • main.xml
    • bottom_bar.xml
    • item.xml
    • java代码

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <FrameLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        >        <ListView            android:id="@+id/listView"            android:layout_width="match_parent"            android:layout_height="match_parent"/>        <include            layout="@layout/bottom_bar"            android:layout_width="match_parent"            android:layout_height="57dp"            android:layout_gravity="bottom"/>    </FrameLayout></LinearLayout>

bottom_bar.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="57dp"    android:orientation="vertical"    android:id="@+id/bottom"    >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_gravity="center_vertical"        android:gravity="center_vertical"        android:orientation="horizontal"        android:paddingLeft="10dp"        android:paddingRight="10dp">        <ImageView            android:id="@+id/imageView"            android:layout_width="45dp"            android:layout_height="45dp"            android:scaleType="fitXY"            android:contentDescription="@null"            android:src="@drawable/default_cover"/>        <LinearLayout            android:layout_width="60dp"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:orientation="vertical">            <TextView                android:id="@+id/music_title"                style="@style/AppTheme.Text"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:ellipsize="end"                android:singleLine="true"                android:text="无音乐"                android:textSize="16sp" />            <TextView                android:id="@+id/music_artist"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:ellipsize="end"                android:singleLine="true"                android:textSize="12sp" />        </LinearLayout>        <ImageView            android:layout_width="wrap_content"            android:layout_height="57dp"            android:id="@+id/play"            android:contentDescription="@null"            android:src="@drawable/ic_play_bar_btn_play"/>        <ImageView            android:layout_width="wrap_content"            android:layout_height="57dp"            android:id="@+id/next"            android:contentDescription="@null"            android:src="@drawable/ic_play_bar_btn_next"/>        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:id="@+id/playList"            android:contentDescription="@null"            android:src="@drawable/ic_play_bar_btn_playlist"/>    </LinearLayout>    <SeekBar        android:layout_width="match_parent"        android:layout_height="2dp"        android:layout_gravity="bottom"/></LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="57dp"    android:orientation="vertical">        <TextView            android:id="@+id/music"            android:layout_width="match_parent"            android:layout_height="wrap_content" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="left"            android:ems="15"            android:id="@+id/artist"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:id="@+id/duration"/>    </LinearLayout></LinearLayout>

java代码

            package com.zzu.wangyujiao.mt41056;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.Fragment;import androidx.viewpager.widget.ViewPager;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.provider.BaseColumns;import android.provider.ContactsContract;import android.provider.MediaStore;import android.view.ContextMenu;import android.view.View;import android.widget.Adapter;import android.widget.AdapterView;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import org.w3c.dom.Text;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.security.PrivateKey;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ImageView play;    private ImageView next;    private ImageView playList;    private TextView music_title;    private TextView music_artist;    private ImageView imageView;    private ListView listView;    private LinearLayout bottom;    private TextView artist;    private LocalMusicFragment localMusicFragment;    private static List<Music> musicList=new ArrayList<>();    private static Cursor cursor;    private MediaPlayer mediaPlayer;    private static int state=0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        play=findViewById(R.id.play);        next=findViewById(R.id.next);        playList=findViewById(R.id.playList);        music_artist=findViewById(R.id.music_artist);        music_title=findViewById(R.id.music_title);        imageView=findViewById(R.id.imageView);        listView=findViewById(R.id.listView);        bottom=findViewById(R.id.bottom);        artist=findViewById(R.id.artist);        scanMusic(this);        SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.musiclist,cursor,new String[]{MediaStore.Audio.AudioColumns.TITLE,MediaStore.Audio.AudioColumns.ARTIST,MediaStore.Audio.AudioColumns.DURATION},new int[]{R.id.music,R.id.artist,R.id.duration});        listView.setAdapter(adapter);        bottom.setEnabled(false);        play.setEnabled(false);        next.setEnabled(false);        mediaPlayer=new MediaPlayer();        View.OnClickListener listener=new View.OnClickListener() {            @Override            public void onClick(View v) {                switch (v.getId()){                    case R.id.bottom:                        Toast.makeText(MainActivity.this,"this is liatview",Toast.LENGTH_SHORT).show();                        break;                    case R.id.play:                        if(mediaPlayer.isPlaying()){                            mediaPlayer.pause();                            play.setImageResource(R.drawable.ic_play_bar_btn_play);                        }else{                            mediaPlayer.start();                            play.setImageResource(R.drawable.ic_play_bar_btn_pause);                        }                        Toast.makeText(MainActivity.this,"this is play",Toast.LENGTH_SHORT).show();                        break;                    case R.id.next:                        break;//                    case R.id.prev://                        break;                }            }        };        //为listView添加监控        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                state=position;                mediaPlayer.stop();                mediaPlayer=null;                mediaPlayer=new MediaPlayer();                Toast.makeText(MainActivity.this,musicList.get(position).path,Toast.LENGTH_SHORT).show();                try {                    mediaPlayer.setDataSource(musicList.get(position).path);                    mediaPlayer.prepare();                    mediaPlayer.start();                } catch (IOException e) {                    e.printStackTrace();                }                music_title.setText(musicList.get(position).title);                music_artist.setText(musicList.get(position).artist);                play.setImageResource(R.drawable.ic_play_bar_btn_pause);                play.setEnabled(true);                next.setEnabled(true);                imageView.setImageBitmap(getAlbumArt(musicList.get(position).albumId));            }        });        bottom.setOnClickListener(listener);        play.setOnClickListener(listener);        next.setOnClickListener(listener);    }    private String getAlbum(long albumId){        String mUriAlbums="content://media/external/audio/albums";        String[] projection=new String[]{"album_art"};        Cursor cur=MainActivity.this.getContentResolver().query(Uri.parse(mUriAlbums+"/"+Long.toString(albumId)),projection,null,null,null);        String album_art=null;        if (cur.getCount()>0&&cur.getColumnCount()>0){            cur.moveToNext();            album_art=cur.getString(0);        }        cur.close();        return album_art;    }    private Bitmap getAlbumArt(long albumId) {        String mUriAlbums="content://media/external/audio/albums";        String[] projection=new String[]{"album_art"};        Cursor cur=MainActivity.this.getContentResolver().query(Uri.parse(mUriAlbums+"/"+Long.toString(albumId)),projection,null,null,null);        String album_art=null;        if (cur.getCount()>0&&cur.getColumnCount()>0){            cur.moveToNext();            album_art=cur.getString(0);        }        cur.close();        Bitmap bm=null;        if (album_art!=null){            bm=BitmapFactory.decodeFile(album_art);        }else{            bm=BitmapFactory.decodeResource(getResources(),R.drawable.default_cover);        }        return bm;    }    public static void scanMusic(Context context){        musicList.clear();        cursor=context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                new String[]{BaseColumns._ID,                        MediaStore.Audio.AudioColumns.IS_MUSIC,                        MediaStore.Audio.AudioColumns.TITLE,                        MediaStore.Audio.AudioColumns.ARTIST,                        MediaStore.Audio.AudioColumns.ALBUM,                        MediaStore.Audio.AudioColumns.ALBUM_ID,                        MediaStore.Audio.AudioColumns.DATA,                        MediaStore.Audio.AudioColumns.DISPLAY_NAME,                        MediaStore.Audio.AudioColumns.SIZE,                        MediaStore.Audio.AudioColumns.DURATION},null,null,                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);        if (cursor==null){            return;        }        while(cursor.moveToNext()){            //是否为音乐            int isMusic=cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));            if(isMusic==0){                continue;            }            long id=cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));            String title = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE)));            // 艺术家            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST));            // 专辑            String album = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM)));            // 专辑封面id,根据该id可以获得专辑封面图片            long albumId = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM_ID));            // 持续时间            long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));            // 音乐文件路径            String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA));            // 音乐文件名            String fileName = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DISPLAY_NAME)));            // 音乐文件大小            long fileSize = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));            Music music = new Music();            music.setId(id);            music.setTitle(title);            music.setArtist(artist);            music.setAlbum(album);            music.setAlbumId(albumId);            music.setDuration(duration);            music.setPath(path);            music.setFileName(fileName);            music.setFileSize(fileSize);            musicList.add(music);        }    }}

更多相关文章

  1. 播放raw中的音乐范例
  2. Android(安卓)应用界面开发笔记 Service
  3. Android(安卓)Service播放音乐
  4. Android音乐播放器【支持:速率调节,音调调节,采样率调节】
  5. Android(安卓)编程案例-本地音乐播放器源码及使用注意事项
  6. Android视频播放时停止后台运行的方法
  7. Android(安卓)4.0音乐问题
  8. Android前台服务 音乐播放器 前台服务
  9. android实现音乐播放器进度条效果

随机推荐

  1. c语言中“switch case”语句怎么用?
  2. 详解C++ 多态公有继承
  3. c语言中什么是逗号运算符并举例
  4. strcpy函数的作用是什么?
  5. C++如何简单输出当前日期时间
  6. c语言中合法标识符有哪些
  7. C语言有几种注释方式
  8. C++在构造函数中使用new时,需要注意这些事
  9. 在什么语言中字符串以\0标志字符串的结
  10. 声明动态数组的语句怎么写