本文档部分API缺少示例代码,诚挚的邀请你参与到示例代码的编写中来,你可以在代码中发布2行自定义注释,内容自拟。 有意者可与刺鸟联系(QQ:4041990 Q群:7702175)

API简介

uexAudio对象是手机本地的音频对象,可用来播放音乐和音效,并且能够进行录音等操作。

接口说明

方法说明
uexAudio.open(url)打开音乐文件。
uexAudio.play(loopTimes)播放音乐。
uexAudio.pause()暂停播放音乐,调用uexAudio.play方法会继续播放音乐。
uexAudio.stop()停止播放音乐,调用uexAudio.play方法会重新播放音乐。
uexAudio.volumeUp()调高音量。
uexAudio.volumeDown()调低音量。
uexAudio.openPlayer(inUrlStrs,activeIndex)打开音乐播放界面,传入需要播放的音乐列表。
uexAudio.openSoundPool()打开声音池。
uexAudio.cbOpenSoundPool(opId,dataType,data)打开声音池的回调方法。
uexAudio.playFromSoundPool(inSoundID)播放音效。
uexAudio.stopFromSoundPool(inSoundID)停止播放音效。
uexAudio.addSound(soundId,inPath)向声音池中添加音效文件。IOS支持wav,amr,aif,caf格式,声音文件的长度不超过30秒。Android支持wav,midi,amr,最好不超过100K。
uexAudio.closeSoundPool()清空声音池。
uexAudio.onPlayFinished(inCurrentTimes)通知音乐播放完成,并返回当前播放次数。
uexAudio.record(soundType)调用系统录音界面,需要注意的是,录音文件保存在沙盒中,为了减少文件过多造成占用内存过多,在应用中只会临时存一份录音文件,再次录音会覆盖之前的录音文件。
uexAudio.cbRecord(opId,dataType,data)调用系统录音界面的回调方法。
uexAudio.startBackgroundRecord(soundType)开始后台录音。
uexAudio.stopBackgroundRecord()停止后台录音。
uexAudio.cbBackgroundRecord(opId,dataType,data)停止后台录音的回调方法。
open(url)
参数名称描述
url音乐文件路径,可通过uexFileMgr.explorer进行选择。
play(loopTimes)
参数名称描述
loopTimes指定的循环次数。-1代表无限循环播放,0代表只播放一次,loopTimes>=0代表的循环播放的次数,每次播放完成后都会调用uexAudio.onPlayFinished,该回调函数返回当前播放完成的次数。
openPlayer(inUrlStrs,activeIndex)
参数名称描述
inUrlStrs音乐文件路径数组。
activeIndex默认开始播放的音乐文件在inUrlStrs中的索引【可不填,默认为0】。数组索引值从0开始,若等于或大于数组长度,则表示越界,此时索引为0。
cbOpenSoundPool(opId,dataType,data)
参数名称描述
opId操作ID,在此函数中不起作用,可忽略。
dataType成功时返回数据的数据类型为uex.cInt(值为2)。
data返回的int型的数据(一个音效只能返回一个ID值,ID值是系统返回的,供播放使用)。
playFromSoundPool(inSoundID)
参数名称描述
inSoundID打开音效文件回调返回的id。
stopFromSoundPool(inSoundID)
参数名称描述
inSoundID打开音效文件回调返回的id。
addSound(soundId,inPath)
参数名称描述
soundId传入的声音文件唯一标识。
inPath文件路径集合,支持的文件路径协议:wgt://…,wgts://…,/… ,file://…,http://…。
onPlayFinished(inCurrentTimes)
参数名称描述
inCurrentTimes当前播放次数,当用户选择循环播放的时候,该参数表示当前是第几次播放。该值从0开始。
record(soundType)
参数名称描述
soundType指定录音类型,”0”表示AMR格式,”1”表示ios平台的caf格式。(android平台忽略此函数,只支持AMR格式)。
cbRecord(opId,dataType,data)
参数名称描述
opId操作ID,在此函数中不起作用,可忽略。
dataType返回数据的数据类型为uex.cText(值为0)。
data返回的录音文件的绝对路径。
startBackgroundRecord(soundType)
参数名称描述
soundType指定录音类型,”0”表示AMR格式,”1”表示ios平台的caf格式。(android平台忽略此函数,只支持AMR格式)。
cbBackgroundRecord(opId,dataType,data)


参数名称描述
opId操作ID,在此函数中不起作用,可忽略。
dataType返回数据的数据类型为uex.cText(值为0)。
data返回的录音文件的绝对路径。

