Страница 1 из 1

Передача данных

Добавлено: 28 фев 2016, 11:21
kr0n4ik
Доброе время суток. Хочу написать чат. Вопрос в следующем. Есть главная активность(main), где происходит соединение с сервером, обработка запросов и т.д. Как реализовать отправку сообщений:
1. Если создавать отдельную активность(chat), то не понятно как вызвать функции отправки из из главной активности?
2. Может есть другой способ?
за ранее спасибо

Re: Передача данных

Добавлено: 02 мар 2016, 08:48
Sergey777
kr0n4ik писал(а):Доброе время суток. Хочу написать чат. Вопрос в следующем. Есть главная активность(main), где происходит соединение с сервером, обработка запросов и т.д. Как реализовать отправку сообщений:
1. Если создавать отдельную активность(chat), то не понятно как вызвать функции отправки из из главной активности?
2. Может есть другой способ?
за ранее спасибо
Здравствуйте. Создайте отдельный класс, в котором реализуйте: соединение с сервером, получение сообщений и отправку сообщений. И обращайтесь из активности к нему. Или вопрос относиться к технологии отправки и получения данных? Тогда Вам нужно уточнить каким образом Вы реализовали соединение с сервером? (Socket, UDP, через методы HTTP: POST-запрос, GET-запрос)

Re: Передача данных

Добавлено: 08 мар 2016, 21:40
kr0n4ik
Спасибо большое, я сделал на service по подсказке gerc'а

Код: Выделить всё

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import com.codebutler.android_websockets.WebSocketClient;
import org.apache.http.message.BasicNameValuePair;
import java.net.URI;
import java.util.List;

public class WebSocketService extends Service {
    Intent BroadCastIntent;
    private WebSocketClient client = null;
    List<BasicNameValuePair> extraHeaders;

    public WebSocketService() {
        Log.d("chat", "MyServiceCreate");
        BroadCastIntent = new Intent("c34852urt7234056u0u234895y7893");
        client = new WebSocketClient(URI.create("ws://192.168.0.102:8080"), new WebSocketClient.Listener() {

            @Override
            public void onConnect() {
                Log.d("chat", "WebSocket Connect");
            }

            @Override
            public void onMessage(String message) {
                Log.d("chat", String.format("WebSocket Message %s", message));
                sendBroadcast(BroadCastIntent.putExtra("trigger", 1).putExtra("message", message));
            }

            @Override
            public void onMessage(byte[] data) {

            }

            @Override
            public void onDisconnect(int code, String reason) {
                Log.d("chat", String.format("WebSocket Disconnect %s, %s", code, reason));
            }

            @Override
            public void onError(Exception error) {
                Log.d("chat", String.format(" WebSocket ERROR %s", error));
            }
        }, extraHeaders);
        client.connect();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent != null && intent.getExtras() != null) {
            Log.d("chat", intent.toString());
            client.send(intent.getStringExtra("message"));
        }
        return START_STICKY;
    }
}
Если есть конструктивная критика по поводу моего метода, будет очень полезно послушать