Back to project page ANA.
The source code is released under:
GNU General Public License
If you think the Android project ANA listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package net.guimi.ANA; /*// w ww .j a v a 2s . co m * Copyright (c) 2004-2010 Luis Miguel Armendriz * http://guimi.net * * Est permitido copiar, distribuir y/o modificar * los desarrollos bajo los trminos de la * GNU General Public License, Versin 2 * * Para obtener una copia de dicha licencia * visite http://www.fsf.org/licenses/gpl.txt. * */ import android.provider.Settings.Secure; import net.guimi.ANA.AcelerometroGestor; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.PowerManager; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; /** * ANA: Ataque Nuclear Androide * ANA: Android Nuclear Attack * * Tpico juego de aviones/naves en el que el jugador debe dispara a (casi)todo lo * que ve. * * @author guimi * */ public class ANAJuego extends Activity implements AcelerometroInterfaz { // Gestin de energa para evitar que a mitad juego se bloquee el dispositivo //+ por no estar en uso (porque no se pulsan teclas) protected PowerManager.WakeLock miWakeLock; private String android_id; // Definimos los identificadores de los diferentes dilogos a mostrar static final int DIALOGO_SALIR = 1; /** Variable auxiliar para gestionar la vista principal */ private Pantalla miPantalla; /** Variable auxiliar para guardar nuestro contexto. * Podra sustituirse por getContext() */ private static Context miContexto; // Esta variable nos permite identificar el estado (Bundle) de la aplicacin // a la hora de guardarlo y cargarlo //private static String nombreEstado = "ANA-guimi"; /** Variable auxiliar que indica la versin de la aplicacin */ private static String versionAplicacion; /** * Sobreescribimos la funcin de creacin de la actividad. */ @Override public void onCreate(Bundle miEstadodeInstancia) { super.onCreate(miEstadodeInstancia); // Obtenemos datos enviados en el "fardo" (Bundle) por la actividad padre Bundle miBundle = this.getIntent().getExtras(); // Esta variable nos indica si debemos usar sonido versionAplicacion = miBundle.getString("versionAplicacion"); // Necesitaremos el contexto para el acelermetro miContexto = this; android_id = Secure.getString(miContexto.getContentResolver(), Secure.ANDROID_ID); // En el emulador android_id == null if (android_id == null) android_id = "ANA_emulador"; //scoreNinjaAdapter = new ScoreNinjaAdapter(miContexto, "ana-androidnuclearattack", "4099FBE1133A4DC0A743BDDD736B721C"); // Gestin de energa final PowerManager miPowerManager = (PowerManager)miContexto.getSystemService(Context.POWER_SERVICE); miWakeLock = miPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "ANAJuego"); miWakeLock.acquire(); // Generamos nuestra pantalla de juego miPantalla = new Pantalla(this); miPantalla.leePreferencias(); miPantalla.ponAndroid_id(android_id); miPantalla.ponVersionAplicacion(versionAplicacion); //miPantalla.ponModoJuego(Pantalla.MODO_EN_MARCHA); // Cargamos nuestra vista (nuestra pantalla de juego) setContentView(miPantalla); /* // Si el estado es nulo, se acaba de crear la actividad if (miEstadodeInstancia == null) { // Configuramos un nuevo juego } else { // Venimos de una pausa Bundle mapa = miEstadodeInstancia.getBundle(nombreEstado); if (mapa != null) { //miPantalla.recuperaEstado(mapa); } else { //miPantalla.ponModoJuego(Pantalla.PAUSA); } } */ } /** * Sobreescribimos la funcin onPause para que se pause el juego * al pausarse la actividad. */ @Override protected void onPause() { super.onPause(); // Desbloqueamos el gestor de energa if (miWakeLock.isHeld()) { miWakeLock.release(); } if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) miPantalla.ponModoJuego(Pantalla.MODO_PAUSA); } /** Al ponerse en marcha la aplicacin lanzamos la interfaz */ @Override protected void onResume() { super.onResume(); // Bloqueamos el gestor de energa miWakeLock.acquire(); // Conectamos el interfaz del acelermetro if (AcelerometroGestor.estaSoportado(miContexto)) { AcelerometroGestor.iniciaInterfaz(this, miContexto); } } /** Al pararse la aplicacin paramos la interfaz */ @Override protected void onDestroy() { super.onDestroy(); // Desbloqueamos el gestor de energa if (miWakeLock.isHeld()) { miWakeLock.release(); } // Desconectamos el interfaz del acelermetro if (AcelerometroGestor.estaFuncionando()) { AcelerometroGestor.paraInterfaces(); } } /** * Sobreescribimos la funcin onSaveInstanceState para que se guarde el * estado del juego al guardarse el estado de la actividad. */ // TODO /* @Override public void onSaveInstanceState(Bundle outState) { outState.putBundle(nombreEstado, miSerpienteVista.guardaEstado()); } */ //************************************************************************ // PULSACIONES DE TECLAS DE SISTEMA (BACK, MENU...) //************************************************************************ /** * Sobreescribimos la funcin onKeyDown para capturar la tecla "back" * y redirigir al dilogo "Salir" */ @Override public boolean onKeyDown(int idTecla, KeyEvent evento) { if (idTecla == KeyEvent.KEYCODE_BACK) { // Capturamos al tecla "back" // Si el juego est en marcha, hacemos una pausa if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) { miPantalla.ponModoJuego(Pantalla.MODO_PAUSA); } else if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) { this.finish(); } else { showDialog(DIALOGO_SALIR); } } else if (idTecla == KeyEvent.KEYCODE_MENU) { // Capturamos al tecla "menu" // Si el juego est en marcha, hacemos una pausa if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) { miPantalla.ponModoJuego(Pantalla.MODO_PAUSA); } // Propagamos la pulsacin de la tecla, para que cumpla sus funciones return false; } // Si no hemos gestionado el evento de tecla, lo propagamos return false; } //************************************************************************ // MENU //************************************************************************ /** * Sobreescribimos la funcin onCreateOptionsMenu para aadir nuestro men */ @Override public boolean onCreateOptionsMenu(Menu miMenu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_juego, miMenu); return true; } /** * Sobreescribimos la funcin onOptionsItemSelected para incluir opciones * en el men */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuJuegoJugar: miPantalla.leePreferencias(); if (miPantalla.leeModoJuego() == Pantalla.MODO_PAUSA) { miPantalla.ponModoJuego(Pantalla.MODO_EN_MARCHA); } else if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) { miPantalla.iniciaJuego(); } break; case R.id.menuJuegoPreferencias: Intent actividadPreferencias = new Intent(getBaseContext(), Preferencias.class); startActivity(actividadPreferencias); break; case R.id.menuJuegoSalir: if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) { this.finish(); } else { showDialog(DIALOGO_SALIR); } // Si el juego est en pausa (bien porque lo estaba, bien porque la acabamos // de poner, solicitamos confirmacin para salir //if (miSerpienteVista.leeModoJuego() == SerpienteVista.PAUSA) { showDialog(DIALOGO_SALIR); //} else { // Si el juego no est pausado (principio o final de juego) salimos sin ms //this.finish(); //} break; } return true; } //************************************************************************ // DI??LOGOS //************************************************************************ /** * Funcin de creacin de dilogos llamada desde showDialog * */ protected Dialog onCreateDialog(int idDialogo) { Dialog miDialogo = null; switch(idDialogo) { case DIALOGO_SALIR: // Generamos un constructor para el dilogo "Salir" AlertDialog.Builder dialogoSalir = new AlertDialog.Builder(this); dialogoSalir.setMessage(R.string.menuSalirTexto_Jugando) .setCancelable(false) .setPositiveButton(R.string.menuBotonSi, new DialogInterface.OnClickListener() { public void onClick(DialogInterface miDialogo, int id) { finish(); } }) .setNegativeButton(R.string.menuBotonNo, new DialogInterface.OnClickListener() { public void onClick(DialogInterface miDialogo, int id) { miDialogo.cancel(); } }); AlertDialog miDialogoSalir = dialogoSalir.create(); // Titulo del dilogo miDialogoSalir.setTitle(R.string.menuSalirTitulo); // Icono para el dilogo miDialogoSalir.setIcon(R.drawable.icono); // Asignamos el dilogo recien creado al que devolver la funcin miDialogo=miDialogoSalir; break; default: miDialogo = null; } return miDialogo; } //************************************************************************ // INTERFAZ ACELERMETRO //************************************************************************ /** Funcin que se lanza al detectarse un cambio en el acelermetro **/ public void onAcelerometroCambio(float x, float y, float z) { miPantalla.mueveHeroeAcel(-x, y); } /** Funcin que se lanza al detectarse una agitacin **/ public void onAcelerometroAgitacion(float fuerza) { ; } /** Funcin que se lanza al detectarse una agitacin instantnea **/ public void onAcelerometroAgitacionInstantanea(float fuerza) { ; } }