zoukankan      html  css  js  c++  java
  • 游戏音乐MediaPlayer和SoundPool常用的一些方法

         Android游戏中常用的两种播放音乐的方式:第一:MediaPlayer,第二:SoundPool。第一种比较适合用于游戏的背景音乐,第二种适用于游戏音效(例如:子弹打中敌机出现的爆炸声)。SoundPool类播放的音乐文件不能大于1M,所以背景音乐选择SoundPool不太适合,那为什么游戏音效不选择MediaPlayer呢?因为在快速连续点击播放的情况下,MediaPlayer会出现延迟的情况,这样就会影响的游戏的用户体验(子弹打中敌机后过了几秒才发生音效)。

      MediaPlayer

    //实例音乐播放器
    mediaPlayer = MediaPlayer.create(context, R.raw.bgmusic);
    //设置循环播放(设置了循环,“OnCompletionListener”监听器无法监听音乐是否播放完成)
    mediaPlayer.setLooping(true);//设置循环播放 
    //获取音乐文件的总时间
    musicMaxTime = mediaPlayer.getDuration(); 
    //绑定音乐完成监听器
    mediaPlayer.setOnCompletionListener(this);
    //开始播放
    mediaPlayer.start();
    //暂停播放
    mediaPlayer.pause();
    //停止播放
    mediaPlayer.stop();
    //实例管理类
    AudioManager am = (AudioManager) MainActivity.instance.getSystemService(Context.AUDIO_SERVICE);
    //设置当前调整音量大小只是针对媒体音乐进行调整
    MainActivity.instance.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    //设置音乐的声音大小 
    am.setStreamVolume(AudioManager.STREAM_MUSIC, vol, AudioManager.FLAG_PLAY_SOUND);
    //快进和倒退 参数1:快进或倒退的时间
    mediaPlayer.seekTo(time)

    //得到当前音乐播放的时间点

    mediaPlayer.getCurrentPosition()

    SoundPool

      SoundPool与MediaPlayer不同的是他是实例化对象 SoundPool sp = new SoundPool(int maxStreams, int streamType, int srcQuality)

       下面是一些SoundPool类常用的一些方法

    //参数1:允许播放声音的最大值 参数2:声音类型 参数3:声音品质
    SoundPool sp = new SoundPool(int maxStreams, int streamType, int srcQuality)
    //加载音乐文件获取其数据ID  参数1:context 参数2:资源ID 参数3:标识优先考虑的声音
    int soundId_long = sp.load(context, int resId, 1);
    //参数1:音乐文件数据ID 参数2:左声道 0.0-1.0 参数3:右声道0.0-1.0 参数4:音乐流的优先级,0最低
    // 参数5:音乐播放的次数(-1 无限循环,0表示普通播放一次,其他正整数就代表循环播放的次数) 参数6:播放速率(0.5-2.0,1代表正常播放)
    sp.play(soundID, leftVolume, rightVolume, priority, loop, rate) 
    //暂停 音乐文件数据ID
    sp.pause(int streamID)
    //停止 音乐文件数据ID
    sp.stop(int streamID)
    //释放soundpool的资源
    sp.release()
    //设置循环的次数 参数1:音乐文件数据ID  参数2:循环的次数
    setLoop(int streamID,int loop)
    //设置播放速率 参数1:音乐文件数据ID 参数2:速率值(0.5-2.0)
    setRate(int streamID,float rate)
    //设置声音  参数1:音乐文件数据ID 参数2:左声道 参数3:右声道
    setVolume(int streamID,float leftVolume,float rightVolume)

           

        

         

  • 相关阅读:
    用户管理 之 Linux 系统中的超级权限的控制
    硬件管理 之 存储设备分区操作及文件系统管理概述
    用户管理 之 Linux 用户(User)查询篇
    软件工程——需求工程
    自动装载模块
    管理内核模块
    模块功能的注册和取消
    编程实现将任意的十进制整数转换成R进制数
    数据流图分析与设计
    软件工程——系统工程
  • 原文地址:https://www.cnblogs.com/cindyOne/p/3003057.html
Copyright © 2011-2022 走看看