Si tienes un negocio te interesa

viernes, 24 de mayo de 2013

Calendario y primer día de la semana

CALENDARIO LABORAL

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 clases que ya estaban hechas y ahí llegaron los problemas...

Las dos clases que iba a probar tenían establecido, como primer día de la semana el Domingo, y en muchos países (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

Código no valido 



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.


martes, 7 de mayo de 2013

Permisos de nuestras app

Hola a tod@s

Hoy vamos a ver un poco los permisos que solicitan nuestras apps y que pueden disuadir a más de uno a la hora de instalarlas, sobre todo si tenéis una rom no oficial o "cocinada"

Veamos los permisos de "Tu trébol de la suerte" y "¿Quieres ser mi San Valentín?" al instalar desde la Play Store de Google. Empezamos con el trébol:


Vamos a ver que significa todo esto:
Comunicación de red - Acceso completo a la red.
Este permiso es requerido por una librería que utiliza los servicios de AdMob. Carga una barrita de publicidad en la parte inferior de la app y solo para eso. Por lo tanto si cargamos la aplicación en un terminal sin acceso a internet funcionará exactamente igual con la salvedad de que no cargará la publicidad. Esta publicidad no conlleva ningún cargo adicional al usuario.

Fondo de pantalla - Establecer fondo de pantalla
Como sabéis en las ultimas versiones de la aplicación se incorporó la opción de poner la imagen del trébol que sale al cargar la app de fondo de escritorio de nuestro terminal. Pues para poder hacerlo hay que añadir al Manifest.xml la siguiente linea.


<uses-permission android:name="android.permission.SET_WALLPAPER"/>

Esa el la que invoca la solicitud del permiso.

Comunicación de red - Ver conexiones de red
Este permiso es el mismo que el del primer apartado así que no lo voy a explicar de nuevo.

Afectar a la batería - Controlar la vibración
Y pensareis... ¿ vibración ?. Las notificaciones también vibran jejejeje, Al meterle las notificaciones estamos permitiéndole utilizar todas las funciones de las mismas y la vibración es una de esas funciones, de ahí el permiso.

Como veis no tiene nada raro, vamos a ver los de "¿Quieres ser mi San Valentín? La primera captura es lo que muestra la Play Store y la segunda es pulsando en "VER TODO"




Los permisos de comunicación de red y el del control de la vibración son los mismos que en la anterior app así que no los explico por el momento. Y digo "por el momento" porque el de vibración tiene un pequeño matiz que hay que aclarar.

Llamadas de teléfono - Consultar la identidad y el estado del teléfono
Este permiso puede dar lugar a error, EN NINGÚN CASO el programa realiza llamadas, ni muchísimo menos. Entonces... ¿de donde sale ese permiso?
En las últimas actualizaciones incorporé la librería RSCrop,  porque el método anterior para utilizar las fotos de la galería no funcionaba nada bien, y ademas con esta podía recortar la zona de la foto que quería. La pega es que esta librería requiere estos dos permisos.

RSCrop:
android.permission.WRITE_SECURE_SETTINGS
android.permission.READ_PHONE_STATE

El segundo es el que acabamos de comentar, y el primero es este...
Herramientas de sistema - Probar acceso a almacenamiento protegido

Intentaré eliminar ambos en futuras actualizaciones

Sigamos...

Almacenamiento - Modificar o eliminar el contenido de la SD
Por defecto en todas las app que hago guardo los temporales en el almacenamiento externo del terminal, generalmente la tarjeta SD, de ahí el permiso.

Comunicación de red - Acceso completo a red, y
Comunicación de red - Ver conexiones de red
Son lo mismo que en "Tu trébol de la suerte", para la publi.

Y el permiso...
Afectar a la batería - Controlar la vibración
Recordemos que tenia que ver con las notificaciones, lo he eliminado puesto que en esta app, de momento, no van a ser necesarias :p

Lector QR