跳转至

本地设备管理类

本地设备管理类(DeviceMgr)

DeviceMgr

  • 返回设备管理类对象

  • 方法示例

1
var deviceMgr = TK.DeviceMgr

getDevices

  • 该方法枚举系统中的摄像头、麦克风及扬声器设备
参数名 必填 类型 说明
callback Function 该方法如果调用成功,回调参数对象中会包含系统设备信息的对象devices、系统当前正在使用的设备信息对象useDevices。如果调用失败,devicesuseDevices对象中设备信息为空
  • devices对象中包含摄像头(videoinput)、麦克风(audioinput)和扬声器(audiooutput)信息对象,其中每个设备对象都包含3个属性:
参数名 类型 说明
deviceId String 该设备所独有的设备ID
label String 用于区分设备的标识。如果用户没有打开摄像头和麦克风的权限,label会以特定名称加索引方式命名
kind String 设备类型,根据选用的音视频设备,有videoinputaudioinputaudiooutput三种类型
  • userDevices对象中包含系统正在使用的摄像头videoinput、麦克风audioinput和扬声器audiooutput的设备ID。

  • 方法示例

1
2
3
4
5
6
7
8
9
TK.DeviceMgr.getDevices(function (deviceInfo) {
    var devices = deviceInfo.devices;
    var usingDevices = deviceInfo. useDevices;

    var audioInputDevArr = devices.audioinput;
    var audioInputDevCount = audioInputDevArr.length;

    var usingAudioInputId = usingDevices. audioinput;
 }

setDevices

  • 该方法设置系统使用的摄像头、麦克风及扬声器设备
  • setDevices设置的videoinput在多视频模式下为设置主摄像头,设置主摄像头就是将音频关联到主摄像头上,摄像头在多视频模式下不存在切换问题,因此该接口切换的videoinput是切换主摄像头(即:切换音频关联的摄像头)
参数名 必填 类型 说明
deviceIdMap Object 包含设备ID的对象。设备ID通过getDevices方法获取
onFailure Function 失败回调
onSuccess Function 成功回调
  • 方法示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function setLocalDevices(videoInputId, audioInputId, audioOutputId) {
    var deviceIdMap = {
        videoinput : videoInputId,
        audioinput : audioInputId,
        audiooutput : audioOutputId
};
TK.DeviceMgr.setDevices(deviceIdMap, function(error) {
      console.error(set devices failed, error);
 }, function() {
    console.log("set devices success")
 });
 }

getCameras

  • 该方法枚举系统中的摄像头设备
参数名 必填 类型 说明
callback Function 该方法如果调用成功,回调参数为包含系统摄像头对象信息的数组,如果调用失败或无可用设备,返回空数组
  • 方法示例
1
2
3
TK.DeviceMgr.getCameras(function (cameras) {
    console.log("camera data array: ", cameras)
 })

setCamera

  • 该方法设置系统使用的摄像头设备
参数名 必填 类型 说明
deviceId String 摄像头设备id
onFailure Function 失败回调
isForce Boolean 是否强制设置,默认false
onSuccess Function 成功回调
  • 方法示例
1
2
3
4
5
TK.DeviceMgr.setCamera("xxx", function(err) {
    console.error("setCamera error:", err)
}, false, function() {
    console.log("set camera success")
})

getMicrophones

  • 该方法枚举系统中的麦克风设备
参数名 必填 类型 说明
callback Function 该方法如果调用成功,回调参数为包含系统麦克风对象信息的数组,如果调用失败或无可用设备,返回空数组
  • 方法示例
1
2
3
TK.DeviceMgr.getMicrophones(function (mics) {
    console.log("mic data array: ", mics)
 })

setMicrophone

  • 该方法设置系统使用的麦克风设备
参数名 必填 类型 说明
deviceId String 麦克风设备id
onFailure Function 失败回调
onSuccess Function 成功回调
  • 方法示例
1
2
3
4
5
TK.DeviceMgr.setMicrophone("xxx", function(err) {
    console.error("setMicrophone error:", err)
}, function() {
    console.log("setMicrophone success")
})

getSpeakers

  • 该方法枚举系统中的扬声器设备
参数名 必填 类型 说明
callback Function 该方法如果调用成功,回调参数为包含系统扬声器对象信息的数组,如果调用失败或无可用设备,返回空数组
  • 方法示例
1
2
3
TK.DeviceMgr.getSpeakers(function (outputs) {
    console.log("output data array: ", outputs)
 })

setSpeaker

  • 该方法设置系统使用的扬声器设备
参数名 必填 类型 说明
deviceId String 扬声器设备id
onFailure Function 失败回调
onSuccess Function 成功回调
  • 方法示例
1
2
3
4
5
TK.DeviceMgr.setSpeaker("xxx", function(err) {
    console.error("setSpeaker error:", err)
}, function() {
    console.log("setSpeaker success")
})

startVideoTest

  • 该方法开始检测摄像头是否可用
  • 若当前有摄像头正在检测,调用startVideoTest会自动停止正在进行的检测操作,但若要停止最后一次摄像头检测,必须调用stopVideoTest方法
参数名 必填 类型 说明
deviceId String 要检测设备的ID。设备ID通过getDevices方法获取
elementId String Dom元素ID, 该Dom元素用于盛放摄像头对应的视频窗口
options Object 播放配置项,包含属性见下文
onSuccess Function 视频canplay之后的回调函数
onFailure Function 方法调用/视频失败回调
  • options
参数名 类型 说明
mirror Boolean 视频是否镜像显示,默认为 false
loader Boolean 用于表示未加载到视频数据时是否显示‘加载中’样式,默认为 true
mode Number 用于表示视频显示模式(是否裁减),可能取值请见视频显示模式,,默认为TK_VIDEO_MODE.ASPECT_RATIO_CONTAIN
  • 方法示例
1
2
3
4
5
6
function startVideoTest(videoInputId) {
     var container = document.createElement("div");
     container.id = " container ";
    document.body.appendChild(container);
    TK.DeviceMgr.startVideoTest(videoInputId, container.id);
}

stopVideoTest

  • 该方法停止摄像头检测
  • 为避免引起设备占用问题,等一系列进入教室内可能出现的设备问题,需及时关闭检测。
参数名 必填 类型 说明
deviceId String 要关闭检测设备的ID。对应开始检测时的设备ID,如不传默认关闭所有指定deviceid调用startVideoTest的检测
onSuccess Function 成功回调
onFailure Function 失败回调
  • 方法示例
1
2
3
4
5
TK.DeviceMgr.stopVideoTest("xxx", function() {
    console.log("stopVideoTest success")
}, function(err) {
    console.error("stopVideoTest error: ", err)
})

startMicrophoneTest

  • 该方法开始检测麦克风是否可用
  • 若当前有麦克风正在检测,调用startMicrophoneTest会自动停止正在进行的检测操作,但若要停止最后一次麦克风检测,必须调用stopMicrophoneTest方法
参数名 必填 类型 说明
deviceId String 要检测设备的ID。设备ID通过getDevices方法获取
elementId String Dom元素ID。该Dom元素用于盛放播放麦克风声音的播放器
onSuccess Function 方法调用成功回调,携带麦克风当前采集到的音量值
onFailure Function 方法调用失败回调
  • 方法示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function startMicrophoneTest(audioInputId) {
    var container = document.createElement("div");
     container.id = container;
    document.body.appendChild(container);
    var onSuccess = function(vol) {
        console.log(microphone volume: , vol);
    }
    var onFailure = function(err) {
        console.log(microphone test failed. , err);
    }
    TK.DeviceMgr.startMicrophoneTest(audioInputId, container.id, onSuccess, onFailure);
}

stopMicrophoneTest

  • 该方法停止麦克风检测
参数名 必填 类型 说明
onSuccess Function 成功回调
  • 方法示例
1
2
3
TK.DeviceMgr.stopMicrophoneTest(function() {
    console.log("stopMicrophoneTest success")
})

startSpeakerTest

  • 该方法开始检测扬声器是否可用
  • 若当前有扬声器正在检测,调用startSpeakerTest会自动停止正在进行的检测操作,但若要停止最后一次扬声器检测,必须调用stopSpeakerTest方法
参数名 必填 类型 说明
deviceId String 要检测设备的ID。设备ID通过getDevices方法获取
audioUrl String 声音文件的绝对地址,建议使用wav格式的文件
onFailure Function 失败回调
onSuccess Function 成功回调,会定期触发返回当前声音媒体文件音量
  • 方法示例
1
2
3
4
5
6
TK.DeviceMgr.startSpeakerTest(audioInputId, audioUrl, function(err){
    console.log(speaker test failed. , err);
},function(volume) {
    console.log("speaker test success")
    console.log("speaker media current volume: ", volume)
});

stopSpeakerTest

  • 该方法停止扬声器检测
参数名 必填 类型 说明
onSuccess Function 成功回调
  • 方法示例
1
2
3
TK.DeviceMgr.stopSpeakerTest(function(){
    console.log("stopSpeakerTest success")
})

startNetworkTest

  • 该方法开始网络质量检测
  • 接口调用后会以轮询的方式进行网络测速,并持续通过onSuccess返回数据。
参数名 必填 类型 说明
onSuccess Function 成功回调。回调的第一个参数表示网络质量(可能取值请见网络状态质量); 第二个参数表示延时(单位为ms); 第三个参数表示详细的上下行网络质量(说明如下)
onFailure Function 失败回调
  • networkQualityDetail
参数名 类型 说明
downlinkDelayLevel Number 下行网络质量(可能取值请见网络状态质量
uplinkDelayLevel Number 上行网络质量(可能取值请见网络状态质量
downlinkDelay Number 下行网络延时(单位为ms)
uplinkDelay Number 上行网络延时(单位为ms)
  • 方法示例
1
2
3
TK.DeviceMgr.startNetworkTest(function(delayLevel,currentDelay, { downlinkDelayLevel, uplinkDelayLevel, downlinkDelay, uplinkDelay }){
    //实现业务逻辑的代码
});

stopNetworkTest

  • 该方法停止网络质量检测

  • 方法示例

1
TK.DeviceMgr.stopNetworkTest()

registerDeviceChangeListener

  • 该方法添加监听设备改变(插拔)的监听器
  • 只能有一个监听器,若重复添加,之前添加的监听器会失效
  • 经测试,极个别设备的行为异常,在未发生插拔设备的操作时,也会不断触发回调函数
参数名 必填 类型 说明
listener Function 回调函数,当设备变化时会回调该函数。回调参数说明如下
参数名 类型 说明
changed Object 发生改变的设备信息, 例:{videoinput:[{kind:’videoinput’,label:’视频设备label’,deviceId:’视频设备id’}
type Number 改变类型,取值为 (设备添加: TK.DEVICE_STATE.DEVICE_ADD) 或 (设备移除:TK.DEVICE_STATE.DEVICE_REMOVE)
  • 方法示例
1
2
3
4
5
6
7
8
var deviceChangeListener = (changed,type) => {
    if (type == TK.DEVICE_STATE.DEVICE_ADD) {
        console.log("device add, deviceInfo: ", changed)
    } else if (type == TK.DEVICE_STATE.DEVICE_REMOVE) {
        console.log("device remove, deviceInfo: ", changed)
    }
};
TK.DeviceMgr.registerDeviceChangeListener(deviceChangeListener);
  • 移除设备监听器
1
TK.DeviceMgr.registerDeviceChangeListener(() => {});

getAudioMediaStream

  • 该方法获取指定用户的音频原始数据
  • 该接口只能用于获取已经上台的用户音频数据,获取自己的音频数据时,自己可不在台上
  • 通过成功回调获取到的音频数据格式为16bit16000hz、单声道的 arrayBuffer数据
参数名 必填 类型 说明
userid String 用户id
option Object 可选配置,目前仅支持获取用户音频数据,不接受传值
onSuccess Function 成功回调
onFailure Function 失败回调
  • 方法示例
1
2
3
4
5
// 该回调会频繁触发,因为音频数据为实时返回
var onGetAudioData = (arrayBufferData) => {
    console.log("audio data:", arrayBufferData)
};
TK.DeviceMgr.getAudioMediaStream(("xxx", {}, onGetAudioData));

© 2016-2023 北京拓课网络科技有限公司 版权所有  京ICP备17018423号-1 京公网安备11010502043461号