Моя проблема, вероятно, будет простой и неудобной одновременно, но я немного застрял.
У меня есть класс Main.java, который расширяет Activity.
Внутрив этом классе я делаю следующее:
ringerServer = new Thread(new RingerServer());
ringerServer.start();
Я хочу, чтобы поток RingerServer работал непрерывно.
Внутри этого потока я слушаю соединение TCP.Если я получу один, я запускаю другой класс, который отправляет и получает пакет UDP.
public class RingerServer implements Runnable {
public static final int SERVERPORT = 4445; // Default port to connect to
@Override
public void run() {
try {
// Create a socket for handling incoming requests
ServerSocket server = new ServerSocket(SERVERPORT);
while (!VoIPCall.onCall) {
// Wait for an incoming connection
Socket clientSocket = server.accept();
// TODO: Display a message for the user to accept or decline
// For now, automatically accept the call
Intent myIntent = new Intent(null, VoIPCall.class);
// Put the IP as a parameter
myIntent.putExtra("inetAddress", clientSocket.getInetAddress());
startActivity(myIntent);
}
} catch (IOException e) {
Log.e("TCP", "S: Error", e);
}
}
}
Моя проблема связана со строками:
Intent myIntent = new Intent(null, VoIPCall.class);
myIntent.putExtra("inetAddress", clientSocket.getInetAddress());
startActivity(myIntent);
Эти строки будут работать нормально внутриActivity, но он не жалуется, поскольку является Thread, он не знает о классе Activity, потому что он не расширяет его, но реализует Runnable.
Я не уверен, как могузаставить мою программу продолжать работу RingerServer, но основной поток должен перейти в класс VoIPCall.Есть идеи, пожалуйста?
Я очень ценю вашу помощь.
Большое спасибо,
Джари