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 에 접근할 수 있습니다.

복사성공!
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();

Context 구성

디바이스의 microphone 상태를 Context 에 포함시켜 주어야 합니다.

  • Android

Microphone 을 구현합니다.

복사성공!
1
2
3
4
5
6
class MyMicrophone: Microphone {
    override fun getSettings(): Settings {
        ...
    }
    ...
}

Microphone 제어

디바이스의 microphone 제어가 SetMic directive 로 요청될 수 있습니다.

  • Android
  • Linux

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());

Context

복사성공!
1
2
3
4
5
6
{
  "Mic": {
    "version": "1.0",
    "micStatus": "{{STRING}}"
  }
}
parameter type mandatory description
micStatus string Y ON / OFF

Directive

SetMic

복사성공!
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