您的位置:首页 > 移动开发 > Android开发

最简单Android音乐播放器

2015-11-23 10:21 471 查看
        Android在播放音频和视频方面提供了一套完整的API,可以轻松地编写出一个简单的音频播放器。

        在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下图是一些其中常用的方法:



        用MediaPlayer类播放音乐,首先需要创建出一个 MediaPlayer 对象, 然后调用 setDataSource()方法来设置音频文件的路径, 再调用 prepare()方法使 MediaPlayer进入到准备状态, 接下来调用 start()方法就可以开始播放音频, 调用 pause()方法就会暂停播放,调用 reset()方法就会停止播放。

        下面我们就来写一个史上最简单的Android音乐播放器,先来看一下界面,确实比较简陋。



activity_main.xml的源文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent" >

<Button
android:id="@+id/play"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="paly" />

<Button
android:id="@+id/pause"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Pause"/>

<Button
android:id="@+id/stop"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Stop" />

</LinearLayout>
MainActivity.java源文件
package com.example.luoxn28.tinymusic;

import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import java.io.File;

public class MainActivity extends ActionBarActivity implements View.OnClickListener{
// 用于输出调试信息,表明当前在哪个活动中
private static final String TAG = "MainActivity";

private Button play;
private Button pause;
private Button stop;

private MediaPlayer mediaPlayer = new MediaPlayer();

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

play = (Button) findViewById(R.id.play);
pause = (Button) findViewById(R.id.pause);
stop = (Button) findViewById(R.id.stop);
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);

initMediaPlayer(); // 初始化播放
}

private void initMediaPlayer() {
try {
/* getExternalStorageDirectory()获取SD卡完整路径,比如/storage/emulated/0,music.mp3是存放在手机内存卡的根目录下的,暂时只能播放这一个音乐
* 测试手机为魅蓝note
*/
File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
Log.d(TAG, file.getPath()); // 打印文件完整路径

mediaPlayer.setDataSource(file.getPath()); // 指定音频文件路径
mediaPlayer.prepare(); // 进入准备状态
}
catch (Exception ex) {
ex.printStackTrace();
}
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start(); // 开始播放
}
break;

case R.id.pause:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause(); // 暂停播放
}
break;

case R.id.stop:
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset(); // 停止播放
initMediaPlayer();
}
break;

default:
break;
}
}

/*
* 在onDestroy()方法中将与MediaPlayer相关的资源释放掉
*/
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}


参考资料:
        1、《第一行代码-Android》 播放多媒体文件章节

        2、https://github.com/luoxn28/tinyMusic
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息