Android Local在使用TTS通过intent从条形码扫描仪说出字符串时发生变化

Android Local在使用TTS通过intent从条形码扫描仪说出字符串时发生变化,android,android-intent,locale,barcode,text-to-speech,Android,Android Intent,Locale,Barcode,Text To Speech,我正在开发一个应用程序,通过intent(条形码扫描仪)使用外部应用程序扫描条形码。在收到扫描结果后,我使用该结果在数据库中查找文本该文本可以是英语或法语,然后我通过另一个意图将其发送到另一个活动,该活动将通过TTS进行声音合成。 我的应用程序应该支持法语和英语。我通过这种方式玩booleens来做到这一点: private String localelang = Locale.getDefault().getISO3Language(); private boolean is_fr = loc

我正在开发一个应用程序,通过intent(条形码扫描仪)使用外部应用程序扫描条形码。在收到扫描结果后,我使用该结果在数据库中查找文本该文本可以是英语或法语,然后我通过另一个意图将其发送到另一个活动,该活动将通过TTS进行声音合成。 我的应用程序应该支持法语和英语。我通过这种方式玩booleens来做到这一点:

private String localelang = Locale.getDefault().getISO3Language();
private boolean is_fr = localelang.equalsIgnoreCase("fra");
我的目标是强制我的应用程序强制TTS说英语口音,如果当地人不是法国人(所以他们可以是日本人或者我的TTS应该保持英语口音的任何人)

我通常会为设备选择除frnech或英语以外的语言,问题来了。因为在调用条形码扫描器后,我的本地人似乎改变了一次以匹配设备,因为条形码扫描器的外部意图,无论我尝试什么,我的TTS都会谈论设备的口音

我知道这看起来很复杂,但我的代码太长,无法在邮件中发送。 这是一个解决方案,我尝试了很多,但都没有成功:

 public void onInit(int status) {       
        String synthesis = Aparler.toString();
    if (!is_fr){
        vocal.setLanguage(Locale.US);               
        vocal.speak( synthesis, TextToSpeech.QUEUE_FLUSH,null);
    }
    else if(is_fr){
        vocal.setLanguage(Locale.FRANCE);           
        vocal.speak( synthesis, TextToSpeech.QUEUE_FLUSH,null);
    }
当我使用条形码扫描器时,一切正常,我确信通过INTENT调用另一个应用程序的事实是造成这种情况的原因。我甚至不能调试它,因为AVD不支持相机扫描。。。 真让人沮丧。。。
谢谢你帮助我,原谅我的英语不好。

我发现有一个选项是文本到规范设置,它覆盖了我的语言选择,我禁用了它,所有的工作都很有魅力

“我甚至无法调试它,因为AVD不支持摄像头扫描…”在您的设备上转到:设置->应用程序->开发并检查USB调试选项。你现在可以在你的设备上调试,而不仅仅是AVD。谢谢,我昨天开始用我的设备进行调试,我发现有一个选项是文本到规范设置,它覆盖了我的语言选择,我禁用了它,所有的工作都很有魅力!很好:)你应该自己加上这个作为答案,然后接受它。它将来可能对其他人有用。