androdi Studio 51 mp3

第一步activity—main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:id="@+id/local_music_bottomlayout">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="#9933FA"/>
        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@mipmap/icon_song"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:id="@+id/local_music_bottom_iv_icon"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/local_music_bottom_tv_song"
            android:text=""
            android:layout_toRightOf="@+id/local_music_bottom_iv_icon"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:textSize="16sp"
            android:textStyle="bold"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/local_music_bottom_tv_singer"
        android:text=""
        android:textSize="12sp"
        android:layout_below="@+id/local_music_bottom_tv_song"
        android:layout_alignLeft="@+id/local_music_bottom_tv_song"
        android:layout_marginTop="10dp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/local_music_bottom_iv_next"
            android:layout_centerVertical="true"
            android:src="@mipmap/icon_next"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/local_music_bottom_iv_play"
            android:layout_centerVertical="true"
            android:src="@mipmap/icon_play"
            android:layout_toLeftOf="@+id/local_music_bottom_iv_next"
            android:layout_marginRight="20dp"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/local_music_bottom_iv_last"
            android:layout_centerVertical="true"
            android:src="@mipmap/icon_last"
            android:layout_toLeftOf="@+id/local_music_bottom_iv_play"
            android:layout_marginRight="20dp"/>
    </RelativeLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/local_music_rv"
        android:layout_above="@+id/local_music_bottomlayout">
    </androidx.recyclerview.widget.RecyclerView>
</RelativeLayout>

第二步item-local-music.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="10dp"
    app:contentPadding="10dp"
    app:cardCornerRadius="10dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        
        <TextView
            android:id="@+id/item_local_music_num"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:layout_centerVertical="true"
            android:textSize="24sp"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/item_local_music_song"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/item_local_music_num"
            android:text=""
            android:textSize="18sp"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/item_local_music_singer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text=""
            android:layout_below="@+id/item_local_music_song"
            android:layout_alignLeft="@+id/item_local_music_song"
            android:layout_marginTop="10dp"
            android:textSize="14sp"
            android:textStyle="bold"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/item_local_music_album"
            android:text=""
            android:layout_toRightOf="@+id/item_local_music_singer"
            android:layout_alignTop="@+id/item_local_music_singer"
            android:textSize="14sp" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/item_local_music_durtion"
            android:layout_below="@+id/item_local_music_singer"
            android:layout_alignParentRight="true"
            android:text="3:52"/>
    </RelativeLayout>
    
</androidx.cardview.widget.CardView>

第三步  权限
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

