복사성공!
1
val microphoneAgent = nuguAndroidClient.getAgent(DefaultMicrophoneAgent.NAMESPACE)
최신 버전은 1.0 입니다.
Version | Date | Description |
---|---|---|
1.0 | 2020.03.02 | 규격 추가 |
Mic interface 규격에 따른 디바이스의 동작 제어는 MicAgent 가 처리합니다.
iOS 는 MicAgent 를 지원하지 않습니다.
NuguAndroidClient instance 를 통해 MicrophoneAgent instance 에 접근할 수 있습니다.
1
val microphoneAgent = nuguAndroidClient.getAgent(DefaultMicrophoneAgent.NAMESPACE)
NuguAndroidClient 생성시 Microphone 을 추가합니다.
1
2
3
4
5
class MyMicrophone: Microphone {
...
}
NuguAndroidClient.Builder(...)
.enableMicrophone(MyMicrophone())
CapabilityFactory::makeCapability 함수로 MicAgent 를 생성하고 NuguClient 에 추가해 주어야합니다.
1
2
3
4
5
6
auto mic_handler(std::shared_ptr<IMicHandler>(
CapabilityFactory::makeCapability<MicAgent, IMicHandler>()));
nugu_client->getCapabilityBuilder()
->add(mic_handler.get())
->construct();
디바이스의 microphone 상태를 Context 에 포함시켜 주어야 합니다.
Microphone 을 구현합니다.
1
2
3
4
5
6
class MyMicrophone: Microphone {
override fun getSettings(): Settings {
...
}
...
}
디바이스의 microphone 제어가 SetMic directive 로 요청될 수 있습니다.
Microphone 을 구현합니다.
1
2
3
4
5
6
7
8
9
10
11
class MyMicrophone: Microphone {
override fun on(): Boolean {
...
}
override fun off(): Boolean {
...
}
...
}
IMicListener 를 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
class MyMicListener : public IMicListener {
public:
...
void micStatusChanged(MicStatus &status) override
{
...
}
};
auto mic_listener(std::make_shared<MyMicListener>());
CapabilityFactory::makeCapability<MicAgent, IMicHandler>(mic_listener.get());
1
2
3
4
5
6
{
"Mic": {
"version": "1.0",
"micStatus": "{{STRING}}"
}
}
parameter | type | mandatory | description |
---|---|---|---|
micStatus | string | Y | ON / OFF |
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"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 |