音乐播放器V01:
实现公共目录music的音乐读取
播放读取出的音乐
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.javaimport 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日志所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)