android音乐播放简单实现的简单示例(MediaPlayer)

利用MediaPlayer完成一个最简单的音乐播放。这个基本的控制掌握后,可直接利用为背景乐的控制。

为了能够实现播放,在界面方面,我们需要三个控制按钮,分别是:Play(播放)、Pause(暂停)、Stop(停止)

请看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:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.cofox.myaudio.MainActivity"> <Button android:id="@+id/btnPlay" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="Play"/> <Button android:id="@+id/btnPause" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="Pause"/> <Button android:id="@+id/btnStop" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="Stop"/> </LinearLayout>

在MainActivity.java首先声明一个 MediaPlayer 播放器。

private MediaPlayer mediaPlayer = new MediaPlayer();

由于音乐播放也是需要专门的权限的,所以在 onCreate 中动态申请权限,然后才初始化播放器。

//权限判断,如果没有权限就请求权限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { initMediaPlayer();//初始化播放器 MediaPlayer }

播放器的初始化方法

private void initMediaPlayer() { try { File file = new File(Environment.getExternalStorageDirectory(), "music.mp3"); mediaPlayer.setDataSource(file.getPath());//指定音频文件路径 mediaPlayer.setLooping(true);//设置为循环播放 mediaPlayer.prepare();//初始化播放器MediaPlayer } catch (Exception e) { e.printStackTrace(); } }

在 onCreate中需要实例化三个按钮

Button btnPlay = (Button) findViewById(R.id.btnPlay); Button btnPause = (Button) findViewById(R.id.btnPause); Button btnStop = (Button) findViewById(R.id.btnStop); btnPlay.setOnClickListener(this); btnPause.setOnClickListener(this); btnStop.setOnClickListener(this);

btnPlay.setOnClickListener(this) 这种写法,需要类的扩展支持。所以,MainActivity 增加了 implements View.OnClickListener

复制代码 代码如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

获取权限的部分,需要用户操作,根据权限的给予情况,软件要做出不同的反应。获得了权限,就去初始化;没获得权限,就去通知用户。

@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ initMediaPlayer(); }else{ Toast.makeText(this, "拒绝权限,将无法使用程序。", Toast.LENGTH_LONG).show(); finish(); } break; default: } }

统一在一个 onClick 方法内处理界面所有按钮的点击事件。

