这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
本篇文章主要介绍了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"
- />
- ...
来源: http://www.phperz.com/article/17/0913/345712.html