Ich versuche, eine App dazu zu bringen, eine Zeichenfolge aus einer Socket-Verbindung zu lesen, aber nach ein paar Stunden hört die App auf zu sprechen (ohne Ausnahmen). Ich bin sicher, dass die App noch läuft, weil der Server, der die Zeichenfolge sendet, weiterhin das Antwortecho nach dem Senden erkennt.TextToSpeech funktioniert nach ein paar Stunden nicht mehr
public class MainActivity extends AppCompatActivity {
TextToSpeech textToSpeech;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
textToSpeech.setLanguage(Locale.ITALY);
}
}
});
Thread socketT = new Thread(new SocketThread());
socketT.start();
}
@Override
public void onDestroy() {
if (textToSpeech != null) {
textToSpeech.stop();
textToSpeech.shutdown();
}
super.onDestroy();
}
private class SocketThread extends Thread {
static final int socketPort = 3333;
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(socketPort);
try {
while(true) {
Socket clientSocket = serverSocket.accept();
try {
new ServerThread(clientSocket);
} catch(IOException e) {
clientSocket.close();
} }
}
catch (IOException e) {
}
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
class ServerThread extends Thread {
private int counter = 0;
private int id = ++counter;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s) throws IOException {
socket = s;
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
out = new PrintWriter(new BufferedWriter(osw), true);
start();
}
public void run() {
try {
while (true) {
String str = in.readLine();
textToSpeech.speak(str, TextToSpeech.QUEUE_FLUSH, null);
}
} catch (IOException e) {}
try {
socket.close();
} catch(IOException e) {}
}
}
}
}
Danke, ich werde versuchen, und ich werde euch wissen lassen. Aber das erklärt nicht, warum es anfänglich funktioniert und nach einigen Stunden nicht mehr funktioniert – mike5v
Nun, ich stimme dem zu. Für eine genauere Analyse benötige ich Android-Debug-Protokolle. Könnten Sie den Logcat-Inhalt aktualisieren? – Kae10
Leider besteht das Problem weiterhin. Wenn ich die Anwendung auf dem Emulator starten, funktioniert TTS immer, während auf einer Android-Box funktioniert es nach einer Weile, so kann ich ein Protokoll nicht abrufen, ich werde versuchen, eine App für die Protokolle zu installieren – mike5v