Pro Android学习笔记(一二九):Media Frameworks(4):JetPlayer、AsyncPlayer和AudioTrack

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei

JetPlayer

SoundPool有内存使用的限制,对于同时播放声音,还可以使用JetPlayer。JetPlayer针对游戏进行裁剪,是一个灵活的根据用户行为播放多种声音的工具,使用了MIDI(Musical Instrument Digital Interface)。在wiki中这样描述:Android平台有一个JET引擎,允许您添加交互播放的JET音频内容到你的应用程序。

Android SDK提供了JETCreator的工具,在tools/Jet/下,需要安装Python才能使用,具体的使用方式参见sdk/docs/guide/topics/media/jet/jetcreator_manual.html。而代码例子可参见http://wiki.eoeandroid.com/JetPlayer

AsyncPlayer

AsyncPlayer顾名思义,是在后台线程中来处理音频的播放。由于异步,因此不知道确切的音频播放的开始和结束,下面是一个小例子。

public class AsyncPlayerDemo extends Activity{
    private AsyncPlayer asyncPlayer = null;
    private String tag = "wei";
   
    @Override
    protected void onResume() { 
        super.onResume();
        asyncPlayer = new AsyncPlayer(tag);
        // 第二个参数是uri,AsyncPlayer可以播放本地的和网络的音频流。,第三个参数是isLooped。AsyncPlayer可以调用多次play(),当调用时,如果之前的音频还没有播放完,就马上停止播放旧的音频,并开始load新的音频,然后播放。
        asyncPlayer.play(this, Uri.parse("
file://" + Environment.getExternalStorageDirectory() + "/steps.mp3"), false, AudioManager.STREAM_MUSIC);
    }

    @Override
    protected void onPause() {
        // 停止播放。
        asyncPlayer.stop();
        super.onPause();
    }
}

AudioTrack

前面谈到的都是从文件中播放音乐,无论是本地还是网络,如果我们要从流中播放,处理字节级别的媒体流,需要使用更底层的AudioTrack类,可以通过write()将音频字节(解码为PCM)写入音频硬件。AudioTrack提供更强大的控制,但也更为复杂。后面,我们将学习到一个同样的底层类AudioRecord,它和AudioTrack的使用相似。

小例子代码在:Pro Android学习:media framworks小例子 

相关链接:我的Android开发相关文章

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值