Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando...

14
Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Transcript of Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando...

Page 1: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

1

Tabla de la BD local

Page 2: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

2

VISTA configuracion.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

android:background="#666"

tools:context="com.aur3liux.alopez.awat.Configuracion">

<TabHost

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/tabHost"

android:isScrollContainer="true"

android:layout_alignParentTop="true">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<TabWidget

android:id="@android:id/tabs"

android:layout_width="match_parent"

android:layout_height="wrap_content"></TabWidget>

<FrameLayout

android:id="@android:id/tabcontent"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="20dp"

android:background="@android:drawable/alert_light_frame">

<!--Primer Tab -->

<LinearLayout

android:id="@+id/tab_seguridad"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

<TextView

android:layout_width="wrap_content"

android:layout_height="50dp"

android:gravity="bottom"

android:text="@string/tx_lb_username"

style="@style/titulo1"

android:id="@+id/textView" />

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:maxLength="30"

android:id="@+id/tx_username" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/tx_lb_password"

style="@style/titulo1"

android:id="@+id/textView2" />

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="textPassword"

android:maxLength="20"

android:ems="10"

android:id="@+id/tx_password" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/tx_lb_confirma_password"

style="@style/titulo1"

android:id="@+id/textView3" />

Page 3: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

3

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="textPassword"

android:maxLength="20"

android:ems="10"

android:id="@+id/tx_password_confirm" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_numero_telefono"

style="@style/titulo1"

android:id="@+id/textView5" />

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="phone"

android:maxLength="15"

android:ems="10"

android:id="@+id/tx_numerotelefono" />

</LinearLayout>

<!--Segundo Tab -->

<LinearLayout

android:id="@+id/tab_contactos"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

<!--Primer contacto-->

<TextView

android:layout_width="wrap_content"

android:layout_height="50dp"

android:gravity="bottom"

android:text="@string/lb_first_contact"

style="@style/titulo1"

android:id="@+id/textView4" />

<RelativeLayout

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje1"

android:id="@+id/tx_contacto1"

android:paddingLeft="10dp"

android:layout_marginTop="0dp" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje2"

android:id="@+id/tx_numcontacto1"

android:paddingLeft="10dp"

android:layout_below="@id/tx_contacto1"

android:layout_marginTop="0dp" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_alignParentRight="true"

android:src="@drawable/more_horiz"

android:id="@+id/btn_select_contcat1"

android:layout_marginTop="0dp" />

</RelativeLayout>

<!--Segundo contacto-->

<View

android:layout_width="fill_parent"

android:layout_height="2dp"

android:layout_marginTop="15dp"

Page 4: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

4

android:background="@drawable/linea"

android:layout_marginLeft="3dp"

android:layout_marginRight="5dp"/>

<TextView

android:layout_width="match_parent"

android:layout_height="50dp"

android:gravity="bottom"

style="@style/titulo1"

android:text="@string/lb_second_contact"

android:id="@+id/textView6" />

<RelativeLayout

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje1"

android:id="@+id/tx_contacto2"

android:paddingLeft="10dp"

android:layout_marginTop="0dp" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje2"

android:id="@+id/tx_numcontacto2"

android:paddingLeft="10dp"

android:layout_below="@id/tx_contacto2"

android:layout_marginTop="0dp" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_alignParentRight="true"

android:src="@drawable/more_horiz"

android:paddingLeft="10dp"

android:id="@+id/btn_select_contcat2"

android:layout_marginTop="0dp" />

</RelativeLayout>

<!--Tercer contacto-->

<View

android:layout_width="fill_parent"

android:layout_height="2dp"

android:layout_marginTop="15dp"

android:background="@drawable/linea"

android:layout_marginLeft="5dp"

android:layout_marginRight="5dp"/>

<TextView

android:layout_width="wrap_content"

android:layout_height="50dp"

android:gravity="bottom"

style="@style/titulo1"

