iOS

# 设备管理

# 1. 输入音频设备管理

# 获取音频输入设备列表

var webPlugin = new WebPlugin();

/**
  * @desc 获取音频输入设备列表
  */
webPlugin.GetAudioInputs();

获取音频输入设备列表通知:

var webPlugin = new WebPlugin();

/**
  * @desc 获取音频输入设备列表结果
  * @param {array} inputs - 音频输入设备列表
  * [
  *   {
  *     "InputId":"id1",
  *     "InputName":"name1"
  *   },
  *   {
  *     "InputId":"id2",
  *     "InputName":"name2"
  *   }
  * ]
  */
webPlugin.OnGetAudioInputsResult = function (inputs) {
  var selectDOM = document.getElementById('select-audio-input');
  selectDOM.innerHTML = '';
  selectDOM.selectIndex = 0;
  for (i = 0; i < inputs.length; i++) {
    selectDOM.options.add(new Option(inputs[i].InputName, inputs[i].InputId));
  }
}

# 设置默认音频输入设备

通话时默认打开设置的音频输入设备。

var webPlugin = new WebPlugin();

/**
  * @desc 设置默认音频输入设备
  * @param {string} inputId - 输入设备id
  */
var value = selectDOM.options[selectDOM.selectedIndex].value
webPlugin.SetDefaultAudioInput(value);

# 切换当前音频输入设备

音频输入设备进行切换。

var webPlugin = new WebPlugin();

/**
  * @desc 切换当前音频输入设备
  * @param {string} inputId - 输入设备id
  */
var value = selectDOM.options[selectDOM.selectedIndex].value
webPlugin.ChangeAudioInput(value);	

# 音频输入音量上报

音量值 0 - 100

webPlugin.OnAudioInputVolumeNotify = function (volume) {
  console.log('OnAudioInputVolumeNotify', volume);
}

# 开关音量上报通知

是否上报

webPlugin.EnableAudioInputVolumeNotify(enable);

# 开启音频输入测试

可以指定音频设备ID,不指定就是默认设备。

webPlugin.EnableAudioInputTest(enable, audioId);

# 2. 输出音频设备管理

# 获取音频输出设备列表

var webPlugin = new WebPlugin();

/**
  * @desc 获取音频输出设备列表
  */
webPlugin.GetAudioOutputs()

获取音频输出设备列表通知:

var webPlugin = new WebPlugin();

/**
  * @desc 获取音频输出设备列表结果
  * @param {array} outputs - 音频输出设备列表
  * [
  *   {
  *     "OutputId":"id1",
  *     "OutputName":"name1"
  *   },
  *   {
  *     "OutputId":"id2",
  *     "OutputName":"name2"
  *   }
  * ]
  */
webPlugin.OnGetAudioOutputsResult = function (outputs) {
  console.log('onGetAudioOutputsResult', outputs);
};

# 设置默认音频输出设备

通话时默认打开设置的音频输出设备。

var webPlugin = new WebPlugin();

/**
  * @desc 设置默认音频输出设备
  * @param {string} outputId - 输出设备id
  */
webPlugin.SetDefaultAudioOutput(outputId);

# 切换当前音频输出设备

音频输出设备进行切换。

var webPlugin = new WebPlugin();

/**
  * @desc 切换当前音频输出设备
  * @param {string} outputId - 输出设备id
  */
webPlugin.ChangeAudioOutput(outputId);

设置默认音频输出设备和切换音频输出设备示例代码:

function SetAudioOutput() {
  var selectDOM = document.getElementById('select-audio-output');
  var value = selectDOM.options[selectDOM.selectedIndex].value
  if (SDK_STATE.isTalking) {
    webPlugin.ChangeAudioOutput(value);
  } else {
    webPlugin.SetDefaultAudioOutput(value);
  }
}

# 3. 视频设备管理

# 获取摄像头列表

var webPlugin = new WebPlugin();