@Override public void onClick(View v) { switch (v.getId()){ case R.id.btnPlay: //如果没在播放中,立刻开始播放。 if(!mediaPlayer.isPlaying()){ mediaPlayer.start(); } break; case R.id.btnPause: //如果在播放中,立刻暂停。 if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); } break; case R.id.btnStop: //如果在播放中,立刻停止。 if(mediaPlayer.isPlaying()){ mediaPlayer.reset(); initMediaPlayer();//初始化播放器 MediaPlayer } break; default: break; } }

注意 case R.id.btnStop 中,mediaPlayer.reset() 后,我们重新对播放器进行了初始化。如果没有这条语句,实测的效果是点击了停止按钮后,再点击开始按钮是无法顺利播放音乐的。感兴趣的朋友可以实验一下。

onDestroy() 的逻辑很容易理解,就是彻底清理音乐播放占用的资源了。

@Override protected void onDestroy() { super.onDestroy(); if(mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.release(); } }

完整代码示例:

package com.cofox.myaudio; import android.Manifest; import android.content.pm.PackageManager; import android.media.MediaPlayer; import android.os.Environment; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.io.File; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private MediaPlayer mediaPlayer = new MediaPlayer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnPlay = (Button) findViewById(R.id.btnPlay); Button btnPause = (Button) findViewById(R.id.btnPause); Button btnStop = (Button) findViewById(R.id.btnStop); btnPlay.setOnClickListener(this); btnPause.setOnClickListener(this); btnStop.setOnClickListener(this); //权限判断,如果没有权限就请求权限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { initMediaPlayer();//初始化播放器 MediaPlayer } } private void initMediaPlayer() { try { File file = new File(Environment.getExternalStorageDirectory(), "music.mp3"); mediaPlayer.setDataSource(file.getPath());//指定音频文件路径 mediaPlayer.setLooping(true);//设置为循环播放 mediaPlayer.prepare();//初始化播放器MediaPlayer } catch (Exception e) { e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ initMediaPlayer(); }else{ Toast.makeText(this, "拒绝权限,将无法使用程序。", Toast.LENGTH_LONG).show(); finish(); } break; default: } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnPlay: //如果没在播放中,立刻开始播放。 if(!mediaPlayer.isPlaying()){ mediaPlayer.start(); } break; case R.id.btnPause: //如果在播放中,立刻暂停。 if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); } break; case R.id.btnStop: //如果在播放中,立刻停止。 if(mediaPlayer.isPlaying()){ mediaPlayer.reset(); initMediaPlayer();//初始化播放器 MediaPlayer } break; default: break; } } @Override protected void onDestroy() { super.onDestroy(); if(mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.release(); } } }

当然,你不能忘记了在 AndroidManifest.xml 添加权限声明。

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cofox.myaudio"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ...

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-11-09 04:47:27

android音乐播放简单实现的简单示例(MediaPlayer)的相关文章

Android音乐播放器制作 加入控制台(三)

Android音乐播放器的运行效果 这篇博客还是接着上一篇Android音乐播放器制作写的,没看过的可以去看看. 其中这个效果(圆形ImageView和控件匀速旋转): 我前面的博客中写到过我就不一一细说了: 图片变成圆形:android图片处理,让图片变成圆形 旋转:android图片处理:让图片一直匀速旋转 文字跑马灯:TextView的跑马灯效果以及TextView的一些属性 具体实现 首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一个invisible,为了让他点

android音乐播放器中播放模式的设计

在音乐播放器中,播放模式一般放在音乐播放完毕后自动识别,如下给出逻辑代码,可根据需要添加合适 的代码 public static final int ALL = 0;//全部循环 public static final int SINGLE = 1;//单曲循环 public static final int RANDOM = 2;//随机 // 一首歌播放完成后(这里设置播放模式) public class Completed implements OnCompletionListener {

音效设置-android音乐播放器设置音效

问题描述 android音乐播放器设置音效 我在做一个音乐播放器,有一个功能是音效设置,我在网上翻了一下没有找到类似的技术.希望大家知道的能帮忙解决一下. 解决方案 Android有一个系统控制音效的 AudioManager: 可以根据 AudioManager 的对象获取音效服务:

android音乐播放器(改进版)

   这个是对以前做的那个音乐播放器的优化版本,因为以前把控制音乐播放放在了activity里,这个版本已经放在了service中,在服务中控制播放音乐,通过BroadcastReceiver传递一些数据,并且实现了在电话打过来时,停止播放音乐,打完电话继续播放.当然还有上一个版本的甩歌功能,用的是加速度传感器,控制音乐的播放暂停.最突出的功能算是加入了歌词同步的功能,真正实现了音乐歌词的同步播放.废话不多说看几张截图吧:         主界面还是和以前一样,点击某一首进入播放界面: 外观上看

关于android音乐播放器后台音乐服务停止的问题

问题描述 关于android音乐播放器后台音乐服务停止的问题 我在做一个android音乐播放器,当程序比较多的时候,手机会自动杀掉我的进程,但是我的服务还是在的,也就是0个进程和1个服务.可是我的服务里的音乐播放就停止了,随着进程被杀掉,音乐也停止了.可是我的服务还在啊,音乐为什么停了,我不知道为什么.求解惑. 解决方案 startService() 程序开启后服务不会随程序关闭而关闭,需要主动关闭 bindService() 服务会随着程序关闭而关闭 解决方案二: 请好好复习Service生

七大主流Android音乐播放器横向评测

核心功能对比随着智能手机和3G网络的普及,移动互联网日益成为人们生活娱乐的重心之一.在音乐领域,竞争也十分激烈,在PC之后,几大提供音乐服务的厂商正在加紧占据手机客户端.本期我们在 Android平台挑选了七家国内主流音乐播放器进行评测,主要针对核心功能.操作体验.曲库丰富程度.应用细节几方面进行横向对比.这七家主流音乐播放器分别是多米音乐.QQ音乐.酷我音乐.虾米音乐.酷狗音乐.天天动听和百度ting.以下是评测详情: 一.核心功能对比1.整合本地音乐本地音乐仍然是Android音乐播放器不可

android音乐播放器开发

问题描述 android音乐播放器开发 怎么实现让mp3格式的音乐显示在列表上并单击播放我是新手可不可以说的详细点 解决方案 ? 之所以选择android音乐播放器开发,是因为这里面涉及到了android的四大核心核心组件:Activity,Service,ContentProvider,BroadCast Receiver.对于学习理解这几大组件有着非常实际意义,而且再加上网络歌曲的播放,网络部分也会涉及到,所以还是很全面的一个练手项目.? 先来分析一个手机音乐播放器应该具备的基础功能,1.显

android音乐播放器,音乐暂停时音量逐渐减小的效果怎么做?

问题描述 android音乐播放器,音乐暂停时音量逐渐减小的效果怎么做? QQ音乐,酷狗等音乐播放器,暂停时音量逐渐减小的效果怎么做? 我的做法是: 开个线程改变音频流的音量 audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 1 ,0); 但是这样会有很多问题,所以不想用这种方法.

三星将在CES大展发布Android音乐播放器

三星将会在CES大展上发布Android便携6186.html">播放器.值得注意的是,这并非三星首款Androidhttp://www.aliyun.com/zixun/aggregation/9366.html">音乐播放器,早在十月三星已经发布了YP-G50.新 款的播放器是Galaxy S的缩小版,减掉了电话功能,它的显示屏比YP-G50要大些,配有前置摄像头,可以通过WI-FI进行视频通话.新播放器使用的系统是Android 2.2. 三星Galaxy S智能手机

教你轻松制作Android音乐播放器

欣赏一下我们清爽的界面吧~ 如果是只用activity来制作这样的东西简直是太小儿科了,此处我们当然用的是service 首先我们先上service的代码: 1.如果我们要访问service的属性和方法,那么在activity肯定是以bindservice的方法实现的,而在service中的onbind方法也是必须要实现的,onbind返回的Ibinder对象在activity的serviceconnection中得到使用. 2.activity获取到Ibinder对象,可以进一步获取服务对象和