android:text="@string/lb_third_contact"

android:id="@+id/textView7" />

<RelativeLayout

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje1"

android:id="@+id/tx_contacto3"

android:paddingLeft="10dp"

android:layout_marginTop="0dp" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/lb_mensaje2"

android:id="@+id/tx_numcontacto3"

Page 5: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

5

android:paddingLeft="10dp"

android:layout_below="@id/tx_contacto3"

android:layout_marginTop="0dp" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_alignParentRight="true"

android:src="@drawable/more_horiz"

android:paddingLeft="10dp"

android:id="@+id/btn_select_contcat3"

android:layout_marginTop="0dp" />

</RelativeLayout>

</LinearLayout>

</FrameLayout>

</LinearLayout>

</TabHost>

</ScrollView>

menu_configuracion.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:Awat="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

tools:context="com.aur3liux.alopez.awat.Configuracion">

<item android:id="@+id/save_option"

android:icon="@drawable/upload"

android:title="@string/guardar_config"

Awat:showAsAction="always"

android:orderInCategory="1" />

<item android:id="@+id/edit_option"

android:title="@string/edit_config"

Awat:showAsAction="never"

android:orderInCategory="1" />

</menu>

linea.xml

<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@android:color/black"/>

<corners android:radius="3dp"/>

</shape>

Controlador

Configuracion.java

import android.app.AlertDialog;

import android.content.ContentValues;

import android.content.DialogInterface;

import android.database.sqlite.SQLiteDatabase;

import android.net.Uri;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageButton;

import android.widget.TabHost;

import android.widget.TextView;

// Contactos

import android.content.Intent;

import android.provider.ContactsContract;

import android.widget.Toast;

import Model.DbInit;

import Model.Usuario;

import Model.UsuariosAdmin;

Page 6: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

6

public class Configuracion extends AppCompatActivity

{

// Controles de la sección de seguridad (Primera pestaña)

EditText txUsuario; // Nombre de usuario con que se identifica

EditText txPassword; // Password para hacer futuros cambios

EditText txPasswordConfirm; // Confirmar password

EditText txNumTelefono; // Mi numero de telefono

// Controles de la selección de contactos (Segunda pestaña)

TabHost tabs;

ImageButton btnContacto1,btnContacto2,btnContacto3; // Botones para elegir los contactos

TextView txContacto1, txTelefono1; // Datos del primer contacto

TextView txContacto2,txTelefono2; // Datos del segundo contacto

TextView txContacto3,txTelefono3; // Datos del tercer contacto

public static final int PICK_CONTACT_REQUEST = 1 ;

private static int contacto = 0;

// Datos de la configuaracion de la base de datos

private static int version = 1;

private static String dbName = "Usuario.db";

private static SQLiteDatabase.CursorFactory factory = null;

SQLiteDatabase db;

DbInit dataBaseUser;

private Uri contactUri;

boolean banderaConDatos;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.configuracion);

// Configuramos las pestañas

tabs = (TabHost)findViewById(R.id.tabHost);

tabs.setup();

TabHost.TabSpec tbSeguridad = tabs.newTabSpec("Seguridad");

TabHost.TabSpec tbContactos = tabs.newTabSpec("Contactos");

tbSeguridad.setIndicator("", getResources().getDrawable(R.drawable.unlock));

tbSeguridad.setContent(R.id.tab_seguridad);

tbContactos.setIndicator("", getResources().getDrawable(R.drawable.user));

tbContactos.setContent(R.id.tab_contactos);

tabs.addTab(tbSeguridad);

tabs.addTab(tbContactos);

// Vinculamos los datos del usuario

txNumTelefono = (EditText)findViewById(R.id.tx_numerotelefono);

txUsuario = (EditText)findViewById(R.id.tx_username);

txPassword = (EditText)findViewById(R.id.tx_password);

txPasswordConfirm = (EditText)findViewById(R.id.tx_password_confirm);