第四步 
package com.example.mymusic02;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.ContentResolver;
import android.database.Cursor;
import android.media.MediaParser;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity implements OnClickListener {

    ImageView nextIv,playIv,lastIv;
    TextView singerTv,songTv;
    RecyclerView musicRv;

    List<LocalMusicBean> mDatas;
    private LocalMusicAdater adapter;

    private  int position;
    int currnetPalyPosition=-1;
    int currentPausePositionInSong=0;
    MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        mediaPlayer=new MediaPlayer();

        mDatas=new ArrayList<>();//z这里有两个选择
        //创建适配器
        adapter=new LocalMusicAdater(this,mDatas);
        musicRv.setAdapter(adapter);
        //s设置布局管理器
        LinearLayoutManager layoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        musicRv.setLayoutManager(layoutManager);
        //加载本地数据源
        loadLocalMusicData();
        //设置点击监听事件
        setEventListener();

    }

    private void setEventListener() {
        adapter.setOnItemClickListener(new LocalMusicAdater.OnItemClickListener() {
            @Override
            public void OnItemClick(View view, int position) {
                currnetPalyPosition=position;
                LocalMusicBean musicBean=mDatas.get(position);
                playMusicInMusicBean(musicBean);

            }
        });
    }

    public void playMusicInMusicBean(LocalMusicBean musicBean) {
        //she设置歌曲名  歌手名字
        singerTv.setText(musicBean.getSinger());
        songTv.setText(musicBean.getSong());
        stopMusic();
        //chongz重置多媒体播放器
        mediaPlayer.reset();
        try {
            mediaPlayer.setDataSource(musicBean.getPath());
            palyMusic();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    private void palyMusic() {
        if(mediaPlayer!=null&&!mediaPlayer.isPlaying()){
            if(currentPausePositionInSong==0){
                try {
                    mediaPlayer.prepare();
                    mediaPlayer.start();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else {
                //zha站厅到
                mediaPlayer.seekTo(currentPausePositionInSong);
                mediaPlayer.start();

            }

            playIv.setImageResource(R.mipmap.icon_pause);
        }

    }

    private void pauseMusic() {
            if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
                currentPausePositionInSong=mediaPlayer.getCurrentPosition();
                mediaPlayer.pause();
                playIv.setImageResource(R.mipmap.icon_play);

            }
    }

    private void stopMusic() {
        if(mediaPlayer!=null){
            currentPausePositionInSong=0;
            mediaPlayer.pause();
            mediaPlayer.seekTo(0);
            mediaPlayer.stop();
            playIv.setImageResource(R.mipmap.icon_play);

        }

    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
        stopMusic();
    }

    private void loadLocalMusicData() {
        //加载本地Mp3 文件
        // 获取contentResolver对象
        ContentResolver resolver=getContentResolver();
        //获取本地音乐存储urid
        Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

        Cursor cursor=resolver.query(uri,null,null,null,null);

        int id=0;
        while(cursor.moveToNext()){
            String song = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String singer=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            String album=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
            id++;
            String sid=String.valueOf(id);
            String path=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            long duration=cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
            SimpleDateFormat sdf=new SimpleDateFormat("mm:ss");
            String time = sdf.format(new Date(duration));
            LocalMusicBean bean=new LocalMusicBean(sid,song,singer,album,time,path);
            mDatas.add(bean);

        }

        adapter.notifyDataSetChanged();



    }

    private void initView() {

        nextIv=findViewById(R.id.local_music_bottom_iv_next);
        playIv=findViewById(R.id.local_music_bottom_iv_play);
        lastIv=findViewById(R.id.local_music_bottom_iv_last);
        singerTv=findViewById(R.id.local_music_bottom_tv_singer);
        songTv=findViewById(R.id.local_music_bottom_tv_song);
        musicRv=findViewById(R.id.local_music_rv);

        nextIv.setOnClickListener(this);
        lastIv.setOnClickListener(this);
        playIv.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.local_music_bottom_iv_last:
                if(currnetPalyPosition==0){
                    Toast.makeText(this,"已经是第一首歌曲。",Toast.LENGTH_SHORT).show();
                }
                currnetPalyPosition=currnetPalyPosition-1;
                LocalMusicBean lastBean=mDatas.get(currnetPalyPosition);
                playMusicInMusicBean(lastBean);
                break;
            case R.id.local_music_bottom_iv_next:
                    if(currnetPalyPosition==mDatas.size()-1){
                        Toast.makeText(this,"next Music...",Toast.LENGTH_SHORT).show();
                    }
                    currnetPalyPosition=currnetPalyPosition+1;
                    LocalMusicBean nextBean=mDatas.get(currnetPalyPosition);
                    playMusicInMusicBean(nextBean);
                break;
            case R.id.local_music_bottom_iv_play:
                if(currnetPalyPosition==-1){
                    Toast.makeText(this, "last Music...", Toast.LENGTH_SHORT).show();
                    return;
                }
                if(mediaPlayer.isPlaying()){
                    pauseMusic();

                }else {
                    palyMusic();

                }
                break;

        }

    }


}

第五步LocalMusicAdater.java
package com.example.mymusic02;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

class LocalMusicAdater extends RecyclerView.Adapter<LocalMusicAdater.LocalMusicViewHolder>{

    Context context;
    List<LocalMusicBean> mDatas;

    OnItemClickListener onItemClickListener;
    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener=onItemClickListener;
    }
    public interface OnItemClickListener{
        public void OnItemClick(View view,int position);
    }

    public LocalMusicAdater(Context context, List<LocalMusicBean> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    @NonNull
    @Override
    public LocalMusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(context).inflate(R.layout.item_local_music,parent,false);
        LocalMusicViewHolder holder=new LocalMusicViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull LocalMusicViewHolder holder, final int position) {
        LocalMusicBean musicBean=mDatas.get(position);
        holder.idTv.setText(musicBean.getId());
        holder.songTv.setText(musicBean.getSong());
        holder.singerTv.setText(musicBean.getSinger());
        holder.albumTv.setText(musicBean.getAlbum());
        holder.timeTv.setText(musicBean.getDuration());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onItemClickListener.OnItemClick(view,position);


            }
        });

    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    class LocalMusicViewHolder extends RecyclerView.ViewHolder{
        TextView idTv,songTv,singerTv,albumTv,timeTv;
        public LocalMusicViewHolder(@NonNull View itemView) {
            super(itemView);
            idTv=itemView.findViewById(R.id.item_local_music_num);
            songTv=itemView.findViewById(R.id.item_local_music_song);
            singerTv=itemView.findViewById(R.id.item_local_music_singer);
            albumTv=itemView.findViewById(R.id.item_local_music_album);
            timeTv=itemView.findViewById(R.id.item_local_music_durtion);


        }
    }
}

第六步  LocalMusicBean.java
package com.example.mymusic02;

public class LocalMusicBean {
    private String id;
    private String song;
    private String singer;
    private String album;
    private String duration;
    private String path;

    public LocalMusicBean() {
    }

