インテントを介して外部アプリケーション(バーコードスキャナー)を使用してバーコードをスキャンするアプリケーションを開発しています。スキャンの結果を受け取った後、この結果を使用してデータベース内のテキストを検索します。このテキストは英語またはフランス語のいずれかであり、TTSを介して音声合成を行う別のアクティビティに別のインテントを介して送信します。私のアプリケーションはフランス語と英語をサポートすることになっています。私はこのようにブール値で遊ぶことによってこれを行うことができました:
private String localelang = Locale.getDefault().getISO3Language();
private boolean is_fr = localelang.equalsIgnoreCase("fra");
私の目標は、地元の人がフランス語でない場合、アプリにTTSに英語のアクセントを話させるように強制することです(したがって、彼らは日本人であるか、私のTTSが英語のアクセントを維持する必要があります)。
私は意図的にデバイスにfrnechまたはenglish以外の言語を選択しますが、ここで問題が発生します。バーコードスキャナーを呼び出した後、バーコードスキャナーに対するこの外部の意図のために、私の地元の人々はデバイスに一致するように一度変更されたようです。
複雑に見えることは知っていますが、コードが長すぎてメッセージを送信できません。これは私が試してきた多くのことの間の1つの解決策ですが無駄です:
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);
}
バーコードスキャナーを省略すると、すべてがうまくいきます。intnentを介して別のアプリを呼び出すという事実が原因であると確信しています。AVDがスキャンするカメラをサポートしていないため、デバッグすらできません...本当にイライラします...私を助けてくれてありがとう、そして私の貧弱な英語を許してくれてありがとう。