Acceder

Ver la Versión Completa : App de turismo


Napster87
03/12/13, 10:29:04
Hola a todos,estoy desarrollando una aplicacion destinada a mostrar zonas de interes de una determinada region,tales como monumentos,restaurantes...etc.

Tengo creado el interfaz,sus opciones y demas,pero pese a que para algunas opciones uso un listview para mostrar los resultados,estoy planteandome crear una base de datos que contenga informacion de por ejemplo los restaurantes,con fotos,una descripcion,coordenadas para geolocalizacion,etc...

El problema que tengo,es que soy nuevo programando con android,mi experiencia es escasa,tengo la idea pero no se por donde empezar.

¿Que tipo de base de datos me recomendais?Y para mostrarlas?Quiero desarrollar algo complejo,con pestañas para incluir fotos,descripcion detallada y demas.

Por donde empiezo??jaja

Gracias de antemano!!

megalomania
03/12/13, 10:37:54
Hola Napster,
Como bien dices eres nuevo, y creo que deberías plantearte proyectos más realistas acorde a tus limitaciones actuales.

Al margen de mi anterior recomendación, lo que necesitas es saber si necesitas algún servicio web que ter permita consultar datos relevantes desde tu dispositivo móvil, sino es el caso, siempre puedes usar los sharedpreferences o SQLite que vienen ya integrados en Android.

Para mostrar la información puedes usar las views, pero para hacer una app realmente competitiva te recomiendo buscar gente especializada que pueda proveer recursos gráficos de calidad.

Actualmente ofrezco clases particulares de Android en Madrid, por otro lado también estoy preparando un curso en http://www.iclonet.com/SIRVEN_Pages/calendar_cursos_SIRVEN.html#sthash.IaBFylGs.dpbs . Si pinchas en el enlace del curso Android, al final del documento verás el temario.

Un saludo.

Napster87
03/12/13, 10:51:21
Hola,gracias por responder. Te comento que vengo de programar en c,y me defiendo algo con java,de ahi que el tema de programacion orientada a objetos me suena. El problema que veo es que hasta cierto punto se programar,pero la parte grafica....ahi si que tengo problemas jaja.

Estoy desarrollando una aplicacion con eclipse,para android vaya. No quiero acceder a web,simplemente almacenar datos en una base y mostrarlos en una interfaz,que sea algo llamativa.

No es por hobbie,acabo de entrar a trabajar aqui en extremadura,por una plataforma de primera experiencia,y como comprenderas,estoy dedicandole horas de estudio pero tengo mis limitaciones. Quiero hacer algo parecido a esto:https://play.google.com/store/apps/details?id=carm.murciaturistica&hl=en

Los menus ya los cree,pero tengo dudas con la parte de los restaurantes y demas,como crear el diseño y rellenarlo. El interfaz vaya...

ALguna idea?es que soy programador,no diseñador grafico.......

mocelet
03/12/13, 12:19:20
Mejor no la hagas como esa que has enlazado... que se salta a la torera todas las convenciones de diseño de apps para Android.

Lo bueno para este tipo de apps es que, si quieres, puedes hacer la interfaz completa con componentes nativos de Android: listas, paginadores (ViewPager), Action Bar, ... y así no hace falta ser diseñador gráfico, "solo" saber elegir bien los componentes que poner para que la usabilidad sea buena y cómo estructurar la aplicación en pantallas/actividades.

Napster87
03/12/13, 21:00:16
Solo la he tomado de referencia, la mia estara mas simplificada, no quiero recargarla tanto jaja.

El interfaz, con algo de photoshop lo puedo mejorar, de cara a los botoenes y el menu, y el tema de crear activities lo llevo bien. La duda que tengo es con el tema de la BD. En este caso, para almacenar datos, incluyendo fotos, recomendais mysql, o sqlite o....??? El tema de crearla lo tengo mas o menos claro,lo que no se como mostrarla en esta aplicacion, como no sea a traves de un listview, pero no me quedara muy bien...

En fin, quiero ideas, para saber por donde guiarme, el codigo ya lo hago yo ajaaj.

Por cierto, me he fijado que en un monton de apps de este tipo, la parte de datos de restaurantes, o empresas, usan el mismo interfaz, como si fuera una bd conectada a internet, con el mismo formato en cada una de ellas. Sabeis cual es?? Parece una plantilla , me vendria bien ver como es asi aprendo a hacer la mia antes.

Saludos!!

