OPENGL相关 音效

原创 2017年01月03日 22:07:52

1.1 音效

按照作用可以将音效划分为两类:即时音效和背景音效。这两种音效在Android中的实现技术是不同的。
  1. 即时音效
    即时音效的特点是短暂、可以重复、可以同时播放。比如游戏中的枪炮声碰撞声等。
    由于Android提供的mediaplay会占用大量的系统资源而且在播放时还存在缓冲较大的延时,因此用mediaplay无法实现即时音效。
    android的设计者为即时音效的实现提供了SoundPool类,用于管理和播放程序中的声音资源。
    需要注意由于SoundPool设计的初衷是用于无延时的播放短暂音效,因此实际开发中应该只将长度小雨7s的声音资源放入SoundPool,否则可能会出现加载失败或者占用内存过大。
    SoundPool类的构造器及方法

    实现代码

 //初始化
 private int initSoundPool(){
        soundPool = new SoundPool.Builder().build();
        return soundPool.load(this,R.raw.musictest,1);
 }

//播放
   private void play(){
        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
       int maxVolume =  am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
        float volume = currentVolume/maxVolume;
        soundPool.play(initSoundPool(),volume,volume,1,4,1.0f);
    }
  1. 背景音效
    其实现可以通过SoundPool循环播放也可以通过MediaPlayer来进行播放。
    使用MediaPlayer播放必须熟悉其生命周期
    MediaPlayer生命周期
    ①IDLE 使用new方法创建一个mediaplayer对象或者调用reset方法时,该MediaPlayer对象处于IDLE状态,区别在:在这种状态下如果调用getDurtion等方法,如果是reset进入会触发OnError进入onError状态,如果是new出新对象则不会触发也不会进入onError
    ②END 通过率release方法进入该状态,只要MediaPlayer不再使用就应该尽快的将其通过release方法释放掉,以释放去其占用的软硬件资源。如果进入了END状态就不会进入其他状态
    ③Intialized 通过setDataSource进入该状态,表示此时要播放的资源文件设置好了
    ④Prepared 与prepareAsyn()配合,准备完成会回调onPrepareListener
    ⑤Start prepare后调用start方法进入,可以通过isPlaying测试是否处于start状态
    ⑥Pause 暂停状态
    ⑦Stop状态
    ⑧PlaybackCompleted 播放完成状态
    ⑨Error状态
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

XAudio2学习之音效相关结构体

任何XAudio2 voice都可以持有一个音频效果链。你可以使用XAUDIO2_EFFECT_DESCRIPTOR数组来指定效果链。每个描述因子都包含了由客户端提供的指向音效对象的指针。这些对象必须...

vc设置与opengl相关文件

  • 2012-03-20 16:08
  • 10.39MB
  • 下载

OpenGL ES Shader相关API 总结【3】——绑定shader

绑定Shader 1. GLuint glCreateShader(GLenum shaderType) 功能:创建一个指定类型的shader对象 输入:shader类型 输出:一个该类型的shade...

opengl sdl相关例程以及资源

  • 2011-09-17 12:19
  • 6.56MB
  • 下载

OPENGL的相关知识

  • 2009-04-19 22:21
  • 1000KB
  • 下载

OpenGL相关函数库介绍

感觉出入Opengl有帮组  分类:   OpenGL 函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(gl...

openGl相关库文件

  • 2011-03-05 12:48
  • 519KB
  • 下载

OpenGL ES Shader相关API 总结【0】——获取绘制信息

获取绘制信息 EGL的API作用分类: 用于与手机关联并获取手机支持的配置信息 用于根据需要生成手机支持的surface和context,并对surface和context进行关联 用于指定使用哪个版...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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