// Vinculamos los controles

btnContacto1 = (ImageButton)findViewById(R.id.btn_select_contcat1);

btnContacto2 = (ImageButton)findViewById(R.id.btn_select_contcat2);

btnContacto3 = (ImageButton)findViewById(R.id.btn_select_contcat3);

txContacto1 = (TextView)findViewById(R.id.tx_contacto1);

txTelefono1 = (TextView)findViewById(R.id.tx_numcontacto1);

txContacto2 = (TextView)findViewById(R.id.tx_contacto2);

txTelefono2 = (TextView)findViewById(R.id.tx_numcontacto2);

txContacto3 = (TextView)findViewById(R.id.tx_contacto3);

txTelefono3 = (TextView)findViewById(R.id.tx_numcontacto3);

// Programamos los botones para seleccionar contact

seleccionaContactos();

// Testeamos si hay datos de usuario en la base de datos

dataBaseUser = new DbInit(this,dbName,factory,version);

db = dataBaseUser.getReadableDatabase();

Usuario usr =UsuariosAdmin.consultaDatos(db);

if(usr != null)

{

Toast.makeText(getApplicationContext(),"Datos encontrados",Toast.LENGTH_SHORT).show();

// Como ya hay datos deshabilitamos la edicion

txNumTelefono.setEnabled(false);

txUsuario.setEnabled(false);

txPassword.setEnabled(false);

txPasswordConfirm.setEnabled(false);

btnContacto1.setEnabled(false);

btnContacto2.setEnabled(false);

Page 7: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

7

btnContacto3.setEnabled(false);

banderaConDatos = true;

// Recuperamos los datos

txNumTelefono.setText(usr.getNumTel());

txUsuario.setText(usr.getUserName());

txPassword.setText(usr.getPassword());

txPasswordConfirm.setText(usr.getPassword());

txContacto1.setText(usr.getContacto1().getNombre());

txTelefono1.setText(usr.getContacto1().getNumTel());

txContacto2.setText(usr.getContacto2().getNombre());

txTelefono2.setText(usr.getContacto2().getNumTel());

txContacto3.setText(usr.getContacto3().getNombre());

txTelefono3.setText(usr.getContacto3().getNumTel());

}

else

{

banderaConDatos = false;

}

}

// Botones para seleccionar contactos

public void seleccionaContactos()

{

// Primer contacto

btnContacto1.setOnClickListener(new View.OnClickListener()

{

@Override

public void onClick(View v)

{

// Primer contacto

lanzaActivitycontactos(1);

}

});

// Segundo contacto

btnContacto2.setOnClickListener(new View.OnClickListener()

{

@Override

public void onClick(View v)

{

// Segundo contacto

lanzaActivitycontactos(2);

}

});

// Tercer contacto

btnContacto3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// Tercer contacto

lanzaActivitycontactos(3);

}

});

}

private void lanzaActivitycontactos(int numContacto)

{

contacto = numContacto;

Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

startActivityForResult(i, PICK_CONTACT_REQUEST);

}

protected void onActivityResult(int requestCode, int resultCode, Intent intent)

{

if (requestCode == PICK_CONTACT_REQUEST)

{

if (resultCode == RESULT_OK)

{

// Capturar el valor de la Uri

contactUri = intent.getData();

// Procesar la Uri

if(contacto == 1)

renderContact(contactUri,txContacto1,txTelefono1);

if(contacto == 2)

renderContact(contactUri,txContacto2,txTelefono2);

if(contacto == 3)

renderContact(contactUri,txContacto3,txTelefono3);

}

Page 8: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

8

}

}

private void renderContact(Uri uri, TextView name, TextView phone)

{

name.setText(Miscellaneus.getName(uri,getApplicationContext()));

phone.setText(Miscellaneus.getPhone(uri, getApplicationContext()));

}

@Override

public boolean onPrepareOptionsMenu(Menu menu)