/**
  * @desc 获取摄像头列表
  */
webPlugin.GetCameras();

获取摄像头列表的结果通知:

var webPlugin = new WebPlugin();

/**
  * @desc 获取摄像头设备列表结果
  * @param {array} Cameras - 音频输入设备列表
  * [
  *   {
  *     "CameraId":"id1",
  *     "CameraName":"name1"
  *   },
  *   {
  *     "CameraId":"id2",
  *     "CameraName":"name2"
  *   }
  * ]
  */
webPlugin.OnGetCamerasResult = function (cameras) {
  console.log('OnGetCamerasResult', cameras);
}

# 切换摄像头

var webPlugin = new WebPlugin();

/**
  * @desc 切换摄像头
  * @param {string} cameraId - 摄像头id
  */
webPlugin.SwitchCamera(cameraId);

# 默认摄像头

var webPlugin = new WebPlugin();

/**
  * @desc 设置默认摄像头
  * @param {string} cameraId - 摄像头id
  */
if (SDK_STATE.isTalking) {
  webPlugin.SwitchCamera("cameraId");
} else {
  webPlugin.SetDefaultCamera("cameraId");
}

# 4. 第三方网络摄像头

# 支持的厂商

大华、海康

# 初始化

使用第三方网络摄像头,需要在插件初始化之前确定需要使用的第三方摄像头有哪些,并在初始化插件时传入对应的厂商名称。这里要注意:初始化后不能更改、删除、新增要使用的第三方网络摄像头的厂商名称,如果需要更改、删除、新增第三方摄像头厂商,必须先结束插件进程重新初始化。

以下是初始化插件时传入的第三方摄像头厂商名称,具体字段为:webPlugin.initPluginParam.IPCameras,是一个字符串数组。initPluginParam是webplugin.js内置的数据对象,会在调用Init时将initPluginParam数据一起传入插件。

var webPlugin = new WebPlugin();

var appkey = _getValue('checkin-appkey');
var hik = _getCheckboxValue('checkin-ipCameras-hik');
var ipCameras = [];
if (hik) {
  ipCameras.push('Hik')
}
var dahua = _getCheckboxValue('checkin-ipCameras-dahua');
if (dahua) {
  ipCameras.push('Dahua')
}
webPlugin.initPluginParam.IPCameras = ipCameras;
webPlugin.Init(appkey, "");

# 登录网络摄像头

登录之后避免重复登录,网络摄像头有登出的设定,插件内置了登出功能,当插件销毁时就会登出。

注意:网络摄像头支持Hik(windowsx86,uosx86,uosARM,kylinx86,kylinxARM),Dahua(windowsx86,uosx86,kylinx86)

var webPlugin = new WebPlugin();

// 登录海康
IP_CAMERA.Manufacturer = _getValue('ipCamera-hik-manufacturer');
IP_CAMERA.IP = _getValue('ipCamera-hik-ip');
IP_CAMERA.Port = _getValueNum('ipCamera-hik-port');
IP_CAMERA.UserName = _getValue('ipCamera-hik-userName');
IP_CAMERA.Password = _getValue('ipCamera-hik-password');
console.log("loginHikIPCamera:", IP_CAMERA);
webPlugin.LoginIPCamera(IP_CAMERA);

// 登录大华
IP_CAMERA.Manufacturer = _getValue('ipCamera-dahua-manufacturer');
IP_CAMERA.IP = _getValue('ipCamera-dahua-ip');
IP_CAMERA.Port = _getValueNum('ipCamera-dahua-port');
IP_CAMERA.UserName = _getValue('ipCamera-dahua-userName');
IP_CAMERA.Password = _getValue('ipCamera-dahua-password');
console.log("loginDahuaIPCamera:", IP_CAMERA);
webPlugin.LoginIPCamera(IP_CAMERA);

# 使用

