为什么PlayEarcon会出错?如何识别实际原因?

时间:2017-02-13 12:56:14

标签: android xamarin text-to-speech

我试图在Xamarin Android项目中用文本散布声音效果,但是我得到了一个不透明的错误回调。

我首先将earcon缓存在

给出的路径中
        var filename = Path.Combine(Application.Context.CacheDir.ToString(), id + ".wav");

(其中id对于earcon是唯一的;一个模拟器上的结果是/data/data/My.Package/cache/fx1.wav),然后调用

        var result = _TTS.AddEarcon(id.ToString(), filename);

结果为SUCCESS

稍后我尝试使用

播放它
        var parms = new Android.OS.Bundle();
        // https://code.google.com/p/android/issues/detail?id=64925
        parms.PutInt(TextToSpeech.Engine.KeyParamStream, 3); // AudioManager.STREAM_MUSIC
        parms.PutString(TextToSpeech.Engine.KeyParamUtteranceId, "earcon");
        var result = _TTS.PlayEarcon(id.ToString(), QueueMode.Add, parms, "earcon");

结果是在我已注册的OnError(string)上回复UtteranceProgressListener

我使用API​​级别21,所以我认为它应该调用OnError(string, TextToSpeechError);没有错误代码,我不确定问题是什么。

我最好的猜测是音频格式不受支持,但即使使用单声道16000 Hz 16位流,should be supported unconditionally也会发生这种情况。该文件通过MediaPlayer从缓存位置回放没有问题,事实上,我最好的解决方法是播放正确长度的无声话语并使用UtteranceProgressListener触发MediaPlayer播放文件。

我在仿真机和真正的平板电脑上观察到同样的问题。

错误的其他原因可能是什么?除了猜测和尝试解决方法之外,还有什么方法可以说出原因是什么?

0 个答案:

没有答案