Skip to content
Pablo Mejías edited this page Nov 28, 2023 · 2 revisions

La nostra app de Crazy Display, està organitzada en diferents Activities, en concret 3.

MainActivity

Aquí es gestiona tot l'inici de sessió, la connexió i l'enviament de missatges.

La sessió es controla mitjançant un AlertDialog.

public void loginAlert(LoginCallback callback) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.CustomAlertDialogStyle);
        LayoutInflater inflater = getLayoutInflater();

        View dialogView = inflater.inflate(R.layout.dialog_signin, null);
        builder.setView(dialogView);

        EditText usernameEditText = dialogView.findViewById(R.id.name);
        EditText passwordEditText = dialogView.findViewById(R.id.pass);

        builder.setTitle("Sign In")
                .setPositiveButton("Sign in", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        String username = usernameEditText.getText().toString();
                        String password = passwordEditText.getText().toString();
                        String jsonString = "{\"type\": \"login\", \"user\":\"" + username + "\", \"pass\": \"" + password + "\"}";
                        clientApp.send(jsonString);
                    }
                });

        AlertDialog dialog = builder.create();
        dialog.show();
    }

La resta de dades s'agafen en la mateixa vista, després aquestes dades es tracten en un altre arxiu.

A l'hora d'emmagatzemar els missatges optem per crear una nova classe anomenada Message, on guarden dades del missatge, després la podem serialitzar i guardar en el dispositiu.

class Message implements Serializable{
    String text;
    Date date;
    Message(String text){
        this.text = text;
        this.date = new Date();
    }

    public String toString() {
        return text;
    }
}

ListActivity

Aquí tenim un codi simple en el qual es gestiona els missatges enviats amb anterioritat, els quals arriben mitjançant un Array que en l'arxiu anterior s'ha omplert amb les dades emmagatzemades i el nou missatge, si és que n'hi ha. Aquests es mostren en un listView i dona la possiblitat de poder-los tornar a enviar.

imgSel

És una view similar a l'anterior, però es mostren imatges que es poden enviar a la pantalla. Ho fem mitjançant el següent procés

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.crazy_dyamond);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

byte[] byteArray = byteArrayOutputStream .toByteArray();
String encodedImage = Base64.encodeToString(byteArray, Base64.NO_WRAP);

MainActivity.clientApp.send("{\"type\": \"img\", \"image\": \""+encodedImage+"\", \"ext\": \"jpg\"}");

clientApp

Per últim, tenim aquest arxiu el qual gestiona la comunicació amb el server. El qual estructura els JSON amb els missatges o imatges, també gestiona si el servidor li ha verificat l'usuari i li dona accés a l'aplicació.

Clone this wiki locally