Mic
디바이스의 마이크를 제어하기 위한 규격

Version

최신 버전은 1.0 입니다.
Version
Date
Description
1.0
2020.03.02
규격 추가

SDK Interface

MicAgent 사용

Mic interface 규격에 따른 디바이스의 동작 제어는 MicAgent 가 처리합니다.
iOS 는 MicAgent 를 지원하지 않습니다.
Android
Linux
NuguAndroidClient instance 를 통해 MicrophoneAgent instance 에 접근할 수 있습니다.
val microphoneAgent = nuguAndroidClient.getAgent(DefaultMicrophoneAgent.NAMESPACE)
NuguAndroidClient 생성시 Microphone 을 추가합니다.
class MyMicrophone: Microphone {
...
}
NuguAndroidClient.Builder(...)
.enableMicrophone(MyMicrophone())
CapabilityFactory::makeCapability 함수로 MicAgent 를 생성하고 NuguClient 에 추가해 주어야합니다.
auto mic_handler(std::shared_ptr<IMicHandler>(
CapabilityFactory::makeCapability<MicAgent, IMicHandler>()));
nugu_client->getCapabilityBuilder()
->add(mic_handler.get())
->construct();

Context 구성

디바이스의 microphone 상태를 Context 에 포함시켜 주어야 합니다.
Android
Microphone 을 구현합니다.
class MyMicrophone: Microphone {
override fun getSettings(): Settings {
...
}
...
}

Microphone 제어

디바이스의 microphone 제어가 SetMic directive 로 요청될 수 있습니다.
Android
Linux
Microphone 을 구현합니다.
class MyMicrophone: Microphone {
override fun on(): Boolean {
...
}
override fun off(): Boolean {
...
}
...
}
IMicListener 를 추가합니다.
class MyMicListener : public IMicListener {
public:
...
void micStatusChanged(MicStatus &status) override
{
...
}
};
auto mic_listener(std::make_shared<MyMicListener>());
CapabilityFactory::makeCapability<MicAgent, IMicHandler>(mic_listener.get());

Context

{
"Mic": {
"version": "1.0",
"micStatus": "{{STRING}}"
}
}
parameter
type
mandatory
description
micStatus
string
Y
ON / OFF

Directive

SetMic

{
"header": {
"namespace": "Mic",
"name": "SetMic",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.0"
},
"payload": {
"playServiceId": "{{STRING}}",
"status": "{{STRING}}"
}
}
parameter
type
mandatory
description
status
string
Y
ON / OFF
Last modified 8mo ago