{

if(banderaConDatos)

{

menu.getItem(0).setEnabled(false);

menu.getItem(1).setEnabled(true);

}

else

{

menu.getItem(0).setEnabled(true);

menu.getItem(1).setEnabled(false);

}

return true;

}

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_configuracion, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.save_option)

{

// Abrimos la base de datos en modo escritura

db = dataBaseUser.getWritableDatabase();

if(db != null)

{

// Si hay datos vacíos se lanza una alerta

if(!Miscellaneus.datosVacios(this))

{

String titulo = "Error";

String mensaje = "No deje vacío ningún dato";

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

alertDialogBuilder.setTitle(titulo);

alertDialogBuilder

.setMessage(mensaje)

.setCancelable(false)

.setPositiveButton("Ok", new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int id)

{

dialog.cancel();

}

});

// Se lanza el dialogo

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

}

else

{

// Validamos que el password coincida

if(!txPassword.getText().toString().equals(txPasswordConfirm.getText().toString()))

{

String titulo = "Error";

String mensaje = "El password no coincide";

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

alertDialogBuilder.setTitle(titulo);

alertDialogBuilder

.setMessage(mensaje)

Page 9: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

9

.setCancelable(false)

.setPositiveButton("Ok", new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int id)

{

txPassword.setText("");

txPasswordConfirm.setText("");

dialog.cancel();

}

});

// Se lanza el dialogo

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

}

else

{

// Validamos que los tres contactos sean diferentes

String tel1 = txTelefono1.getText().toString();

String tel2 = txTelefono2.getText().toString();

String tel3 = txTelefono3.getText().toString();

boolean igualesTel = false;

if(tel1.equals(tel2)) igualesTel = true;

if(tel2.equals(tel3)) igualesTel = true;

if(tel1.equals(tel3))igualesTel = true;

if(igualesTel)

{

String titulo = "Error";

String mensaje = "Los contactos deden ser todos diferentes";

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

alertDialogBuilder.setTitle(titulo);

alertDialogBuilder

.setMessage(mensaje)

.setCancelable(false)

.setPositiveButton("Ok", new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int id)

{

dialog.cancel();

}

});

// Se lanza el dialogo

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

}

else

{

// Se guardan los datos

ContentValues registro = new ContentValues();

registro.put("numTel", txNumTelefono.getText().toString());

registro.put("usuario", txUsuario.getText().toString());

registro.put("password", txPassword.getText().toString());

registro.put("contacto1", txContacto1.getText().toString());

registro.put("telContacto1", txTelefono1.getText().toString());

registro.put("contacto2", txContacto2.getText().toString());

registro.put("telContacto2", txTelefono2.getText().toString());

registro.put("contacto3", txContacto3.getText().toString());

registro.put("telContacto3", txTelefono3.getText().toString());

db.insert("usuario", null, registro);

Toast.makeText(getApplicationContext(), "Datos guardados",

Toast.LENGTH_SHORT).show();

Intent aPrincipal = new Intent(this, Principal.class);

aPrincipal.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(aPrincipal);

// debe cerrar la base de datos actual y regresar a la ventana anterior

}

}

}

// Cerramos la base de datos

db.close();

}

return true;

}

return super.onOptionsItemSelected(item);

}

}

Page 10: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

10

Miscellaneus.java

import android.app.AlertDialog;

import android.content.ContentResolver;

import android.content.Context;

import android.content.DialogInterface;

import android.database.Cursor;

import android.net.Uri;

import android.provider.ContactsContract;

import android.widget.EditText;

import android.widget.TextView;

public class Miscellaneus

