viernes, 24 de mayo de 2013

Calendario y primer día de la semana

Hola a tod@s

Hace poco tiempo empece a desarrollar otra app. Esta se fundamenta en un calendario y como es lógico hay que implementarlo. Me decidí por utilizar un par de classes que ya estaban hechas y ahí llegaron los problemas...

Las dos clases que iba a probar tenian establecido, como primer día de la semana el Domingo, y en muchos paises (incluido en el que vivo) la semana comienza en Lunes así que había que cambiarlo.




Después de releer veinte veces las soluciones seguía sin enterarme, me había atascado, me pudo el desanimo y comencé a pasar un poco de esto, hasta que un día pensé... ¿Que mejor sitio para buscar ayuda que el foro de basic4android ? (recordemos que yo programo con b4a :p ).

Eso hice, pregunté en el foro y el amigo "vampirbcn" me remitió a lo mismo que había ojeado una y otra vez sin éxito...

Esta vez la cosa cambió, había estado mirando la parte difícil del código sin darme cuenta de que en la parte fácil, en la declaración de variables estaba la solución a tanto tiempo perdido.

Al final, conseguí modificar no una clase sino las dos, una de ellas gracias en gran parte a "vampirbcn" que, aunque me remitió al mismo post que había leído muchas veces, me sirvió de empujón para volver a intentarlo.

La otra ya fue mirar donde tenia que mirar y modificar :)


Os dejo las soluciones a las dos clases por si a alguien mas le viene bien.

Custom Calendar

