¡Soy español en Android!

Hola a todos!

Como os comenté en el post anterior, en septiembre empecé un Máster de Ingeniería Informática por la UNED. Cuando ví las asignaturas, se me iluminaron los ojos al leer ‘Sistemas operativos de dispositivos móviles’. Mi gozo en un pozo al ver que era optativa, pero bueno, oye, que la iba a cursar estaba seguro.

La asignatura tiene nueve temas, en los que cinco de ellos son de Android y el resto de iOS. El temario sobre ambos sistemas operativos está muy bien estructurado, y explicado, entra en detalles que como desarrollador de aplicaciones no conoces.

En el caso de Android explica en detalle cada uno de los ficheros necesarios para el boot y los pasos necesarios en el arranque. Entendí por fin quién o qué es zygote, y como funciona. Son transparencias realmente recomendables.

La primera práctica de la asignatura fue arrancar un emulador y meterse en la shell del dispositivo. Una vez ahí podías ver los ficheros de los que se hablaba en la teoría, y como con todo en la vida, es interesante ver que la teoría se puede aplicar a la práctica.

La segunda práctica consiste en hacer una aplicación. Esta aplicación consta de un cuadro de texto en el que el usuario introduce su nombre, y seguidamente, aparece en pantalla un saludo personalizado con su nombre. A medida que avanzas la práctica se complica. Se van añadiendo funcionalidades como guardar el nombre del usuario en disco para cuando arranque la aplicación, aparezca el saludo ya sin que se vuelva a introducir su nombre.

Una práctica introductoria, pero interesante que te explica lo que es el framework de Android y como funciona. También te familiarizas con el uso de Android Studio y el emulador si no lo habías usado antes.

Hasta aquí, todo perfecto e interesante. Pero me gustaría enseñaros el código final de la práctica siguiendo las indicaciones de la memoria.

public class ActividadPrincipal extends AppCompatActivity {

    public final static String SALUDO = "com.uned.dia.saludar.SALUDO";
    public final static String NOMBRE_GUARDADO_EN_DISCO = "com.uned.dia.saludar.NOMBRE_GUARDADO_EN_DISCO";
    public final static String SALUDO_GUARDADO = "com.uned.dia.saludar.SALUDO_GUARDADO";
    public static final String DESPEDIDA = "com.uned.dia.saludar.DESPEDIDA";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vista_actividad_principal);

        SharedPreferences preferencias = this.getPreferences(Context.MODE_PRIVATE);
        String nombreGuardado = preferencias.getString(NOMBRE_GUARDADO_EN_DISCO, "");
        escribirNombre(nombreGuardado);
    }

    public void Despedida(View view) {
        String textoDespedida = crearDespedida(obtenerNombre());
        escribirSalida("");
        Intent intent = new Intent(this, Despedida.class);
        intent.putExtra(DESPEDIDA, textoDespedida);
        startActivity(intent);
    }

    private String crearDespedida(String s) {
        return String.format(Locale.getDefault(), getString(R.string.despedida), s);
    }

    public void GuardarNombre(View view) {
        String nombre = obtenerNombre();
        SharedPreferences preferencias = this.getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferencias.edit();
        editor.putString(NOMBRE_GUARDADO_EN_DISCO, nombre);
        editor.commit();
        escribirNombre(getString(R.string.nombre_guardado_OK));
    }

    public void SaludarOtraApp(View view) {
        String textoSaludo = crearSaludo(obtenerNombre());
        escribirSalida("");
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_TEXT, textoSaludo);
        intent.setType("text/plain");
        PackageManager packageManager = getPackageManager();
        List activities= packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        if(activities.size() > 0){ intent.putExtra(Intent.EXTRA_TEXT, textoSaludo);
            startActivity(intent);
        }
        else {
            escribirSalida( getString(R.string.error_lanzando_app));
        }
    }

    public void SaludarActividadNueva(View view) {
        String textoSaludo = crearSaludo(obtenerNombre());
        escribirSalida("");
        Intent intent = new Intent(this, MostrarSaludo.class);
        intent.putExtra(SALUDO, textoSaludo);
        startActivity(intent);
    }

    public String obtenerNombre() {
        EditText editarTexto = (EditText) findViewById(R.id.entradaNombre);
        return editarTexto.getText().toString();
    }

    public void escribirNombre(String nombre) {
        EditText editarTexto = (EditText) findViewById(R.id.entradaNombre);
        editarTexto.setText(nombre);
    }

    public String crearSaludo(String nombre) {
        String saludo = obtenerSaludoAleatorio();
        return String.format(Locale.getDefault(), saludo, nombre);
    }

    private String obtenerSaludoAleatorio() {
        String saludo;
        Random random = new Random(System.currentTimeMillis());
        int randomNum = random.nextInt(10 + 1);
        switch (randomNum) {
            case 0:
                saludo = getString(R.string.saludo_hola);
                break;
            case 1:
                saludo = getString(R.string.saludo_que_tal);
                break;
            case 2:
                saludo = getString(R.string.saludo_buenos_dias);
                break;
            case 3:
                saludo = getString(R.string.saludo_como_estas);
                break;
            case 4:
                saludo = getString(R.string.saludo_ey);
                break;
            case 5:
                saludo = getString(R.string.saludo_good_morning);
                break;
            case 6:
                saludo = getString(R.string.saludo_conocerte);
                break;
            case 7:
                saludo = getString(R.string.saludo_buenas);
                break;
            case 8:
                saludo = getString(R.string.saludo_hola_soy);
                break;
            case 9:
                saludo = getString(R.string.saludo_dia);
                break;
            default:
                saludo = getString(R.string.saludo_soy_android);
        }
        return saludo;
    }

    public String obtenerSalida(){
        TextView respuesta = (TextView) findViewById(R.id.textoSalida);
        return respuesta.getText().toString();
    }

    public void escribirSalida(String textoSalida) {
        TextView respuesta = (TextView) findViewById(R.id.textoSalida);
        respuesta.setText(textoSalida);
    }

    public void metodoSaludar(View view) {
        escribirSalida(crearSaludo(obtenerNombre()));
    }

    @Override
    public void onSaveInstanceState(Bundle datosGuardados) {
        String salida = obtenerSalida();
        datosGuardados.putString(SALUDO_GUARDADO, salida);
        super.onSaveInstanceState(datosGuardados);
    }

    @Override
    public void onRestoreInstanceState(Bundle datosGuardados) {
        super.onRestoreInstanceState(datosGuardados);
        String salida = datosGuardados.getString(SALUDO_GUARDADO);
        escribirSalida(salida);
    }
}

¿Qué os ha parecido? Mi impresión es que a estas alturas, en un máster en el que uno de los requisitos es tener un cierto nivel de inglés, se debería programar en inglés. Otra de las razones podría ser que los métodos del framework si que están en inglés y aún así los entendemos.

Los nombres de los métodos utilizados serían un inglés básico, como por ejemplo, setName o writeName.

Hasta aquí mi crítica a la práctica que he tenido que hacer hoy  🙂

Pd. ¿Qué os parece?

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s