123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- /*
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- * All rights reserved.
- *
- * Licensed under the Oculus SDK License Agreement (the "License");
- * you may not use the Oculus SDK except in compliance with the License,
- * which is provided at the time of installation or download, or which
- * otherwise accompanies this software in either electronic or hard copy form.
- *
- * You may obtain a copy of the License at
- *
- * https://developer.oculus.com/licenses/oculussdk/
- *
- * Unless required by applicable law or agreed to in writing, the Oculus SDK
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- using System;
- using Meta.WitAi;
- using Meta.WitAi.Configuration;
- using Meta.WitAi.Events;
- using Meta.WitAi.Interfaces;
- using Meta.WitAi.Requests;
- using Oculus.Voice.Core.Bindings.Android;
- using Oculus.Voice.Interfaces;
- using Debug = UnityEngine.Debug;
- namespace Oculus.Voice.Bindings.Android
- {
- // TODO: Fix VoiceSDKImpl to work with IVoiceRequest
- public class VoiceSDKImpl : BaseAndroidConnectionImpl<VoiceSDKBinding>,
- IPlatformVoiceService, IVCBindingEvents
- {
- private bool _isServiceAvailable = true;
- public Action OnServiceNotAvailableEvent;
- private IVoiceService _baseVoiceService;
- private bool _isActive;
- public VoiceSDKImpl(IVoiceService baseVoiceService) : base(
- "com.oculus.assistant.api.unity.immersivevoicecommands.UnityIVCServiceFragment")
- {
- _baseVoiceService = baseVoiceService;
- }
- public bool PlatformSupportsWit => service.PlatformSupportsWit && _isServiceAvailable;
- public bool Active => service.Active && _isActive;
- public bool IsRequestActive => service.IsRequestActive;
- public bool MicActive => service.MicActive;
- public void SetRuntimeConfiguration(WitRuntimeConfiguration configuration)
- {
- service.SetRuntimeConfiguration(configuration);
- }
- private VoiceSDKListenerBinding eventBinding;
- public ITranscriptionProvider TranscriptionProvider { get; set; }
- public bool CanActivateAudio()
- {
- return true;
- }
- public bool CanSend()
- {
- return true;
- }
- public override void Connect(string version)
- {
- base.Connect(version);
- eventBinding = new VoiceSDKListenerBinding(this, this);
- eventBinding.VoiceEvents.OnStoppedListening.AddListener(OnStoppedListening);
- service.SetListener(eventBinding);
- service.Connect();
- Debug.Log(
- $"Platform integration initialization complete. Platform integrations are {(PlatformSupportsWit ? "active" : "inactive")}");
- }
- public override void Disconnect()
- {
- base.Disconnect();
- if (null != eventBinding)
- {
- eventBinding.VoiceEvents.OnStoppedListening.RemoveListener(OnStoppedListening);
- }
- }
- private void OnStoppedListening()
- {
- _isActive = false;
- }
- public VoiceServiceRequest Activate(string text, WitRequestOptions requestOptions,
- VoiceServiceRequestEvents requestEvents)
- {
- eventBinding.VoiceEvents.OnRequestOptionSetup?.Invoke(requestOptions);
- service.Activate(text, requestOptions);
- return null;
- }
- public VoiceServiceRequest Activate(WitRequestOptions requestOptions,
- VoiceServiceRequestEvents requestEvents)
- {
- if (_isActive) return null;
- _isActive = true;
- eventBinding.VoiceEvents.OnRequestOptionSetup?.Invoke(requestOptions);
- service.Activate(requestOptions);
- return null;
- }
- public VoiceServiceRequest ActivateImmediately(WitRequestOptions requestOptions,
- VoiceServiceRequestEvents requestEvents)
- {
- if (_isActive) return null;
- _isActive = true;
- eventBinding.VoiceEvents.OnRequestOptionSetup?.Invoke(requestOptions);
- service.ActivateImmediately(requestOptions);
- return null;
- }
- public void Deactivate()
- {
- _isActive = false;
- service.Deactivate();
- }
- public void DeactivateAndAbortRequest()
- {
- _isActive = false;
- service.Deactivate();
- }
- public void DeactivateAndAbortRequest(VoiceServiceRequest request)
- {
- }
- public void OnServiceNotAvailable(string error, string message)
- {
- _isActive = false;
- _isServiceAvailable = false;
- OnServiceNotAvailableEvent?.Invoke();
- }
- public VoiceEvents VoiceEvents
- {
- get => _baseVoiceService.VoiceEvents;
- set => _baseVoiceService.VoiceEvents = value;
- }
- public TelemetryEvents TelemetryEvents
- {
- get => _baseVoiceService.TelemetryEvents;
- set => _baseVoiceService.TelemetryEvents = value;
- }
- }
- }
|