安卓实训:音乐播放器V01日志

安卓实训:音乐播放器V01日志,第1张

概述音乐播放器V01:实现公共目录music的音乐读取播放读取出的音乐实现步骤:效果准备工作创建安卓应用拷贝图片素材向DDMS里添加音乐创建播放和暂停按钮背景图片选择器主布局activity_main.xml在项目清单文件里授权读外置存储卡和更换应用图标MainActivity.java总结效果

音乐播放器V01:
实现公共目录music的音乐读取
播放读取出的音乐

实现步骤:效果准备工作创建安卓应用拷贝图片素材向DDMS里添加音乐创建播放和暂停按钮背景图片选择器主布局activity_main.xml在项目清单文件里授权读外置存储卡和更换应用图标MainActivity.java总结

效果

准备工作创建安卓应用

拷贝图片素材

向DDMS里添加音乐

SDK—》tools—》monitor.bat

创建播放和暂停按钮背景图片选择器


播放按钮


暂停按钮

主布局activity_main.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@drawable/background"    androID:orIEntation="vertical"    androID:padding="20dp"    tools:context=".MainActivity">    <TextVIEw        androID:ID="@+ID/tvMusicname"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:textSize="20sp"        androID:textcolor="#0000FF"/>    <linearLayout        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:orIEntation="horizontal"        androID:gravity="center" >        <button            androID:ID="@+ID/btnPlayOrPause"            androID:layout_wIDth="60dp"            androID:layout_height="50dp"            androID:onClick="doPlayOrPause"            androID:background="@drawable/play_button_selector"/>    </linearLayout></linearLayout>
在项目清单文件里授权读外置存储卡和更换应用图标

MainActivity.java
import androIDx.appcompat.app.AppCompatActivity;import androIDx.core.app.ActivityCompat;import androID.Manifest;import androID.content.pm.PackageManager;import androID.media.MediaPlayer;import androID.os.Bundle;import androID.os.Environment;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.TextVIEw;import androID.Widget.Toast;import java.io.file;import java.io.IOException;/** * 基于存储卡的音乐播放器v1.0 */public class MainActivity extends AppCompatActivity {    private MediaPlayer mp;//媒体播放器    private file musicDir;//音乐存放目录    private String musicname;//音乐文件名    private TextVIEw tvMusicname;//音乐名标签    private button btnPlayOrPause;//播放、暂停按钮    private int currentposition;//音乐当前的播放位置    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //利用布局资源设置用户界面        setContentVIEw(R.layout.activity_main);        //通过资源标识符获取控件实例        tvMusicname = findVIEwByID(R.ID.tvMusicname);        btnPlayOrPause = findVIEwByID(R.ID.btnPlayOrPause);        // 定义存储读写权限数组        String[] PERMISSIONS_STORAGE = {                Manifest.permission.READ_EXTERNAL_STORAGE,                Manifest.permission.WRITE_EXTERNAL_STORAGE        };        // 检查是否有读权限        int permission = ActivityCompat.checkSelfPermission(this, PERMISSIONS_STORAGE[0]);        // 如果没有授权,那么就请求写权限        if (permission != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, 0);        }        //获取音乐存放目录        musicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);        try {            //获取音乐文件存放目录里的第一首音乐文件名            musicname = musicDir.List()[0];            //设置音乐名标签            tvMusicname.setText("音乐名:" + musicname.substring(0, musicname.lastIndexOf(".")));        } catch (Exception e) {            e.printstacktrace();            Toast.makeText(this, "存储卡Music目录里没有music音乐文件", Toast.LENGTH_SHORT).show();        }        //实例化媒体播放器        mp = new MediaPlayer();        //给媒体播放器注册完成监听器        mp.setonCompletionListener(new MediaPlayer.OnCompletionListener() {            @OverrIDe            public voID onCompletion(MediaPlayer mp) {                //提示用户当前音乐播放完毕                Toast.makeText(MainActivity.this, "当前音乐播放完毕", Toast.LENGTH_SHORT).show();                //d当前播放位置清零                currentposition = 0;                //按钮图标由【暂停】变为【播放】                btnPlayOrPause.setBackgroundResource(R.drawable.play_button_selector);            }        });    }    /**     * 播放方法     */    private voID play() throws IOException {        //重置媒体播放器        mp.reset();        //设置播放源(完整音乐名=音乐目录+音乐名)        mp.setDataSource(musicDir.getabsolutePath() + "/" + musicname);        //缓冲播放源(从存储卡加载到内存)        mp.prepare();        //定位到暂停时的播放位置        mp.seekTo(currentposition);        //启动音乐播放        mp.start();        //按钮图标由【播放】变为【暂停】        btnPlayOrPause.setBackgroundResource(R.drawable.pause_button_selector);    }    /**     * 暂停方法     */    private voID pause(){        //暂停播放        mp.pause();        //保存音乐播放的当前进度        currentposition = mp.getCurrentposition();        //按钮图标由【暂停】变为【播放】        btnPlayOrPause.setBackgroundResource(R.drawable.play_button_selector);    }    public voID doPlayOrPause(VIEw vIEw) throws IOException{        //判断音乐是否在播放        if (mp.isPlaying()) {            //暂停音乐            pause();        } else {            //播放音乐            play();        }    }    /**     * 销毁回调方法,释放资源     */    @OverrIDe    protected voID onDestroy() {        super.onDestroy();        //判断音乐是否在播放        if (mp.isPlaying()) {            mp.stop();        }        //释放媒体播放器        mp.release();        //销毁媒体播放器        mp = null;    }}
总结

实训不同于初学时那么枯燥,变得非常有趣,特别是项目成功运行后那更是感到开心。音乐播放器V01代码上容易理解,因为我用的雷电模拟器所以也不用赋DDMS文件夹权限。

总结

以上是内存溢出为你收集整理的安卓实训:音乐播放器V01日志全部内容,希望文章能够帮你解决安卓实训:音乐播放器V01日志所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存