本文概述
我们可以借助MediaPlayer类在android中播放和控制音频文件。
在这里,我们将看到一个播放音频文件的简单示例。在下一页中,我们将看到控制音频播放(如开始,停止,暂停等)的示例。
MediaPlayer类
android.media.MediaPlayer类用于控制音频或视频文件。
MediaPlayer类的方法
MediaPlayer类的方法很多。其中一些如下:
方法 | 描述 |
---|---|
public void setDataSource(String path) | 设置要使用的数据源(文件路径或http url)。 |
public void prepare() | 为播放器准备同步播放。 |
public void start() | 它开始或继续播放。 |
public void stop() | 停止播放。 |
public void pause() | 暂停播放。 |
public boolean isPlaying() | 检查媒体播放器是否正在播放。 |
public void seekTo(int millis) | 寻求以毫秒为单位的指定时间。 |
public void setLooping(boolean looping) | 将播放器设置为循环播放或不循环播放。 |
public boolean isLooping() | 检查播放器是循环播放还是非循环播放。 |
public void selectTrack(int index) | 它为指定的索引选择一个音轨。 |
public int getCurrentPosition() | 返回当前播放位置。 |
public int getDuration() | 返回文件的持续时间。 |
public void setVolume(float leftVolume, float rightVolume) | 设置此播放器的音量。 |
活动类
让我们编写播放音频文件的代码。在这里,我们将播放sdcard / Music目录中的maine.mp3文件。
package com.example.audiomediaplayer1;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MediaPlayer mp=new MediaPlayer();
try{
mp.setDataSource("/sdcard/Music/maine.mp3");//Write your location here
mp.prepare();
mp.start();
}catch(Exception e){e.printStackTrace();}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
你需要在真实设备上运行它以测试应用程序。
Android MediaPlayer控制音频的示例
让我们看一个简单的示例,以开始,停止和暂停音频播放。
activity_main.xml
从面板上拖动三个按钮以开始,停止和暂停音频播放。现在,xml文件将如下所示:
<RelativeLayout xmlns:androclass="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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="30dp"
android:text="Audio Controller" />
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="48dp"
android:text="start" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="pause" />
<Button
android:id="@+id/button3"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="stop" />
</RelativeLayout>
活动类
让我们编写代码以启动,暂停和停止音频播放器。
package com.example.audioplay;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
Button start, pause, stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.button1);
pause=(Button)findViewById(R.id.button2);
stop=(Button)findViewById(R.id.button3);
//creating media player
final MediaPlayer mp=new MediaPlayer();
try{
//you can change the path, here path is external directory(e.g. sdcard) /Music/maine.mp3
mp.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/Music/maine.mp3");
mp.prepare();
}catch(Exception e){e.printStackTrace();}
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.pause();
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.stop();
}
});
}
}