创建自定义的音频播放应用程序

    Android包含了一个MediaPlayer类,这个类可以用来播放和控制音频和视频。现在我们使用音频功能。MediaPlayer类可用于控制播放的音频/视频文件和流

    最简单的MediaPlayer示例是能否与应用程序一起打包的音频文件,也就是音频文件放在原始资源里面。所以,我们在项目的res文件夹下新建一个文件,叫raw,并加入音频文件。

    1.启动媒体播放器

    位音频文件创建MeidaPlayer非常简单,可以使用静态方法create实例化一个MediaPlayer对象,传入作为上下文的this(活动将源自它)以及音频文件生成的ziyuanID。

    MediaPlayer mediaPlayer=MediaPlayer.create(this.R.raw.androidMp3);

    当然,也可以用构造方法实例化一个MediaPlayer对象:MediaPlayer mediaPlayer=new MediaPlayer();

    之后就可以用mediaPlayer.start();来播放文件了。

      2.控制播放

      MediaPlayer类有多个嵌套的类,他们是监听MedaiPlayer所发送事件的借口。这些事件与状态变化有关。例如,MediaPlayer将对实现OnCompletionListener并通过setOnCompletionListener注册的类调用onCompletion方法,该操作将在音频文件正在播放时执行。下面是一个完整的示例,该活动将无限次的重复,通过使用OnCompletionLitener播放相同的音频文件。在onStart方法中初始化MediaPlayer对象并开始播放;在onStop方法中停止播放和释放资源。

   package com.example.musicdemo;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;


public class MainActivity extends Activity implements OnCompletionListener{
    MediaPlayer mediaPlay;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
    }

@Override
protected void onStart() {
super.onStart();
mediaPlay=MediaPlayer.create(this,R.raw.android);
mediaPlay.setOnCompletionListener(this);
mediaPlay.start();
}

@Override
protected void onStop() {
super.onStop();
mediaPlay.stop();
mediaPlay.release();
}

public void onCompletion(MediaPlayer mp) {
mediaPlay.start();
}

}

    当然,这可以在没有OnCompletionListener的情况下完成,只需简单地通过使用setLooping(true)方法将MediaPlayer设置为循环播放。

    MediaPlayer状态图


    回放控制音频/视频文件和流的管理是作为一个状态机。下面的图显示了生命周期和一个MediaPlayer对象由支持回放控制操作。椭圆表示状态可能驻留在一个MediaPlayer对象。弧线代表回放控制操作,驱动对象状态转换。有两种类型的弧线。用一个弧线箭头代表同步方法调用头,而那些有双箭头代表异步方法调用负责人。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值