PDA

Ver la Versión Completa : [ CONSULTA ] Aplicacion: Guardar sitios de interés en mapa


skipless
11/05/11, 16:08:25
hola a todos.

actualmente, estoy intentando aprender programacion para android. utilizo la ultima version de eclipse ide para java, la ultima version del sdk android y la de java 6 jdk.

necesito construir una aplicacion que permita guardar lugares de interes del usuario en un mapa para despues poder consultarlos y editarlos.

he pensado en crear actividades como:
-mostrar lugares en detalle
-editar lugar
-lista lugares
-mapa lugares

tecnicamente se me exige crear una lista de lugares con un BD, y ese es el punto donde estoy bastante perdido.

en cuanto al mapa ya tengo la key de desarrollo para com.google.maps y el layout principal también lo tengo claro.

otro punto de dificultad, es cómo programar la actividad mapa lugares para que al tocar en un punto del mapa se cree un punto de interés en dicho sitio....

alguien puede ayudarme?

skipless
18/05/11, 18:50:00
up!

shaznayta
19/05/11, 15:12:36
Con la base de datos te puedo ayudar explicándote lo que tengo hecho. Yo lo hago con SQLite.

Primero busca por internet los drivers de la base de datos de SQLite para eclipse.

Una vez lo tengas, los metes en una carpeta. Y sigue los pasos de aquí. (http://wiki.eclipse.org/index.php/Connecting_to_SQLite)

Yo tuve bastantes problemas con eso para encontrar las carpetitas y todo. Aver si tienes suerte y te va mejor a ti.

Luego de tenerlo en el eclipse ya puesto, este es la base de datos que tengo yo montada para mi proyecto:

package com.proyecto.sms;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;


public class Mybd
{
String personal = "personal";
String grupos = "grupos";
String per_gru = "per_gru";

/** Se llama a este método cuando accedemos a la Actividad por primera vez. */
SQLiteDatabase myDB = null;

public Mybd(Context ctx)//constructor
{
try{
myDB = ctx.openOrCreateDatabase("bdprueba", 0, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS "
+ personal + " (cod_per VARCHAR PRIMARY KEY, dni VARCHAR, nombre VARCHAR, email VARCHAR, telefono VARCHAR);");

myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('C2-05', '28825504H', 'Gomez Gonzalez, Cristina', '[email protected]', '5556');");
myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('AAD', '25522552M', 'Diaz Rodriguez, Jose Antonio', '[email protected]', '654222222');");
myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('BBD','35533553N', 'Tolon Gimeno, Alex', '[email protected]', '654333333');");
myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('C2-07', '29495287H', 'Heredia Lentijo, Jose Luis', 'j.luisheredia19GMAil.com', '5558');");
myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('CCD', '24524525D', 'Figueroa Ortega, Jose Manuel', '[email protected]', '654444444');");
myDB.execSQL("INSERT INTO "
+ personal
+ " VALUES ('C2-08', '28855696H', 'Jimenez Caliani, Fernando', 'fjcalianiGMAil.com', '666013542');");


myDB.execSQL("CREATE TABLE IF NOT EXISTS "
+ per_gru + " (cod_per VARCHAR, cod_gru VARCHAR, PRIMARY KEY (cod_per, cod_gru), FOREIGN KEY (cod_per) REFERENCES "+personal+"(cod_per), FOREIGN KEY (cod_gru) REFERENCES "+grupos+"(cod_gru));");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('C2-05', 'B');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('AAD', 'A');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('BBD', 'A');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('C2-07', 'B');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('CCD', 'C');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('CCD', 'A');");
myDB.execSQL("INSERT INTO "
+ per_gru
+ " VALUES ('C2-08', 'B');");




myDB.execSQL("CREATE TABLE IF NOT EXISTS "
+ grupos + " (cod_gru VARCHAR PRIMARY KEY, nom_grupo VARCHAR);");

myDB.execSQL("INSERT INTO "
+ grupos
+ " VALUES ('A', 'Profesores');");

myDB.execSQL("INSERT INTO "
+ grupos
+ " VALUES ('B', 'Alumnos');");
myDB.execSQL("INSERT INTO "
+ grupos
+ " VALUES ('C', 'Direccion');");


myDB.execSQL("CREATE TABLE IF NOT EXISTS temp (path varchar primary key, nombre varchar);");

myDB.execSQL("CREATE TABLE IF NOT EXISTS opc (cod varchar primary key, opc varchar);");
myDB.execSQL("INSERT INTO opc VALUES ('A', '0');");

/*myDB.execSQL("CREATE TABLE IF NOT EXISTS plantillas (cod varchar primary key, mensaje varchar);");
myDB.execSQL("INSERT INTO plantillas VALUES ('RET', 'Se convoca una reunion para la evaluación trimestral. ');");
myDB.execSQL("INSERT INTO plantillas VALUES ('RAMPA', 'Se convoca una reunion para padres y madres. ');");
myDB.execSQL("INSERT INTO plantillas VALUES ('REP', 'Se convoca una reunion extraordinaria de profesores. ');");
myDB.execSQL("INSERT INTO plantillas VALUES ('R', 'Se convoca una reunion para: ');");*/

myDB.execSQL("CREATE TABLE IF NOT EXISTS programacion (cod int primary key, texto varchar, hora int, minuto int, dia int, mes int, ano int);");

myDB.execSQL("CREATE TABLE IF NOT EXISTS relacion_tel (cod int, telefono varchar, PRIMARY KEY (cod, telefono));");


}
catch(Exception e){
Log.d("Base de Datos", "Exception initBD: "+ e.toString());
}
}

public ArrayList<String> getGrupos(){
String[] atributos = {"nom_grupo"};
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;
String nombre = "nom_grupo";
int largo = atributos.length;
try{
c = myDB.query(grupos, atributos, null, null, null, null, nombre);
while(c.moveToNext())
{
for(int i=0;i<largo;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getPersonal(){
String[] atributos = {"nombre","cod_per"};
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;
String nombre ="nombre";
int largo = atributos.length;
try{
c = myDB.query(personal, atributos, null, null, null, null, nombre);
while(c.moveToNext())
{
for(int i=0;i<largo;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getgruposycod(){
String[] atributos = {"nom_grupo","cod_gru"};
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;
String nombre = "nom_grupo";
int largo = atributos.length;
try{
c = myDB.query(grupos, atributos, null, null, null, null, nombre);
while(c.moveToNext())
{
for(int i=0;i<largo;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getgruycod(){
String[] atributos = {"nom_grupo","cod_gru"};
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;
String nombre = "cod_gru";
int largo = atributos.length;
try{
c = myDB.query(grupos, atributos, null, null, null, null, nombre);
while(c.moveToNext())
{
for(int i=0;i<largo;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getPersonalByGrupo(String[] grupo){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.nombre, personal.cod_per FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND nom_grupo=?", grupo);

while(c.moveToNext())
{
for(int i=0;i<2;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getGrupobyUsuario(String[] dn){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT grupos.nom_grupo FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND personal.cod_per=?", dn);

while(c.moveToNext())
{
for(int i=0;i<1;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getPersonal1(String[] grupo){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.nombre, personal.telefono, personal.email FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND nom_grupo=?", grupo);

while(c.moveToNext())
{

for(int i=0;i<3;i++){
retorno.add(c.getString(i));
}

}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}



public ArrayList<String> getPersonalUpd(String[] grupoo){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.nombre, personal.cod_per, personal.telefono, personal.email FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND nom_grupo=?", grupoo);

while(c.moveToNext())
{
for(int i=0;i<4;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getUsuario(String[] dn){

ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.dni, personal.nombre, personal.telefono, personal.email FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND personal.cod_per=?", dn);

while(c.moveToNext())
{
for(int i=0;i<4;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getUsuarios(){

ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.cod_per, personal.dni, personal.nombre, personal.telefono, personal.email FROM personal", null);

while(c.moveToNext())
{
for(int i=0;i<5;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public ArrayList<String> getSMS(String[] dn){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
//c = myDB.query(grupos, atributosgru, "nom_grupo = ?", grupoo, null, null, nombre);
c = myDB.rawQuery("SELECT personal.nombre, personal.telefono FROM personal, grupos, per_gru WHERE personal.cod_per=per_gru.cod_per AND grupos.cod_gru=per_gru.cod_gru AND personal.cod_per=?", dn);

while(c.moveToNext())
{
for(int i=0;i<2;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public long insertarPersonal(String codi, String dni, String nombre, String email, String telefono){
ContentValues cv = new ContentValues();

cv.put("cod_per", codi);
cv.put("dni", dni);
cv.put("nombre", nombre);
cv.put("email", email);
cv.put("telefono", telefono);

return myDB.insert("personal", null, cv);
}

public long selecgrupos(String cod_pers, String cod_grup){
ContentValues cv = new ContentValues();

cv.put("cod_per", cod_pers);
cv.put("cod_gru", cod_grup);

return myDB.insert("per_gru", null, cv);
}

public long borrarPersonal(String _selections1){

return myDB.delete("personal", "cod_per='"+_selections1+"'", null);

}

public long actualizarPersonal(String codi, String dnis, String nombre, String telefono, String email) {
ContentValues args = new ContentValues();

args.put("dni", dnis);
args.put("nombre",nombre);
args.put("telefono", telefono);
args.put("email",email);

return myDB.update(personal, args, "cod_per ='"+codi+"'", null);
}

public long borrarpergru(String _selections1){

return myDB.delete("per_gru", "cod_per='"+_selections1+"'", null);

}

public long añadirpergru(String cod_pers, String cod_grup) {
ContentValues args = new ContentValues();

args.put("cod_per", cod_pers);
args.put("cod_gru", cod_grup);

return myDB.insert("per_gru", null, args);
}

public long añadirgrupo(String cod_grup, String nom_grup) {
ContentValues args = new ContentValues();

args.put("cod_gru", cod_grup);
args.put("nom_grupo", nom_grup);

return myDB.insert("grupos", null, args);
}

public long borrargrupos(String _selections1){

return myDB.delete("grupos", "cod_gru='"+_selections1+"'", null);

}

public long actualizargrupo(String codg, String nom) {
ContentValues args = new ContentValues();

args.put("cod_gru", codg);
args.put("nom_grupo",nom);

return myDB.update(grupos, args, "cod_gru ='"+codg+"'", null);
}

public long insertartemp(String paths, String nom){
ContentValues cv = new ContentValues();

cv.put("path", paths);
cv.put("nombre", nom);

return myDB.insert("temp", null, cv);
}

public ArrayList<String> verfile(){
ArrayList<String> retorno=new ArrayList<String>();
String[] campos = {"path", "nombre"};
Cursor c=null;

try{
c = myDB.query("temp", campos, null, null, null, null, null);
//c = myDB.rawQuery("SELECT path, nombre FROM temp", null);

while(c.moveToNext())
{
for(int i=0;i<2;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public long borrartemp(){

return myDB.delete("temp", null, null);

}

public long actualizaropc(String opcc) {
ContentValues args = new ContentValues();

args.put("opc", opcc);

return myDB.update("opc", args, "cod ='A'", null);
}

public int veropc(){
String retorno=null;

String[] campos = {"opc"};
Cursor c=null;

try{
c = myDB.query("opc", campos, "cod = 'A'", null, null, null, null);

while(c.moveToNext())
{
for(int i=0;i<1;i++){
retorno=c.getString(i);
}
}

}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return Integer.parseInt(retorno);
}

public ArrayList<String> vermensajes(){
ArrayList<String> retorno=new ArrayList<String>();
String[] campos = {"cod", "texto", "hora", "minuto", "dia", "mes", "ano"};
Cursor c=null;
try{
c = myDB.query("programacion", campos, null, null, null, null, null);

while(c.moveToNext())
{
for(int i=0;i<7;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public long insertarprogr(int codi, String text){
ContentValues cv = new ContentValues();

cv.put("cod", codi);
cv.put("texto", text);
cv.put("hora", "");
cv.put("minuto", "");
cv.put("dia", "");
cv.put("mes", "");
cv.put("ano", "");

return myDB.insert("programacion", null, cv);
}

public ArrayList<String> vercod(){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;

try{
c = myDB.rawQuery("SELECT cod FROM programacion ORDER BY cod DESC", null);

while(c.moveToNext())
{
retorno.add(c.getString(0));
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public long insertartelef(int cod, String selections1){
ContentValues cv = new ContentValues();

cv.put("cod", cod);
cv.put("telefono", selections1);

return myDB.insert("relacion_tel", null, cv);
}

public long actprogr(int codi, int mHour, int mMinute, int mDay, int mMonth, int mYear) {
ContentValues args = new ContentValues();

args.put("hora", mHour);
args.put("minuto", mMinute);
args.put("dia", mDay);
args.put("mes", mMonth);
args.put("ano", mYear);

return myDB.update("programacion", args, "cod ='"+codi+"'", null);
}

public ArrayList<String> vertelef(String codi){
ArrayList<String> retorno=new ArrayList<String>();
Cursor c=null;
String codis[]={codi};

try{
c = myDB.rawQuery("SELECT telefono FROM relacion_tel WHERE cod=?", codis);

while(c.moveToNext())
{
for(int i=0;i<1;i++){
retorno.add(c.getString(i));
}
}

return retorno;
}

catch (Exception e) {
Log.d("BASEDATOS", e.toString());
}

return null;
}

public long borrarmens(int codi){

return myDB.delete("programacion", "cod="+codi, null);

}

public long borrartelef(int codi){

return myDB.delete("relacion_tel", "cod="+codi, null);

}



}

Te explico por encima, lo primero crea la base de datos con el nombre que quieras. El nombre que le pongas a la class será tu construtor. Vas creando dentro del onCreate las tablas tal como yo lo tengo hecho y rellenas las que quieras rellenar. Luego por ultimo, cuando quieras desde una actiity acceder a la base de datos, lo unico que tienes que hacer es poner en global:

Mybd myDB;

Es decir, el nombre del archivo que tiene la base de datos, y el nombre que le has asignado "myDB = ctx.openOrCreateDatabase("bdprueba", 0, null);".

Luego dentro del onCreate pones:

myDB= new Mybd (this);

Es decir, la instancia (creo que se le llamaba así.).

Después de esto ya puedes añadir funciones a tu archivo de base de datos, para leer una tabla, añadirle datos, borrarle...etc.

Mira las mías y si quieres utilízalas como ejemplo.

Una vez que tengas una función hecha y quieras acceder a ella para que te de el resultado tienes que hacer esto:

consulta=myDB.getGrupos();
int tama=consulta.size();
String items[]=new String[tama];
for(int i=0;i<tama;i++){
items[i]=consulta.get(i);
}
//para mostrar el array con los lenguajes en el spinner se utiliza un ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ctx,
android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.s imple_spinner_dropdown_item);
spinner.setAdapter(adapter);

En este ejemplo, declaro consulta como ArrayList<String>, porque lo que recibo es una lista de String. luego mido el tamaño de la consulta, y con ayuda de un for voy metiendo los datos en una tabla de String. Por ultimo, ahí tienes el ejemplo para mostrar el resultado en un Spinner.

Ya si quieres información más a fondo ponte en contacto conmigo por mp, o haz preguntas más específicas. ^^

Para llegar a manejar la base de datos tardé una semana o asi. Mientras probaba bases de datos distintas, y entre que me iban y no, y las que me iban no había mucha información por internet...pffff.

Yo ahora estoy utilizando esta base de datos y funciona fenomenal en todas las versiones de Android.

Saludos

skipless
20/05/11, 17:47:28
muchisimas gracias por tu aportacion shaznayta!!
usare tu código para crear mi base de datos. Es un lujo recibir aportes de este tipo en un foro en el que no se espera recibir nada a cambio. Cuando consiga tener mi programa listo, lo explicaré aqui detalladamente ya que toca muchos conceptos de programación en android!!