Para cambiar los días de la semana y que comience en Lunes en vez de en Domingo vamos a cambiar la linea:

   Public NmFullday(8As String : NmFullday = Main.Local.WeekDays 'NmFullday = Array As String("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi")
Por esta otra:

    Public NmFullday(8As String : NmFullday = Array As String("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
Pero con esto solo no basta, de echo, solo hemos cambiado el nombre de las etiquetas, ahora para cambiar el orden de los días en el calendario cambiamos la linea:

nday = (DateTime.GetDayOfWeek(SomeTime)-1)  'FirstDayOfWeek = Sunday

Por esta otra:

nday = (DateTime.GetDayOfWeek(SomeTime)-2)  'FirstDayOfWeek = Monday

Y con esto ya tenemos nuestro calendario empezando en Lunes y totalmente funcional



AnotherDatePicker

La primera linea que vamos a cambiar cambiar es la de los label que son los que contienen el nombre de los días, así que modificamos la linea:

 daysNames = Array As Label(Label1, Label2, Label3, Label4, Label5, Label6, Label7)

Y la dejamos así:

daysNames = Array As Label(Label7, Label1, Label2, Label3, Label4, Label5, Label6)

Como veis solo hemos cambiado el orden de los label, desplazandolos una posición a la izquierda.

Y ahora cambiamos la linea:

dayOfWeekOffset = DateTime.GetDayOfWeek(firstDay) Mod 7

Por esta otra:

dayOfWeekOffset = DateTime.GetDayOfWeek(firstDay) -1 Mod 7


Y listo, ya tenemos la clase cambiada para que arranque en Lunes y funcionando ;-)




Gracias a vampirbcn por mostrarme lo que había leido 20 veces y aun así no era capaz de ver lo evidente ;-)


Enlace al post y las classes


Un saludo a tod@s


Eugenio J. Sánchez

sábado, 11 de mayo de 2013

Código descuento 50% para basic4android

En uno de los foros en los que participo han preguntado hace pocos días por algún código descuento para adquirir la licencia de basic4android. La verdad es que no había caído en la cuenta de que es algo que puede interesar a algunos de vosotros.

Mi código descuento es "dcigpt".

Sólo es válido para 20 descargas. Si al usarlo os da algún tipo de error seguramente es porque ya se usado veinte veces. Si esto ocurre os agradecería que me lo comunicarais para comentarlo por aquí.

Para adquirir la licencia aprovechando este código descuento tenéis que pinchar aquí:

 http://www.basic4ppc.com/android/purchase.html

La página que aparece es para que seleccionéis la versión que queréis comprar, NORMAL o ENTERPRISE, para los "vaguetes" os diré que la versión normal os ofrece 2 meses de actualizaciones gratuitas y acceso al foro así como las descargas de librerías adicionales. La enterprise os ofrece lo mismo pero por 2 años, a mi me parece mucho mas interesante esta última. Para comprar cualquiera de las dos versiones debéis hacer click en la zona rodeada en rojo que os muestro en esta captura.


Una vez seleccionada la versión que queréis os aparece la pagina de compra directamente, vamos a ver como se hace simulando la compra de la versión enterprise.


Como podéis ver en los recuadros en rojo el precio total de la compra es de 98,15 $ que, al cambio, son unos 75€ (aproximadamente). También podéis ver que, en el recuadro de abajo, no hemos puesto ningún código. Vamos a ver ahora aplicando el código como se queda todo esto.

Ponemos el código del cupón en el recuadro de abajo y pulsamos en volver a calcula y debería quedarnos algo así:



Podemos ver que nos añade un nuevo concepto, "Friends" con un valor de negativo de 40.56 $ y el total, evidentemente, también ha bajado y se nos queda en 49,07 $ que, al cambio, son unos 38 € (aproximadamente).

De esta manera podemos tener la posibilidad de desarrollar un montón de aplicaciones gracias a este estupendo entorno de desarrollo y a los complementos (librerías adicionales) con basic4android por poco dinero y durante dos años comprando la versión enterprise. 

Recordad que mi código descuento es "dcigpt".

Espero que os sea útil y para la próxima podamos comentar dudas sobre desarrollo, por ejemplo.

Hasta pronto a tod@s.


viernes, 29 de marzo de 2013

E.C.E. y avances

Hola a tod@s, hace mucho tiempo que no os cuento nada y creo que va siendo hora...

La verdad es que no he tenido tiempo para casi nada, he empezado a trabajar y eso ha absorbido, casi por completo, todo mi tiempo. Pero no va a ser todo malo... En este tiempo he avanzado poco, pero han sido avances importantes.

He conseguido reducir el tamaño de la aplicación unificando partes del código que, al ser llamadas en varios puntos del programa, era absurdo tener repetidas. Esto a decir verdad no se va a notar en el resultado final, sin embargo está todo mas depurado y organizado.

Entonces... ¿qué ha cambiado en E.C.E. - En caso de emergencia? Bueno, de cara al usuario no cambia casi nada (aún), la única novedad apreciable es la posibilidad de incorporar nuestra foto a la ficha que ya tenemos. 

La manera de hacerlo es simple, cuando sale la ficha vemos, en la parte superior derecha el icono de la app. Si hacemos click en esa imagen automáticamente nos da la opción de abrir la galería y seleccionar una imagen.



Esto genera una imagen en miniatura dentro de la carpeta del E.C.E. y un archivo de control para indicarle a la app que hay una foto seleccionada y cual es el archivo.

Una vez tenemos la imagen que queremos mostrar en la ficha, si hacemos click de nuevo, nos da la opción de dejarla como está, cambiarla por otra o eliminarla como podemos ver en la siguiente captura.


Puede parecer poca cosa, pero de cara a un accidente es muy importante saber de quien es el termina,l y qué mejor que con una foto, ¿no?

Un saludo a tod@s

Eugenio J. Sánchez



miércoles, 30 de enero de 2013

Se acerca San Valentín...



Hola a tod@s
Hace ya dos semanas desde la última entrada. Dos semanas de cambios, de avances, aunque a tropezones, pero productivas a fin de cuentas.
Hoy os traigo noticias de una nueva aplicación: ¿Quieres ser mi San Valentín?




Esta aplicación nos permite felicitar San Valentín, o cualquier otro día, enviando una imagen con un texto personalizado a las personas que quieras. Como ya es habitual, el envío se efectúa mediante whatsapp, mail, redes sociales... etc. Sencillo, rápido y funcional. Aunque algo más complicada de programar de lo que imaginé inicialmente.
 
Originalmente pretendía poner una especie de “collage” de 4x4 imágenes o algo así. Pero luego me di cuenta de que no iba a ser viable. Si tenemos un terminal pequeño, no se ven las imágenes que tenemos que seleccionar. Así que me decidí por un scrollview, que nos permite visualizar todas las imágenes desplazándolas en la pantalla.

Con "¿Quieres ser mi San Valentín?", podremos elegir entre más de 15 imágenes y 10 tipos de letra distintos para personalizar nuestra felicitación. El mensaje ya es cosa vuestra. Os pongo unos ejemplos de felicitaciones ya enviadas.




Cierto es que la primera versión que colgué en la play store no funcionó muy bien que digamos. En mi terminal y en las simulaciones funcionaba genial. Sin embargo al pasar la primera versión "estable" a Dani, Marco, Irene y Raquel me informaron, casi inmediatamente, de una serie de errores que yo no había visto inicialmente y que tiraban por tierra la ilusión que tenía en ese momento.

La notificación de la barra de estado, que aparecía en las primeras versiones, estaba pensada para volver a la aplicación cuando salíamos de la misma de forma inesperada. Por ejemplo si nos llaman por teléfono. Cuando esto ocurre las aplicaciones pasan a segundo plano y aparece la llamada, al colgar aparecemos, muchas veces, en la pantalla principal del móvil. Con  la notificación pretendía poder volver a la aplicación, en el punto exacto donde me había quedado, para poder continuar con la felicitación. Sin embargo la implementé mal, y lo único que hacía era provocar errores graves que forzaban el cierre de la app. La solución a este problema ha sido la eliminación temporal de la misma, hasta que consiga arreglarlo.

Otro error molesto era que, dependiendo del terminal, el diseño del edittext donde escribía el  texto hacía que no se viese el texto que estaba escribiendo (en mi terminal funcionaba bien, pero en otros era casi imposible de leer). En este caso la solución pasaba por dejar los botones y edittext con su forma y color por defecto, de esta manera no hay problemas en ninguna versión de android.

Y por comentar otro más… cuando pretendía enviar una imagen sin texto me tiraba otro error, esta vez con el tipo de letra, curioso ¿verdad? La imagen se va a enviar SIN texto y me da fallo un tipo de letra, jejejeje. Esto fue un poco más complicado, la rutina que llama a la función de envío se realiza en varios puntos distintos y claro, tuve que revisarlos todos hasta que di con el problema. Creé una serie de If…Then…Else…End if para encauzar el programa por donde tenía que ir. Ahora ya funciona estupendamente.

Pero, ¡no pasa nada! Actualmente está publicada la versión 1.5 eliminando todos estos errores y algunas "florituras" que impedían su correcta visualización en algunos terminales.

Y para la semana que viene espero tener lista la nueva versión, la 1.6. En la que pretendo incluir, entre otras cosas:

-Nuevas imágenes
-Estabilización y depuración del código
-Soporte total para dispositivos con pantallas pequeñas

Todo esto sin dejar de lado el resto de aplicaciones.

La de E.C.E - En caso de emergencia, sin ir más lejos, va a recibir en breve una actualización importante. En la que voy a dotar a la aplicación de una serie de funcionalidades que, a mi parecer, la van a hacer única entre las aplicaciones similares. 

Ya os iré contando.

Un abrazo a tod@s

lunes, 14 de enero de 2013

Actualizaciones (E.C.E. y Trébol)

Hola a tod@s

Hoy creamos esta nueva entrada para informaros de las actualizaciones realizadas en nuestras aplicaciones.

Empecemos con "E.C.E. - En caso de emergencia":

Nos quedamos en la parte de los errores de selección del grupo sanguíneo. Pues bien, he renovado un poco todo eso. De cara al usuario no se detectan grandes diferencias, sin embargo el código ha sido modificado casi en su totalidad para que funcione correctamente.

Otro error que se ha corregido es el de las afecciones, he cambiado el cuadro de diálogo que había por un spinner donde se selecciona si tenemos o no alguna patología, en caso afirmativo se habilita el edittext de abajo para introducirlas manualmente, en caso negativo se inhabilita ese edittext y marca "No" en sombredo.

 

También he reducido el tamaño de algunos iconos y gráficos para intentar hacer la app más ligera. Aunque da un poco igual en esta versión de la aplicación. Lo he hecho pensando en futuras mejoras.

Lo más importante es que la aplicación ya es totalmente funcional. Por eso, y ante la imposibilidad de añadir un icono o widget en la pantalla de bloqueo del terminal por ahora, he añadido un mensaje en la pantalla principal. Aconsejo que cuando salgamos de viaje se desactive el patrón de bloqueo de los terminales.  Así si tenemos un accidente el sanitario que nos auxilie puede ver lo que pone en E.C.E. De otra manera no podría acceder a nuestros datos y la plicación no sería de ninguna utilidad.


En resumen, he mejorado el manejo y la estabilidad de la aplicación y añadido algunas cosas de relativa importancia. Espero que os sea útil.

En cuanto a Tu trébol de la suerte, subí una actualización añadiendo en la pantalla principal unos botones sociales, los típicos "Síguenos". Estos nos llevan a una nueva activity con un botón de Facebook y otro de Twitter, si pulsamos en cualquiera de ellos nos llevan a nuestras páginas de Facebook o Twitter. Sin embargo la aplicación aumentó de tamaño llegando a pesar casi 500kb. Algo pesada para una aplicación de estas características, así que tuve que hacer algunas modificaciones.

Lo primero fue aligerar, así que reduje los tamaños de los iconos para que, viendose correctamente, pesara menos. Con esto conseguí dejarla en 299kb, cosa que es más aceptable.

La pega venia en los dispositivos con pantallas de menos de 3'5". En estos salía todo demasiado junto y el texto se solapaba en la imagen del trébol... Bueno, un desastre.

¿Solución? Rutina nueva en la app, se detectan las pulgadas de la pantalla y si son inferiores a 3'5" se muestra un texto en lugar del icono. Puede que no sea tan bonito pero desde luego es práctico.

Asi se ve actualmente.

 

Recordad que en la la Play Store podeis descargar estas aplicaciones, os dejo el enlace.


Un abrazo a tod@s