2017-11-18 3 views
0

Ich lese viele Blogs, aber immer noch mit dem Problem konfrontiert mit dem Sprechen der aktualisierten Textzeichenfolge nach dem Aufruf von Shutdown. Wenn Sie das nächste Mal auf "Play" klicken, sprechen Sie eine alte Saite und eine neue nach der anderen. Hier ist der Code:Queue_Flush Nicht spülen Text und Sprechen aktualisiert

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    setContentView(R.layout.batful); 
    try { 


     editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit(); 
     // editor.putBoolean("b", true).apply(); 
     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     value = sharedPreferences.getString("personalmessage", null); 
     Log.e("Voice Message create: ", value); 


     value = sharedPreferences.getString("personalmessage", null); 

     textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { 
      @Override 
      public void onInit(int i) { 
       if (i != TextToSpeech.ERROR) { 

        textToSpeech.setLanguage(Locale.ENGLISH); 
         /* textToSpeech.setLanguage(Locale.getDefault());*/ 

        final Handler h = new Handler(); 

        h.postDelayed(new Runnable() { 
         public void run() { 

          if (Build.VERSION.SDK_INT >= 21) { 

           textToSpeech.speak(value, TextToSpeech.QUEUE_FLUSH, null, null); 

          } else { 
           textToSpeech.speak(value, TextToSpeech.QUEUE_FLUSH, null); 
          } 
          h.postDelayed(this, delay); 
         } 
        }, delay); 

       } 
      } 
     }); 


     stopvol = (TextView) 

       findViewById(R.id.stop); 
     stopvol.setOnClickListener(new View.OnClickListener() 

     { 
      @Override 
      public void onClick(View view) { 

       turnoffbeep(getApplicationContext()); 
       finish(); 
      } 
     }); 
    } catch (
      Exception e) 

    { 
     e.printStackTrace(); 
    } 

} 

static void turnoffbeep(Context contextforstat) { 

    Log.i(TAG, "Turn Off beep"); 

    if ((textToSpeech != null)) { 
     // textToSpeech.stop(); 
     textToSpeech.shutdown(); 


    } 
} 

Wenn Sie sehen, wird QUEUE_FLUSH hinzugefügt, aber die Ergebnisse werden nicht erreicht. Wenn ich mir die Android-Dokumentation anschaue, glaube ich, dass ich richtig folge. Immer noch jemand hilft mir bei der Suche nach dem richtigen Grund für das Löschen alten Text, pls

Nur andere Tatsache, wenn ich die Eingabe von gemeinsamen Präferenz ändern, um Text zu bearbeiten, spricht es neuesten Text nicht alt.

Antwort

0

nach R & D bekam Problem, es war Handler, die Chaos erstellen und alten Text auswählen. Beim Herunterfahren wird der Handler nicht abgebrochen und bei der Wiedergabe wurde ein weiterer Handler hinzugefügt.

Verwandte Themen