第一行安卓代码——播放多媒体文件8.4.1

原创 2017年02月02日 10:03:00

8.4.1播放音频
在安卓中播放较长的音频文件,如背景音乐等都是通过MediaPlayer类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使播放音乐的工作变得非常简单。下面是MediaPlayer类中的常用的控制方法

setDataSource() //设置音频文件的位置
prepare() //在播放音频文件之前调用这个方法完成准备工作
start() //开始或继续播放
stop() //停止播放,之后也无法再继续播放
pause() //暂停,可以继续
release() //释放掉与MediaPlayer有关的资源
isPlayering() //是否正在播放
getDuration() //获取载入音乐的时间长度

原理很简单,直接上代码

AndroidManifest.xml中声明用到的权限

...
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
...

布局文件:

<?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:id="@+id/activity_main"
    android:orientation="vertical"
    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="com.example.hms.playaudiotest.MainActivity">

    <Button
        android:id="@+id/play"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Play"
        />
    <Button
        android:id="@+id/stop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Stop"
        />
    <Button
        android:id="@+id/Pause"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Pause"/>
</LinearLayout>

MainActivity

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 play = (Button) findViewById(R.id.play);
        Button stop = (Button) findViewById(R.id.stop);
        Button pause = (Button) findViewById(R.id.Pause);
        play.setOnClickListener(this);
        stop.setOnClickListener(this);
        pause.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();
        }
    }

    @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;
        }
    }
    private void initMediaPlayer() {
        try{
            File file = new File(Environment.getExternalStorageDirectory(),
                    "music.mp3");
            mediaPlayer.setDataSource(file.getPath());
            mediaPlayer.prepare();
        } 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_SHORT).show();
                    finish();
                }
                break;
            default:
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 实现简单媒体播放器功能

一、概述:因为播放视频需要很大的内存,所以必须使用surfaceview , surfaceview 里实现了双缓冲的功能,二、全部代码:/** * @描述 使用surfacevi...
  • lovoo
  • lovoo
  • 2016年05月26日 23:04
  • 1388

第一行代码-8.4 播放多媒体文件

1、播放音频   播放音乐可以通过MediaPlayer实现,下面说明一下MediaPlayer的一些常用的类。 方法名 功能描述 setDataSource() 设置要播放的音频文件的位置 ...

播放多媒体文件的类——Mediaplayer

播放音频 MediaPlayer的工作流程 主函数 布局 随机播放音乐模仿天天动听的音乐播放界面 主函数 MusicAdapter MyService 常量放置类Config activity布局 l...

【Tech-Android-Other】android操作sdcard中的多媒体文件——音乐列表的更新

摘要:   在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除、增加一些多媒体文件,如何让播放列表也更新呢,这里我分享一下自己在项...

android操作sdcard中的多媒体文件(一)——音乐列表的制作

http://www.cnblogs.com/zchajax/archive/2011/04/26/2029832.html ================================...
  • dadoneo
  • dadoneo
  • 2012年06月19日 11:34
  • 1840

android操作sdcard中的多媒体文件——音乐列表的更新

在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除、增加一些多媒体文件,如何让播放列表也更新呢,这里我分享一下自己在项目中的一些解...

android操作sdcard中的多媒体文件(二)——音乐列表的更新

在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除、增加一些多媒体文件,如何让播放列表也更新呢,这里我分享一下自己在项目中的一些解...
  • zwq1457
  • zwq1457
  • 2012年09月29日 09:32
  • 3944

第一行安卓代码——活动的最佳实践2.6

2.6.1 知晓当前在哪一个活动当我们接收别人的代码的时候,很有可能找不到界面对应的活动是哪一个。 我们可以在项目中新建一个BaseActivity类。然后让BaseActivity继承AppCom...

第一行安卓代码——从相册中选择照片8.3.2

8.3.1调用摄像头拍照 修改布局文件和MainActivity 见代码
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一行安卓代码——播放多媒体文件8.4.1
举报原因:
原因补充:

(最多只允许输入30个字)