    public LocalMusicBean(String id, String song, String singer, String album, String duration, String path) {
        this.id = id;
        this.song = song;
        this.singer = singer;
        this.album = album;
        this.duration = duration;
        this.path = path;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getSong() {
        return song;
    }

    public void setSong(String song) {
        this.song = song;
    }

    public String getSinger() {
        return singer;
    }

    public void setSinger(String singer) {
        this.singer = singer;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getDuration() {
        return duration;
    }

    public void setDuration(String duration) {
        this.duration = duration;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
    ![请添加图片描述](https://img-blog.csdnimg.cn/20200807023411442.png)


4444请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在以下网站下载Android Studio汉化包: 1. https://www.androiddevtools.cn/:这是一个专门为Android开发者提供的工具网站,您可以在该网站下载Android Studio汉化包。 2. https://www.jb51.net/tools/androidstudio.html:这是一个综合性的技术网站,您可以在该网站下载Android Studio汉化包。 3. https://www.lanzous.com/i8yj2gj:这是一个网盘分享链接,您可以在该链接中下载Android Studio汉化包。 请注意,下载汉化包时要注意安全性,尽量选择官方或可信的网站下载。同时,安装汉化包前请备份好您的Android Studio项目,以免数据丢失。 ### 回答2: Android Studio是一款由Google开发的集成开发环境(IDE),它非常适合Android应用程序的开发。虽然它原本是用英语开发的,但许多开发者都希望在他们的本地语言环境中使用该工具。因此,为了方便用户,在社区的支持下,有人着手翻译了Android Studio的汉化包,以帮助中文用户使用这个工具。 首先,在搜索引擎中输入“Android Studio中文汉化包”可以找到一些网站提供免费的下载。根据个人喜好和需求可选择不同的汉化包版本,并注意下载来源的真实和安全性。安装前要确保Android Studio已经卸载干净,否则可能会影响安装过程中的稳定性。 其次,安装汉化包时,需要将下载的汉化包文件复制到Android Studio的安装目录下,具体操作方法为:首先,在Android Studio中打开“file”菜单,然后选择“sittings”选项,进入“Appearance & Behavior>System Settings>Updates”菜单,在这里选择“check(“检查更新”)按钮并在弹出的对话框内选择“不要提示更新”选项,然后关闭Android Studio;接下来,在Android Studio目录找到“plugins”目录,将汉化包文件复制到该目录中;最后,重新启动Android Studio并选择“OK”按钮即可完成安装。 值得注意的是,安装汉化包时需要选择适合自己版本的汉化包,否则安装可能会失败,而且汉化包无法兼容新的功能和更新,所以需要定期更新新版本。在安装时切记备份好重要的数据,以免造成数据丢失。 总体来讲,下载Android Studio的汉化包并不难,在网络上可以找到很多资源。但是需要注意下载的版本和来源的真实性,因为安装错误可能会给系统带来安全问题和数据丢失。 ### 回答3: Android Studio是一种用于开发Android应用程序的集成开发环境(IDE),具有强大的代码编辑器,调试工具和性能测试器等。然而,许多初学者和非英语国家的程序员可能会遇到语言不通的问题。为此,许多网站提供了Android Studio汉化包的下载。下面将介绍一些安全可靠的下载地址和安装步骤。 首先,可以到官方网站上寻找Android Studio的汉化包。在 "Settings" 节点下,选择 "Appearance & Behavior",然后选择 "Appearance" 下的 "UI Options"。 在 "Edit Custom Properties" 中添加以下代码: idea.locale=zh_CN 点击 "OK"并重新启动 Android Studio,即可实现界面汉化。 如果你想更彻底地将Android Studio汉化,那么可以到第三方网站上下载汉化包。比较推荐的网站有: 1. CSDN博客:https://blog.csdn.net/sinat_38024820/article/details/104917233 2. 百度网盘:链接:https://pan.baidu.com/s/1i6swc0cLWeQ9tJN_Iu9bkw 提取码:6lvv 下载完成后,按以下步骤进行安装: 1.打开Android Studio 2.选择 File -> Settings 3.展开 Appearance & Behavior 选择 System Settings -> Updates 4.在 Updates 下面找到 Show Details选项 5.最后点击 Check Now按钮,然后在Updates区域你会看到 Android_Localization_Kit 6.点击下载,安装,然后重启 Android Studio,重新加载汉化包就可以看到Android Studio已经汉化成功了。 注意事项: 1.在下载任何匿名来源的文件之前,请确保使用杀毒软件进行扫描以检查其是否安全。 2.下载汉化包时请选择与自己所使用的Android Studio版本相对应的版本,以免出现兼容性问题。 3.在安装汉化包之前,最好备份原版的Android Studio,在遇到问题时可以方便地还原。 希望这篇文章能够对大家汉化Android Studio有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值