oxot
04/12/13, 14:46:36
Como ya te han comentado, la de la Región de Murcia no sé de cuando está hecha la última versión pero para hoy en día yo la veo obsoleta.
La mayoría de las apps informativas se realizan alrededor de la ActionBar + Tabs con swipe. A partir de aquí introduce las variaciones que quieras que mejor se adapten a tu aplicación. Mira aquí:
http://developer.android.com/guide/topics/ui/actionbar.html
Toda la parte de diseño de la página de Android es interesante para saber por dónde se mueve los estándares (tamaños, etc.).

El ListView es probablemente la mejor opción para mostrar información aunque un GridView también puede resultarte interesante.

Yo emplearía una base de datos SQLite, Android las maneja bien y son sencillas de emplear. Para guardar imágenes:
http://kalimero78.webcindario.com/?p=46
http://stackoverflow.com/questions/7331310/how-to-store-image-as-blob-in-sqlite-how-to-retrieve-it

Si quieres descargar de internet información: un Loader o Volley. Para gustos.

Y luego todo en fragments y para varios tamaños de dispositivo. Activities las justas (que será una o como mucho quizá dos en móviles).

Esa es mi opinión de principiante. Deseando ver el final de tu app ....

Y por cierto, para búsqueda de datos de establecimientos y cosas así, hay varios en internet, no sé si hay uno estándar o que usen en España pero tienes por ejemplo el de Yelp con su API:
http://www.yelp.com/developers/documentation
O el de Google Places con la suya:
https://developers.google.com/places/documentation/search

Napster87
05/12/13, 10:52:06
Hola oxot,gracias por tu respuesta,poco a poco me voy guiando. Que conste que no quiero codigo en plan "hacedme el trabajo" solo ideas para ir tirando para adelante con la app,es la unica manera de aprender no??jeje

He estado revisando lo que me has puesto.El sqlite parece sencillo de usar. Pero tengo que meter bastante informacion,y voy a mostrarla en un listview si,la duda que tengo es si almacenarla en local o bien de forma externa.Ya que no se cuanto pesaria la aplicacion con imagenes y demas....solo va a ser para consultar los datos y mostrarlos en un listview,clickear en uno de ellos y que se abra otra activity con informacion en detalle. Algo sencillo en un principio.

Estoy tratando de crear una base de datos online, me lo recomendariais para esta app??
He creado una en un host gratuito,(db4free)y con jdbc he realizado una conexion directa a la bd de mysql,en principio hay conexion,me falta crear tablas y averiguar como cargar los datos en el listview.

Que hariais vosotros,optar por una bd remota o crear una local y unirla a la app??es mi mayor duda,porque no quiero avanzar mucho para luego empezar de nuevo con la otra opcion....

Saludos!!!

oxot
06/12/13, 12:25:15
Pues mira, como todo: depende.
Teniendo en cuenta que la bd me dices que la creas tu pues no sé cuántos tienes pensado incluir, una aplicación de 5mb puede ser razonable y puedes meter muchas fotos porque no creo que quieras grandes resoluciones, con 20-30kb puede ser más que suficiente.
Si la haces online tienes un componente a mayores, puedes hacerla social: que la gente suba fotos de los sitios, opiniones, que los puntúe, etc. y pienso que eso es de lo más interesante en este tipo de aplicaciones (mira Google Local por ejemplo).
Salu2

Napster87
09/12/13, 11:27:11
Perdona por no responder,vacaciones!!jaja

Bueno,no se si seran estos dias de descanso o que,pero me voy a animar a intentar hacerla online,que es mas complicado y un rato,ya que con sqlite hay muchos manuales y lo haria rapido,y como que asi aprendo mas....

En cuanto a la bd, no va a tener mas de 400 registros,vamos que no va a ser gran cosa,por eso dudo entre hacerla online o no, pero ya voy a meter tema de geolocalizacion y demas,asi que aprovecho y la monto online.

De momento estoy siguiendo un manual para realizar consultas,a ver si funciona y luego ya paso al diseño...algo tipico vaya,un listview y luego una activity centrada en el campo elegido con detalle.

En cuanto al tema de las activitys,tengo mas de dos jaja,tengo que aprender a usar los fragments y demas,poco a poco vaya.

El manual,por si le interesa a alguien,es este:
http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/

Saludos!!!

Napster87
19/12/13, 10:04:31
Retomo el hilo,ya que al final me he decidido por hacerla offline,despues de horas y horas consegui acceder de manera remota y listar y todo,pero para el tamaño que va a tener no merece la pena,asi que aprendiendo a usar sqlite estoy.

