Xamarin.Forms PCL プロジェクト (Portable Class Library) 内で Google Cloud Speech Api に対して認証しようとしています。私はAndroid-Phoneでテストしています。私のソリューションのコードは次のようになります。
Assembly assembly = typeof(Program).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("ConsoleApp1.speech_auth.json");
string resultString = null;
using (StreamReader reader = new StreamReader(stream))
{
resultString = reader.ReadToEnd();
}
GoogleCredential credential = GoogleCredential.FromJson(resultString);
if (credential.IsCreateScopedRequired)
{
credential = credential.CreateScoped(new[] { "https://www.googleapis.com/auth/cloud-platform" });
}
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
credential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);
var response = speech.Recognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
SampleRateHertz = 16000,
LanguageCode = "de-CH",
}, RecognitionAudio.FromFile("test.flac"));
通常の .NET ConsoleApplication-Project では、魅力のように機能します。ただし、PCL プロジェクト内でまったく同じコードを試すと、次の行でエラーが発生します。
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
credential.ToChannelCredentials());
それは言う:
未処理の例外: System.NotImplementedException: メソッドまたは操作が実装されていません
Nuget GRPC と Google Speech API パッケージをすべて PCLとAndroid プロジェクトにインストールしました。
だから私の質問は:
Xamarin.Forms を使用して、Google Cloud Speech API を認証するより良い/簡単な方法はありますか? そうでない場合、私のコードの問題は何ですか?
編集: Xamarin はgRPC をサポートしていないようです。シンプルな httpClient を使用してリクエストを送信する音声 API を呼び出すことができました。