Как правильно определить причину VoiceCatalog.Error.Unknown в HereMaps VoiceCatalog.downloadCatalog? - PullRequest
0 голосов
/ 29 мая 2020

Я получаю постоянный ответ 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()
            }
        }
    }
}

Что меня беспокоит, так это то, что старая версия не выдает ошибку «НЕИЗВЕСТНО» и работает лучше, чем новая. кажется более полным. Хотя, если я попробую использовать старую, она вообще не работает.

Надеюсь, все ясно, дайте мне знать по любым вопросам. Я проясню их как можно лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...