// 本代码由寒暄提供,如有bug请和寒暄联系(QQ:457696322 Q群:7702175)
<!DOCTYPE html>
<html>
  <head>
    <title>AppCan API uexAudio</title>
    <meta charset="utf-8">
    <script>
      window.uexOnload = function(type){
        if(!type){
          uexAudio.onPlayFinished=function(inCurrentTimes){
          console.log("当前歌曲播放第"+inCurrentTimes+1+"次");
          }
        }
      }
    function $$(id){
      return document.getElementById(id);
    }
    //打开音乐播放
    function audioOpen(){
      var url = $$("audio_url").value;
      uexAudio.open(url);
    }
    //播放,并设置播放次数
    function audioPlay(){
      uexAudio.play(2);//连续播放2次
    }
    //暂停播放
    function audioPause(){
      uexAudio.pause();
    }
    //停止播放,启动uexAudio.play会重新播放
    function audioStop(){
      uexAudio.stop()
    }
    //调高音量
    function audioVolumeUp(){
      uexAudio.volumeUp();
    }
    //调低音量
    function audioVolumeDown(){
      uexAudio.volumeDown();
    }
    //打开系统播放界面
    function audioOpenPlayer(){
      //设置播放音乐数组      var arr_ = ["res://1.mp3","res://2.mp3","res://3.mp3"];
      //传入数组,并设置从数组第一个开始播放
      uexAudio.openPlayer(arr_,0);
    }
    /*********音效处理方法************/
    var sondPoolId = 0;//全局变量,用于保存打开音效池的返回id,初始化为0
    //打开音效池
    function audioOpenSoundPool(){
      uexAudio.cbOpenSoundPool=function(opId,dataType,data){
        if(dataType==2)
          sondPoolId = data;
        }
      }
    //播放音效池中的音效
    function audioPlayFromSoundPool(){
      if(sondPoolId!=0)
        uexAudio.playFromSoundPool(sondPoolId);
    }
    //停止播放音效
    function audioStopFromSoundPool(){
      if(sondPoolId!=0){
        uexAudio.stopFromSoundPool(sondPoolId);
        sondPoolId = 0;
      }
    }
    //向音效池添加音效
    var soundId = 100;    function audioAddSound(){
      soundId++;
      var tmp = "res://1.amr";
      uexAudio.addSound(soundId,tmp);
    }
    //关闭音效池
    function audioCloseSoundPool(){
      uexAudio.closeSoundPool();
    }
    /****************录音处理方法*****************/
    //打开系统录音界面
    function audioRecord(){
      uexAudio.cbRecord=function(opId,dataType,data){
        if(dataType==0)
          console.log("录音文件路径为:"+data);
      }
        uexAudio.record(0);//设置录音格式为amr
    }
    //开始后台录音
    function audioStartBackgroundRecord(){
      uexAudio.startBackgroundRecord(0);//设置录音格式为amr
    }
    //停止后台录音
    function audioStopBackgroundRecord(){
      uexAudio.cbBackgroundRecord=function(opId,dataType,data){
        if(dataType==0)
          console.log("录音文件路径为:"+data);
      }
      uexAudio.stopBackgroundRecord();
    }
  </script>
  </head>
  <body>
    <span>音乐播放</span><br/>
    <input id="audio_url" type="text" style="width:200px;height:20px" /><br/>
    <input type="button" value="Open" onclick="audioOpen()"/><br/>
    <input type="button" value="Play" onclick="audioPlay()"/><br/>
    <input type="button" value="Pause" onclick="audioPause()"/><br/>
    <input type="button" value="Stop" onclick="audioStop()"/><br/>
    <input type="button" value="VolumeUp" onclick="audioVolumeUp()"/><br/>
    <input type="button" value="VolumeDown" onclick="audioVolumeDown()"/><br/>
    <br/>
    <span>打开系统音乐播放界面</span><br/>
    <input type="button" value="OpenPlayer" onclick="audioOpenPlayer()"/><br/>
    <br/>
    <span>音效播放</span><br/>
    <input type="button" value="OpenSoundPool" onclick="audioOpenSoundPool()"/><br/>
    <input type="button" value="PlayFromSoundPool" onclick="audioPlayFromSoundPool()"/><br/>
    <input type="button" value="StopFromSoundPool" onclick="audioStopFromSoundPool()"/><br/>
    <input type="button" value="AddSound" onclick="audioAddSound()"/><br/>
    <input type="button" value="CloseSoundPool" onclick="audioCloseSoundPool()"/><br/>
    <br/>
    <span>录音</span><br/>
    <input type="button" value="Record" onclick="audioRecord()"/><br/>
    <input type="button" value="StartBackgroundRecord" onclick="audioStartBackgroundRecord()"/><br/>
    <input type="button" value="StopBackgroundRecord" onclick="audioStopBackgroundRecord()"/><br/>
  </body>
</html>