登录成功后,接下来的使用方法和其他摄像头一样,可以通过获取摄像头列表getCameras(),获取摄像头,可以通过切换切换摄像头。可以通过设置界面预览效果。详情查看9.3的讲解。

img

注意:要在登录网络摄像头成功之后,在操作摄像头(包括获取、打开、切换)。登录网络摄像头和插件登录不是同一回事,要分开理解。

# 第三方网络摄像头连接状态上报

因为网络等因素导致摄像断开、重连都会收到上报,初始连接成功也会收到事件上报。

上报内容

{string} cameraId - 摄像头id
{string} cameraName - 摄像头名称
{string} manufacturerName - 厂商名称
                      - None   未获取到
                      - Normal 通用
                      - Hik    海康
                      - Dahua  大华
{string} state - 连接状态
                      - None          未获取到
                      - Connected     已连接
                      - Disconnected  已断开

示例代码:

webPlugin.OnIPCameraChangeNotify = function(cameraId, cameraName, manufacturerName, state) {
  console.log('OnIPCameraChangeNotify', cameraId, cameraName, manufacturerName, state);
};

# 登出第三方网络摄像头

默认destroy插件的时候登出网络摄像头,可通过该接口提前登出。

示例代码:

/**
 * @desc 登出第三方网络摄像头
 * @param {object} param - 参数
 * 其他参数包含如下:
 * Manufacturer:        {string} Manufacturer - 厂商:Hik、Dahua
 * CameraId:            {string} CameraId
 */
webPlugin.LogoutIPCamera(param);

# 5. 获取默认设备

默认的音频输入输出设备和默认的摄像头设备都可以通过GetDefaultDevices接口获取,并通过OnGetDefaultDevicesResult事件上报接收。

webPlugin.GetDefaultDevices();

上报内容

"AudioOutput":{"Name":"Default Speaker","Id":"default"},
"AudioInput":{"Name":"Default Microphone","Id":"default"},
"Camera":{"Name":"Aoni FHD TV Camera","Id":"\\\\?\\usb#vid_0203\u0026pid_145e\u0026mi_00#6\u002637d2bf36\u00263\u00260000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"},
"BridgeType":"OnGetDefaultDevicesResult"

示例代码:

webPlugin.OnGetDefaultDevicesResult = function (camera, audioInput, audioOutput){
  console.log('OnGetDefaultDevicesResult', camera, audioInput, audioOutput);
}

# 6. 设备变化通知

# 开启设备检测

设备检测周期,单位毫秒,建议2000毫秒以上。

webPlugin.EnableDeviceDetect(enable, period);

# 设备变化通知

上报内容:

{list} changeTypes 设备类别 [Camera,AudioInput,AudioOutput]
{list} audioInputs 设备类别changeTypes中包含AudioInput时 当前的音频输入列表
{list} audioOutputs 设备类别changeTypes中包含AudioOutput时 当前的音频输出列表
{list} cameras 设备类别changeTypes中包含Camera时 当前的摄像头列表
例如摄像头发生变化  changeTypes为[Camera]
例如摄像头,麦克风发生变化  changeTypes为[Camera,AudioInput]

示例代码:

webPlugin.OnDeviceChangeNotify = function (changeTypes, audioInputs, audioOutputs, cameras) {
  console.log('OnDeviceChangeNotify', changeTypes, audioInputs, audioOutputs, cameras);
}

# 7. 设备隐私变化通知

上报内容:

{boolean} camera 摄像头隐私变化
{boolean} microphone 麦克风隐私变化
例如摄像头隐私发生变化  camera不为空(true-允许访问 false-不允许访问) microphone为空
例如麦克风隐私发生变化  microphone不为空(true-允许访问 false-不允许访问) camera为空

示例代码:

webPlugin.OnDevicePrivacyChangeNotify = function (camera, microphone) {
  console.log('OnDevicePrivacyChangeNotify', camera, microphone);
}