J'essaie d'obtenir la TTS de Android à courir à l'intérieur d'un service, mais je ne sais pas pourquoi cela ne fonctionne pas, il compile, mais cela ne fonctionne pas.
Le toast Notification fonctionnent cependant. P>
package alarm.test;
import android.app.Service;
import com.google.tts.TextToSpeechBeta;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class MyAlarmService extends Service {
private TextToSpeechBeta myTts;
private TextToSpeechBeta.OnInitListener ttsInitListener = new TextToSpeechBeta.OnInitListener() {
public void onInit( int arg0, int arg1 ) {
myTts.speak("", 0, null);
}
};
@Override
public void onCreate() {
// TODO Auto-generated method stub
myTts = new TextToSpeechBeta( this,
ttsInitListener );
Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
myTts.speak("something is working", TextToSpeechBeta.QUEUE_FLUSH, null);
Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show();
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show();
return super.onUnbind(intent);
}
}
3 Réponses :
Eh bien, faire cette question m'a donné une meilleure réponse que je puisse trouver avec Google. P>
Allez à la réponse à cette question et changez-la pour correspondre à votre application. P>
TTS ne parle pas d'un service alors qu'il le fait d'une activité dans Android P>
Vous pouvez faire comme ci-dessous: ça marche pour moi.
Vous devez créer une activité pour démarrer ce service, comme ceci: this.startservice (intention)
https://developer.android.com/reference/andrroid/ Discours / TTS / TextTostStSpectreService.html P>
Depuis l'API Niveau 14, Android a ajouté une classe de service TextStoStoShech par défaut qui fait ce que vous voulez. P>
Veuillez décrire plus en détail ce que vous entendez par "ne fonctionne pas". Que voyez-vous sur logcat?
Débogou / texttostostSpececeta (512): TextTostSpecreta non mis à jour - DFAUING à la plate-forme de base TextToStoSoSech pour la parole Verbose / TtsSice (418): TTS Service reçu info / TtsService (418): Arrêter Info / TtsService (418): Arrêté Verbose / Ttsservice (418) : TTS Processing: Verbose / TtsSservice (418): Ttsservice.setlanguage (Eng, USA,) Info / Svox Pico Engine (418): Langue déjà chargée (EN-US == EN-US) Débogou / DALVIKVM (68): GC_CONCURENT Freed 719k, 48% gratuit 4093K / 7751K, externe 2041K / 2378K, pause de 21ms + 27ms debug / SNTPClient (68): Demande de demande Échec de la demande: Java.net.socketException: Adresse Famille non prise en charge par protocole