Tutorial de bate-papo por texto (Android)
Visão geral
A API de sinalização do OpenTok permite enviar dados entre clientes conectados a uma sessão do OpenTok. É possível enviar uma mensagem de sinalização para todos os participantes conectados à sessão ou para um cliente específico.
Neste tutorial, vamos usar a API de sinalização do OpenTok para implementar um chat de texto. Você começará com uma versão completa do projeto e explorará o código que o faz funcionar.
Etapa 1: Introdução
O código desta seção está disponível no projeto Signaling do exemplos-do-SDK-do-Vonage-para-Android repositório. Caso ainda não tenha feito isso, você precisará clonar o repositório em um diretório local. Na linha de comando, execute:
git clone git@github.com:opentok/opentok-android-sdk-samples.git
Abra o Sinalização projeto no Android Studio para acompanhar.
Você precisará inserir as credenciais de autenticação para a ApiKey, o ID da sessão e o token, em OpenTokConfig arquivo. Você pode encontrar esses valores no seu Painel do Opentok.
Etapa 2: Interface do chat de texto
Para exibir nossas mensagens de bate-papo, usamos um android.widget.ListView objeto. Isso permite que o aplicativo exiba mais de uma mensagem por vez. Adicionamos o seguinte código no onCreate() método para carregar nosso layout e obter referências às suas visualizações.
setContentView(R.layout.activity_main);
messageEditTextView = findViewById(R.id.message_edit_text);
messageHistoryListView = findViewById(R.id.message_history_list_view);
// Attach data source to message history
messageHistory = new SignalMessageAdapter(this);
messageHistoryListView.setAdapter(messageHistory);
Depois de carregar nossas visualizações de layout do Android e vincular messageHistory para o messageHistoryListView, e configurar nosso editor de mensagens para enviar uma mensagem quando a tecla Enter for pressionada no teclado.
messageEditTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
InputMethodManager inputMethodManager = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
sendMessage();
return true;
}
return false;
}
});
messageEditTextView.setEnabled(false);
Etapa 3: Envio de sinais
Se você voltar ao passo 2, o sendMessage O método é chamado quando o usuário pressiona a tecla Enter no teclado. sendMessage cria um SignalMessage objeto a partir do texto visível no EditTextView
private void sendMessage() {
Log.d(TAG, "Send Message");
SignalMessage signal = new SignalMessage(messageEditTextView.getText().toString());
session.sendSignal(SIGNAL_TYPE, signal.getMessageText());
messageEditTextView.setText("");
}
Esse sinal é então enviado a todos os clientes conectados à sessão. sendSignal() é o método real do OpenTok para enviar um sinal. Ele possui dois parâmetros:
-
type(String) — Um parâmetro opcional que pode ser usado como filtro para tipos de sinais. -
data(String) — Os dados a serem enviados junto com o sinal.
Definimos o type do sinal para SIGNAL_TYPE (uma sequência de caracteres que decidimos definir como “text-signal”). Veremos mais adiante no onSignalReceived() método, no qual verificamos se o sinal recebido é desse tipo. Embora, nesta aplicação, esse seja nosso único tipo de sinal, você tem a flexibilidade de utilizar vários tipos diferentes de sinais.
Etapa 4: Configurando o SignalListener
Agora precisamos definir o signalListener propriedade como SignalListener. No onCreate() método de MainActivity Na classe, adicionamos:
session.setSignalListener(signalListener);
Isso define o signalListener objeto como o implementador do SubscriberKit.SignalListener interface. Essa interface define o onSignalReceived(session, type, data, connection) método, que é chamado quando o cliente recebe um sinal da sessão:
Etapa 5: Recebendo sinais com onSignalReceived
No corpo do onSignalReceived)() Nesse método, queremos primeiro distinguir entre os sinais enviados pelo cliente Android local e os enviados por outros clientes conectados à sessão. Embora essa verificação não seja necessária para todas as Applications, o nosso é um aplicativo de bate-papo por texto, e queremos deixar claro quais mensagens foram enviadas e quais foram recebidas.
Para isso, verificamos o objeto `Connection`. O objeto `Connection` no argumento do método pertence ao cliente do qual o sinal foi enviado. Isso só corresponderá ao objeto `Connection` retornado por mSession.getConnection() (que retorna a conexão do cliente local) se o sinal tiver sido enviado pelo cliente local. O remote a variável está definida como true se o sinal vier de uma conexão diferente da nossa; caso contrário, ele é definido como false.
@Override
public void onSignalReceived(Session session, String type, String data, Connection connection) {
boolean remote = !connection.equals(session.getConnection());
if (type != null && type.equals(SIGNAL_TYPE)) {
showMessage(data, remote);
}
}
Em seguida, chamamos a showMessage(messageData, remote) método, passando remote. A jusante, o SignalMessageAdapter por exemplo, messageHistoryListView usará isso para posicionar a visualização que contém os dados do sinal no lado direito da tela, caso esteja sendo enviado, e no lado esquerdo, caso esteja sendo recebido.
private void showMessage(String messageData, boolean remote) {
SignalMessage message = new SignalMessage(messageData, remote);
messageHistory.add(message);
}
Para obter mais informações sobre as classes do Android utilizadas nesta implementação de chat de texto, consulte a documentação de referência do Android para o ArrayAdaptor e ListView
Parabéns! Você concluiu o Tutorial de bate-papo por texto para Android.
Você pode continuar experimentando e ajustando o código que desenvolveu aqui, ou conferir o Próximos passos abaixo. Para obter mais informações sobre sinalização, consulte o Guia do desenvolvedor de sinalização do OpenTok.
Próximos passos
Quando terminar esta seção, continue desenvolvendo e aprimorando seu aplicativo OpenTok com estes recursos úteis:
- Referência do SDK do Android — explore os métodos e eventos associados ao SDK do OpenTok para Android
- Tutoriais adicionais — guias passo a passo para a implementação de outros recursos e casos de uso do OpenTok
- Exemplos de código — uma coleção de aplicativos de exemplo que exploram diversos recursos e casos de uso do OpenTok
- Guias para desenvolvedores — documentação detalhada sobre todos os recursos e funcionalidades do OpenTok