{

public static String getName(Uri uri, Context ctx)

{

// Valor a retornar

String name = null;

// Obtener una instancia del Content Resolver

ContentResolver contentResolver = ctx.getContentResolver();

// Consultar el nombre del contacto

Cursor c = contentResolver.query(

uri,

new String[]{ContactsContract.Contacts.DISPLAY_NAME},

null,

null,

null);

if(c.moveToFirst())

{

name = c.getString(0);

}

// Cerramos el cursor

c.close();

return name;

}

public static String getPhone(Uri uri, Context ctx)

{

// Variables temporales para el id y el teléfono

String id = null;

String phone = null;

/************* PRIMERA CONSULTA ************/

// Obtener el _ID del contacto

Cursor contactCursor = ctx.getContentResolver().query(

uri,

new String[]{ContactsContract.Contacts._ID},

null,

null,

null);

if (contactCursor.moveToFirst())

{

id = contactCursor.getString(0);

}

contactCursor.close();

/************* SEGUNDA CONSULTA ************/

/* Sentencia WHERE para especificar que solo deseamos

números de telefonía móvil */

String selectionArgs =

ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " +

ContactsContract.CommonDataKinds.Phone.TYPE+"= " +

ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;

// Obtener el número telefónico

Cursor phoneCursor = ctx.getContentResolver().query(

ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},

selectionArgs,

new String[]{id},

null

);

if (phoneCursor.moveToFirst()) {

phone = phoneCursor.getString(0);

}

phoneCursor.close();

Page 11: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

11

return phone;

}

// Validamos que haya quedado datos vacios

public static boolean datosVacios(Configuracion ctx)

{

boolean banderaTodosCapturados = true;

// Se validan que no dejen controles vacíos

if(ctx.txNumTelefono.getText().length() == 0) // Num del tel

banderaTodosCapturados = false;

if(ctx.txUsuario.getText().length() == 0) // Usuario

banderaTodosCapturados = false;

if(ctx.txPassword.getText().length() == 0) // Password

banderaTodosCapturados = false;

if(ctx.txPasswordConfirm.getText().length() == 0) // Confirmar password

banderaTodosCapturados = false;

if(ctx.txContacto1.getText().equals("Seleccione un contacto")) // Contacto 1

banderaTodosCapturados = false;

if(ctx.txContacto2.getText().equals("Seleccione un contacto")) // Contacto 2

banderaTodosCapturados = false;

if(ctx.txContacto3.getText().equals("Seleccione un contacto")) // Contacto 3

banderaTodosCapturados = false;

if(ctx.txTelefono1.getText().equals("(Vacío)")) // Telefono 1

banderaTodosCapturados = false;

if(ctx.txTelefono2.getText().equals("(Vacío)")) // Telefono 2

banderaTodosCapturados = false;

if(ctx.txTelefono3.getText().equals("(Vacío)")) // Telefono 3

banderaTodosCapturados = false;

return banderaTodosCapturados;

}

// Testetamos que no dejen vacío un control

public static boolean isEmpty(EditText control)

{

if(control.getText().length()==0)

return true;

else

return false;

}

public static boolean isEmpty(TextView control)

{

if(control.getText().length()==0)

return true;

else

return false;

}

public static void alertaDialog(Context ctx, String titulo, String mensaje)

{

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx);

// set title

alertDialogBuilder.setTitle(titulo);

// set dialog message

alertDialogBuilder

.setMessage(mensaje)

.setCancelable(false)

.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id)

{

// if this button is clicked, close

// current activity

// MainActivity.this.finish();

}

})

.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

// if this button is clicked, just close

// the dialog box and do nothing

dialog.cancel();

}

});

// create alert dialog

AlertDialog alertDialog = alertDialogBuilder.create();

// show it

alertDialog.show();

Page 12: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

12

}

}

Modelo Contactos.java

public class Contacto

{

public String getNombre()

{

return nombre;

}

public void setNombre(String nombre)

{

this.nombre = nombre;

}

public String getNumTel()

{

return numTel;

}

public void setNumTel(String numTel)

{

this.numTel = numTel;

}

private String nombre;

String numTel;

// Constructor

public Contacto(String numT, String name)

{

setNumTel(numT);

setNombre(name);

}

public Contacto()

{ }

}