Tengo una consulta,parece una tonteria pero me esta provocando un gran problema.

Tengo una clase (dbhelper)en la que creo la base de datos y la tabla.La cuestion es que desde el main quiero cargar la base de datos y que se cree,pero aqui me da este warning,y sin errores no me crea la base de datos:

*
* Declaramos el controlador de la BBDD y accedemos en modo escritura
*/
AlojamientoDbHelper dbHelper = new AlojamientoDbHelper(getBaseContext());

SQLiteDatabase db = dbHelper.getWritableDatabase();

Toast.makeText(getBaseContext(), "Base de datos preparada", Toast.LENGTH_LONG).show();
}

me dice que db no esta declarada localmente,cuando es una referencia a la otra clase.

Pongo mas codigo o lo entendeis??jaja

megalomania
23/12/13, 20:56:43
Hola Napster,
Aquí tienes un ejemplo de como trabajar con SQLite de manera estándar: https://gist.github.com/rchampa

Es un ejemplo de como implementar un DBHelper, y cómo crear una clase para cada tabla que tengas.

Napster87
26/12/13, 11:26:53
Gracias,al final he conseguido hacerlo funcionar y entender el funcionamiento del helper y el adaptador.
Como siempre,tengo otra duda,relacionada con mostrar dos campos en un listview usando sqlite.Es posible?En plan imagen y texto,aunque de momento intento hacerlo solo con texto en ambos...el codigo es este:

public void bindView(View view, Context context, Cursor cursor)

{
TextView tv1 = (TextView) view.findViewById(R.id.text1) ;
TextView tv2 = (TextView) view.findViewById(R.id.text2) ;

tv1.setText(cursor.getString(cursor.getColumnIndex (HipotecaDbAdapter.C_COLUMNA_NOMBRE)));
tv2.setText(cursor.getString(cursor.getColumnIndex (HipotecaDbAdapter.C_COLUMNA_CONTACTO)));

}


@Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
final LayoutInflater inflater = LayoutInflater.from(context);
final View view = inflater.inflate(android.R.layout.two_line_list_it em, parent, false);

return view;
}
}

Me da error al ejecutarlo,en principio en la misma actividad donde tengo el listview crearia los dos textos para rellenarlo con la informacion no?

oxot
03/01/14, 14:07:34
Qué error te da? No estarás intentando acceder a los textView para modificar su contenido antes de tener la vista operativa (por ejemplo inflándola)??
No puedes acceder a una view antes de inflarla pero con esas dos funciones no veo el flujo de tu programa.
Ya nos dirás.
Un saludo.

Napster87
07/02/14, 08:54:42
Anterior problema lo solucione...ahora tengo este que soy incapaz....intento rellenar un array con data de un cursor pero no lo consigo.

El codigo:

public class Tab3Up extends Activity {

private HipotecaDbAdapter dbAdapter;
private Cursor cursor;
private long id ;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imageslide);
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
ViewPager myPager = (ViewPager) findViewById(R.id.view_pager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);

dbAdapter = new HipotecaDbAdapter(this);
dbAdapter.abrir();
cursor = dbAdapter.getRegistro(id);
}
private int imageArra[] = { R.drawable.foto1, R.drawable.foto2,
R.drawable.foto3, R.drawable.foto4, };

Con este paso al viewpager un array con la localizacion de las fotos a:

public class ViewPagerAdapter extends PagerAdapter {

Activity activity;
int imageArray[];

public ViewPagerAdapter(Activity act, int[] imgArra) {
imageArray = imgArra;
activity = act;
}

public int getCount() {
return imageArray.length;
}

//MAS CODIGO AQUI PERO ABREVIO....

Asi me funciona,pero tengo que modificarlo para rellenar ese array con data de un cursor desde sqlite,que aloja la ruta de las imagenes.Estoy intentando hacerlo asi:

if (cursor.moveToFirst()) {
do {
array.add(cursor.getInt(cursor.getColumnIndex(Hipo tecaDbAdapter.C_COLUMNA_FOTO1))); //<< pass column index here instead of i

} while (cursor.moveToNext());
}

//fotos[0] = (Integer[])array.toArray(new Integer[array.size()]);

Alguna idea de si voy bien o mal encaminado?el array ese es privado y tengo problemas de pasarle los datos de esta manera,como deberia de acceder a estos datos y pasarle el array al adapter??ahi mi problema.....

Saludos!!gracias por la ayuda ...estoy atascado...