Я получаю постоянный ответ VoiceCatalog.Error.Unknown при вызове downloadCatalog из VoiceCatalog.
Я уже видел это сообщение , но это мне не помогло .
Вот две версии помощника, который я создал для создания экземпляра VoiceCatalog и загрузки каталога и голоса из класса VoiceCatalog, который я использую в приложении.
** Старые **
private var m_MapFragment: MapFragment
lateinit var voiceCatalog: VoiceCatalog
val listVoiceCatalog: ArrayList<voiceCatalogModel> = arrayListOf()
var id: Long = -1
init {
m_MapFragment = mapFragment
getInstance()
}
private fun getInstance()
{
voiceCatalog = VoiceCatalog.getInstance()
getVoicePackages()
}
private fun getVoicePackages() {
val voicePackages = voiceCatalog.catalogList
for (vPackage in voicePackages) {
if (vPackage.bcP47Code.compareTo("pt-BR") == 0) {
if (vPackage.isTts) {
id = vPackage.id
break
}
}
}
/* for (vPackage in voicePackages){
listVoiceCatalog.add(voiceCatalogModel(vPackage.id,vPackage.marcCode, vPackage.bcP47Code, vPackage.localizedLanguage) )
}*/
}
fun downloadIfNotInstalled() {
if (!voiceCatalog.isLocalVoiceSkin(id) && !voiceCatalog.isDownloading){
voiceCatalog.setOnProgressEventListener(object : VoiceCatalog.OnProgressListener{
override fun onProgress(p0: Int) {
Toast.makeText(m_MapFragment.m_activity.applicationContext, "Download voz: " + p0, Toast.LENGTH_SHORT).show()
}
})
voiceCatalog.downloadVoice(id, onDownloadDoneListener)
}
}
//Listener
private val onDownloadDoneListener = object : VoiceCatalog.OnDownloadDoneListener {
override fun onDownloadDone(p0: VoiceCatalog.Error?) {
if (p0 == VoiceCatalog.Error.NONE) {
//if (id == (-1).toLong()){
Toast.makeText(m_MapFragment.m_activity.applicationContext, "Download Concluído.", Toast.LENGTH_SHORT).show()
getVoicePackages()
//}
}
}
}
inner class voiceCatalogModel (
var id: Long = 0,
var marcCode: String = "",
var br24code: String = "",
var localizedLanguage: String = "") {
}
Новее
private var m_MapFragment: HereMapFragment
lateinit var voiceCatalog: VoiceCatalog
var id: Long = -1000
init {
m_MapFragment = mapFragment
getInstance()
}
private fun getInstance()
{
voiceCatalog = VoiceCatalog.getInstance()
}
fun downloadCatalog()
{
if (!voiceCatalog.isLocalCatalogAvailable) {
if (!voiceCatalog.isDownloading) {
voiceCatalog.setOnProgressEventListener(setOnProgressEventListener)
voiceCatalog.downloadCatalog(object : VoiceCatalog.OnDownloadDoneListener {
override fun onDownloadDone(p0: VoiceCatalog.Error?) {
if (p0 != VoiceCatalog.Error.NONE) { // here i get Unknown error
Toast.makeText(m_MapFragment.m_activity.applicationContext,
"Não foi possível fazer download do catálogo de voz.", Toast.LENGTH_SHORT).show()
} else {
if (id == -1000.toLong()) {
getVoicePackages()
}
}
}
})
}
} else {
getVoicePackages()
}
}
private fun getVoicePackages() {
voiceCatalog.refreshVoiceSkins()
val voicePackages = voiceCatalog.catalogList
for (vPackage in voicePackages) {
if (vPackage.bcP47Code.compareTo("pt-BR") == 0) {
if (vPackage.isTts) {
id = vPackage.id
downloadIfNotInstalled()
break
}
}
}
}
private fun downloadIfNotInstalled() {
if (!voiceCatalog.isLocalVoiceSkin(id)){
voiceCatalog.setOnProgressEventListener(setOnProgressEventListener)
voiceCatalog.downloadVoice(id, onDownloadDoneListener)
}
}
//Listener
private val setOnProgressEventListener = object : VoiceCatalog.OnProgressListener{
override fun onProgress(p0: Int) {
Toast.makeText(m_MapFragment.m_activity.applicationContext,
"Download: " + p0, Toast.LENGTH_SHORT).show()
}
}
private val onDownloadDoneListener = object : VoiceCatalog.OnDownloadDoneListener {
override fun onDownloadDone(p0: VoiceCatalog.Error?) {
if (p0 == VoiceCatalog.Error.NONE) {
Toast.makeText(m_MapFragment.m_activity.applicationContext,
"Download de voz concluido", Toast.LENGTH_SHORT).show()
}
}
}
}
Что меня беспокоит, так это то, что старая версия не выдает ошибку «НЕИЗВЕСТНО» и работает лучше, чем новая. кажется более полным. Хотя, если я попробую использовать старую, она вообще не работает.
Надеюсь, все ясно, дайте мне знать по любым вопросам. Я проясню их как можно лучше.