Testando seu código
Neste momento, o seu MainActivity.java O arquivo deve ficar mais ou menos assim (com alguns ajustes):
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private Session session;
private SignalMessageAdapter messageHistory;
private EditText messageEditTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
messageEditTextView = findViewById(R.id.message_edit_text);
ListView messageHistoryListView = findViewById(R.id.message_history_list_view);
// Attach data source to message history
messageHistory = new SignalMessageAdapter(this);
messageHistoryListView.setAdapter(messageHistory);
messageEditTextView.setEnabled(false);
session = new Session.Builder(this, VonageVideoSDKConfig.APP_ID, VonageVideoSDKConfig.SESSION_ID).build();
session.setSessionListener(sessionListener);
session.setSignalListener(signalListener);
session.connect(VonageVideoSDKConfig.TOKEN);
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;
}
});
}
private void sendMessage() {
Log.d(TAG, "Send Message");
String data = messageEditTextView.getText().toString();
session.sendSignal("msg", data);
SignalMessage message = new SignalMessage(data);
messageHistory.add(message);
messageEditTextView.setText("");
}
private final Session.SessionListener sessionListener = new Session.SessionListener() {
@Override
public void onConnected(Session session) {
messageEditTextView.setEnabled(true);
}
@Override
public void onDisconnected(Session session) {
messageEditTextView.setEnabled(false);
}
@Override
public void onError(Session session, OpentokError opentokError) {
Log.i(TAG,"Session error: " + opentokError.getMessage());
}
@Override
public void onStreamReceived(Session session, Stream stream) {}
@Override
public void onStreamDropped(Session session, Stream stream) {}
};
private final Session.SignalListener signalListener = new Session.SignalListener() {
@Override
public void onSignalReceived(Session session, String type, String data, Connection connection) {
if (!connection.equals(session.getConnection()) && (type != null && type.equals("msg"))) {
SignalMessage message = new SignalMessage(data, true);
messageHistory.add(message);
}
}
};
}
No seu código finalizado, você deve ter valores fixos para substituir YOUR_APP_ID, YOUR_SESSION_ID e YOUR_TOKEN no VonageVideoSDKConfig classe — se você ainda não fez isso, consulte Configurando a autenticação acima.
- Compile e execute o aplicativo no Android Studio.
- Digite algum texto no campo de texto e envie-o.
- Você deverá ver a mensagem ser adicionada ao histórico de mensagens.
Em seguida, podemos testar como fica se outra pessoa enviar uma mensagem. Podemos simular isso executando o aplicativo novamente em um emulador ou dispositivo diferente:
- Compile e execute o aplicativo em um emulador diferente.
- Digite algum texto no campo de texto e envie-o nos dois emuladores.
- Você deverá ver as duas mensagens sendo adicionadas ao histórico de mensagens.
Dicas para solução de problemas: Se você não conseguir se conectar à sessão, verifique se há erros na janela Logcat do Android Studio. O problema mais provável é que sua chave de API, ID de sessão ou token não esteja configurado corretamente. Como você codificou suas credenciais diretamente no código, também é possível que seu token tenha expirado. Se você receber um erro de compilação relacionado à versão de compilação, é possível alterá-la no nível do aplicativo build.grade arquivo.
Bate-papo básico por texto
Siga este tutorial para criar um chat de texto básico do zero usando a Video API da Vonage. Essa é a maneira mais rápida de desenvolver uma prova de conceito para essa funcionalidade na plataforma de vídeo.