DbInit.java

import android.content.Context;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DbInit extends SQLiteOpenHelper

{

//Sentencia SQL para crear la tabla de Usuarios

String tablaQry = "CREATE TABLE usuario(" +

"numTel TEXT PRIMARY KEY,"+

"usuario TEXT NOT NULL," +

"password TEXT NOT NULL,"+

"contacto1 TEXT NOT NULL,"+

"telContacto1 TEXT NOT NULL,"+

"contacto2 TEXT NOT NULL,"+

"telContacto2 TEXT NOT NULL,"+

"contacto3 TEXT NOT NULL,"+

"telContacto3 TEXT NOT NULL);";

public SQLiteDatabase db = null;

// Constructor

public DbInit(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int

version)

{

super(context, dbName, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db)

{

db.execSQL(tablaQry);

Page 13: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

13

}

@Override

public void onUpgrade(SQLiteDatabase db, int versionActual, int newVersion)

{

// Se crea ña nueva version de la tabla

db.execSQL(tablaQry);

}

public void openDB() throws SQLException

{

if(this.db == null)

{

this.db = this.getWritableDatabase();

}

}

public void closeDB()

{

if(this.db != null)

{

if(this.db.isOpen())

this.db.close();

}

}

}

UsuariosAdmin.java

import android.database.Cursor;

import android.database.DatabaseUtils;

import android.database.sqlite.SQLiteDatabase;

public class UsuariosAdmin

{

/*usuario numTel - 0, usuario - 1, password - 2, contacto1 - 3, telContacto1 4

contacto2 - 5, telContacto2 - 6, contacto3 - 7, telContacto3 - 8 */

public static Usuario consultaDatos(SQLiteDatabase db)

{

// Testeamos si hay registros guardados

int numDatos = (int) DatabaseUtils.queryNumEntries(db, "usuario");

if(numDatos > 0)

{

Cursor c = db.rawQuery("SELECT * FROM usuario", null);

Usuario user = new Usuario();

Contacto contact;

//Nos aseguramos de que existe al menos un registro

if (c.moveToFirst())

{

user.setNumTel(c.getString(0));

user.setUserName(c.getString(1));

user.setPassword(c.getString(2));

contact = new Contacto();

contact.setNombre(c.getString(3));

contact.setNumTel(c.getString(4));

user.setContacto1(contact);

contact = new Contacto();

contact.setNombre(c.getString(5));

contact.setNumTel(c.getString(6));

user.setContacto2(contact);

contact = new Contacto();

contact.setNombre(c.getString(7));

contact.setNumTel(c.getString(8));

user.setContacto3(contact);

}

return user;

}

else

return null;

}

}

Page 14: Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando – Botón de pánico (App para Android) 1 Tabla de la BD local

Aurelio López Ovando – Botón de pánico (App para Android)

14

Usuarios.java

public class Usuario

{

public String getNumTel() {

return numTel;

}

public void setNumTel(String numTel) {

this.numTel = numTel;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public Contacto getContacto1() {

return contacto1;

}

public void setContacto1(Contacto contacto1) {

this.contacto1 = contacto1;

}

public Contacto getContacto2() {

return contacto2;

}

public void setContacto2(Contacto contacto2) {

this.contacto2 = contacto2;

}

public Contacto getContacto3() {

return contacto3;

}

public void setContacto3(Contacto contacto3) {

this.contacto3 = contacto3;

}

private String numTel;

private String userName;

private String password;

private Contacto contacto1;

private Contacto contacto2;

private Contacto contacto3;

// Constructor

public Usuario(String nTel, String user, String pass, Contacto c1, Contacto c2, Contacto c3)

{

setNumTel(nTel);

setUserName(user);

setPassword(pass);

setContacto1(c1);

setContacto2(c2);

setContacto3(c3);

}

public Usuario()

{ }

}