Mostrando entradas con la etiqueta programación android. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación android. Mostrar todas las entradas

viernes, 1 de enero de 2016

Tasker tarea automática un día a una hora

Desde hace tiempo sueño con que nuestro móvil, sea nuestro secretari@, pero mientras llega ese momento tenemos tasker. Hace meses escribí sobre como encender el bluetooth a una hora, pero luego, pense que es mucho más interesante hacer el bluetooth, o cualquier otra cosa, se nos active a una hora determinada, unos días en concreto.
En el video siguiente podréis ver como hago que mi móvil encienda automáticamente el bluetooth a las 7 de la mañana de lunes a viernes.



lunes, 1 de junio de 2015

Avisos llamadas

Los ya lectores habituales de este blog sabrán que soy un apasionado del desarrollo de aplicaciones para dispositivos móviles.
En esta ocasión he publicado una aplicación creada con tasker.
Desde siempre, he sido un apasionado de las estadísticas, y en mi último trabajo, me gusta registrar en que diferentes proyectos dedico el tiempo, a quien le resuelvo más incidencias y que tipo de incidencias resuelvo. Para hacer esto hay que dedicar un mínimo de tiempo, pero yo intento obtener estos datos de manera automática. Un claro ejemplo, son las llamadas que recibimos en nuestros teléfonos. Para ello he creado la aplicación avisos llamadas que lo que hace es recopilar las llamadas que recibimos en nuestro teléfono en un periodo de tiempo y nos envia esta información para que podamos explotarla.

Editado el 07/08/15
Al final la aplicación hecha en tasker no me funcionaba como quería, pero he resuelto el problema de una manera mucho más fácil, utilizando la aplicación if by ifttt con dos recetas muy sencillas.

https://ifttt.com/recipes/161618-keep-a-phone-call-log-in-google-drive




jueves, 1 de enero de 2015

tasker eventos google calendar

Aquí os dejo una tarea que nos dice los eventos que tenemos que realizar en el día de hoy.

Funciona aunque estoy intentado mejorarlo, para que os funcione solo hay que abrir el fichero xml y modificar PON_AQUI_TU_EMAIL por vuestro usuario de gmail y PON_AQUI_TU_CLAVE por tu código privado de ICAL.



AgendaDia (4)
A1: Establecer variable [ Nombre:%newline1 A: TRANSP Calcular:Apagado Añadir:Apagado ] 
A2: Establecer variable [ Nombre:%newline2 A: DTEND: Calcular:Apagado Añadir:Apagado ] 
A3: Establecer variable [ Nombre:%newline3 A: DTSTAMP Calcular:Apagado Añadir:Apagado ] 
A4: Establecer variable [ Nombre:%newline4 A: DTEND;VALUE=DATE: Calcular:Apagado Añadir:Apagado ] 
A5: HTTP Get [ Servidor:Puerto:https://www.google.com Ruta:/calendar/ical/PON_AQUI_USUARIO%40gmail.com/private-PON_AQUI_CLAVE/basic.ics Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime:application/octet-stream Archivo de salida:caltest.txt Trust Any Certificate:Apagado ] 
A6: Leer Archivo [ Archivo:caltest.txt A la variable:%cal ] 
A7: Separar variable [ Nombre:%cal Separador:BEGIN:VEVENT Eliminar base:Apagado ] 
A8: Escribir archivo [ Archivo:VariableCal Texto:%cal Añadir:Apagado Añadir Nueva Línea:Apagado ] 
A9: Array Pop [ Variable:%cal Posición:1 A la variable: ] 
A10: For [ Variable:%calfor Ítems:%cal(1:25) ] 
A11: Separar variable [ Nombre:%calfor Separador:SUMMARY: Eliminar base:Apagado ] 
A12: Separar variable [ Nombre:%calfor2 Separador:%newline1 Eliminar base:Apagado ] 
A13: Si (if) [ %calfor1 !~ *VALUE=DATE:* ]
A14: Separar variable [ Nombre:%calfor1 Separador:DTSTART: Eliminar base:Apagado ] 
A15: Separar variable [ Nombre:%calfor12 Separador:%newline2 Eliminar base:Apagado ] 
A16: Else 
A17: Separar variable [ Nombre:%calfor1 Separador:DTSTART;VALUE=DATE: Eliminar base:Apagado ] 
A18: Separar variable [ Nombre:%calfor12 Separador:%newline4 Eliminar base:Apagado ] 
A19: Fin si (End if) 
A20: Si (if) [ %calfor1 !~ *VALUE=DATE:* ]
A21: Separar variable [ Nombre:%calfor121 Separador:T Eliminar base:Apagado ] 
A22: Sección de Variable [ Nombre:%calfor1212 Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ] 
A23: Else 
A24: Establecer variable [ Nombre:%calfor1211 A:%calfor121 Calcular:Apagado Añadir:Apagado ] 
A25: Establecer variable [ Nombre:%calfor1212 A:0000 Calcular:Apagado Añadir:Apagado ] 
A26: Sección de Variable [ Nombre:%calfor1211 Desde:1 Longitud:8 Encajar:Apagado Almacenar Resultado en: ] 
A27: Fin si (End if) 
A28: Separar variable [ Nombre:%calfor122 Separador:%newline3 Eliminar base:Apagado ] 
A29: Si (if) [ %calfor1 !~ *VALUE=DATE:* ]
A30: Separar variable [ Nombre:%calfor1221 Separador:T Eliminar base:Apagado ] 
A31: Sección de Variable [ Nombre:%calfor12212 Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ] 
A32: Else 
A33: Establecer variable [ Nombre:%calfor12211 A:%calfor1221 Calcular:Apagado Añadir:Apagado ] 
A34: Establecer variable [ Nombre:%calfor12212 A:2359 Calcular:Apagado Añadir:Apagado ] 
A35: Sección de Variable [ Nombre:%calfor12211 Desde:1 Longitud:8 Encajar:Apagado Almacenar Resultado en: ] 
A36: Fin si (End if) 
A37: Establecer variable [ Nombre:%start1 A:%calfor1212 Calcular:Apagado Añadir:Apagado ] 
A38: Establecer variable [ Nombre:%start2 A:%calfor1212 Calcular:Apagado Añadir:Apagado ] 
A39: Sección de Variable [ Nombre:%start1 Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ] 
A40: Sección de Variable [ Nombre:%start2 Desde:3 Longitud:2 Encajar:Apagado Almacenar Resultado en: ] 
A41: Establecer variable [ Nombre:%start A:%calfor1211 %start1:%start2 Calcular:Apagado Añadir:Apagado ] 
A42: Convertir Variable [ Nombre:%start Función:Fecha Hora a Segundos Almacenar Resultado en: ] 
A43: Establecer variable [ Nombre:%end1 A:%calfor12212 Calcular:Apagado Añadir:Apagado ] 
A44: Establecer variable [ Nombre:%end2 A:%calfor12212 Calcular:Apagado Añadir:Apagado ] 
A45: Sección de Variable [ Nombre:%end1 Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ] 
A46: Sección de Variable [ Nombre:%end2 Desde:3 Longitud:2 Encajar:Apagado Almacenar Resultado en: ] 
A47: Establecer variable [ Nombre:%end A:%calfor12211 %end1:%end2 Calcular:Apagado Añadir:Apagado ] 
A48: Convertir Variable [ Nombre:%end Función:Fecha Hora a Segundos Almacenar Resultado en: ] 
A49: Array Push [ Nombre:%calstartdate Posición:9001 Valor:%calfor1211 Rellenar Espacios:Apagado ] 
A50: Array Push [ Nombre:%calenddate Posición:9001 Valor:%calfor12211 Rellenar Espacios:Apagado ] 
A51: Array Push [ Nombre:%calstarttime Posición:9001 Valor:%start1.%start2 Rellenar Espacios:Apagado ] 
A52: Array Push [ Nombre:%calendtime Posición:9001 Valor:%end1.%end2 Rellenar Espacios:Apagado ] 
A53: Array Push [ Nombre:%calendsec Posición:9001 Valor:%end Rellenar Espacios:Apagado ] 
A54: Array Push [ Nombre:%calstartsec Posición:9001 Valor:%start Rellenar Espacios:Apagado ] 
A55: Array Push [ Nombre:%caltitle Posición:9001 Valor:%calfor21 Rellenar Espacios:Apagado ] 
A56: End For 
A57: [X] Flash [ Texto:%caltitle1
%calstartdate1
%calenddate1
%calstarttime1
%calendtime1
%calstartsec1
%calendsec1 Largo:Encendido ] 
A58: [X] For [ Variable:%caltit Ítems:%caltitle() ] 
A59: [X] Flash [ Texto:%caltit Largo:Apagado ] 
A60: [X] Decir [ Texto:%caltit Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Encendido Network:Apagado Continuar tarea inmediatamente:Apagado ] 
A61: [X] End For 
A62: Establecer variable [ Nombre:%diamovil A:%DATE Calcular:Apagado Añadir:Apagado ] 
A63: Buscar y Reemplazar Contenido de Variable [ Variable:%diamovil Buscar:- Ignore Case:Apagado Multi-Line:Apagado One Match Only:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con: ] 
A64: Sección de Variable [ Nombre:%diamovil Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en:%diaDD ] 
A65: Sección de Variable [ Nombre:%diamovil Desde:3 Longitud:2 Encajar:Apagado Almacenar Resultado en:%mesMM ] 
A66: Sección de Variable [ Nombre:%diamovil Desde:5 Longitud:4 Encajar:Apagado Almacenar Resultado en:%anyoYYYY ] 
A67: Establecer variable [ Nombre:%diamovil A:%anyoYYYY%mesMM%diaDD Calcular:Apagado Añadir:Apagado ] 
A68: Establecer variable [ Nombre:%contador A:0 Calcular:Apagado Añadir:Apagado ] 
A69: For [ Variable:%dia Ítems:%calstartdate() ] 
A70: Sumar a variable [ Nombre:%contador Valor:1 Módulo (wrap around):0 ] 
A71: Establecer variable [ Nombre:%contador2 A:0 Calcular:Apagado Añadir:Apagado ] 
A72: Si (if) [ %dia ~ %diamovil ]
A73: For [ Variable:%evento Ítems:%caltitle() ] 
A74: [X] Flash [ Texto:%contador %contador2 Largo:Apagado ] 
A75: Sumar a variable [ Nombre:%contador2 Valor:1 Módulo (wrap around):0 ] 
A76: Si (if) [ %contador ~ %contador2 ]
A77: Decir [ Texto:%evento Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Encendido Network:Apagado Continuar tarea inmediatamente:Apagado ] 
A78: Fin si (End if) 
A79: End For 
A80: Fin si (End if) 
A81: End For 



lunes, 1 de diciembre de 2014

Enceder Bluetooth a una hora

Como encender automáticamente el Bluetooth a una hora determinada mediante Tasker




Aquí os dejo como reproducir este automatismo que he creado en Tasker
Perfil: Mañana (2)
Hora: Desde 07:46
Entrada: BT ON (3)
A1: Bluetooth [ Establecer:Encendido ] 

martes, 12 de agosto de 2014

programación android: empezando de 0

Desde que empecé a saber lo que era el proyecto Android sabía que quería desarrollar aplicaciones en este sistema y la verdad es que lo he intentado en varias ocasiones, pero se me ha hecho bastante difícil, de hecho, aun no soy capaz de programar en Android con soltura.
En mi vida he programado en diferentes lenguajes, plataformas, tecnologías… pero una en las que me he sentido más cómodo ha sido con el Visual Studio, el hecho tener un diseñador de formularios, arrastrar el control que quieras, hacer doble clic y empezar a programar el comportamiento de ese control, me parecía muy cómodo e intuitivo.
Para programar en Android tuve que ponerme con el Eclipse, entorno que no me gusta mucho, y la verdad, me costó bastante adaptarme a esta nueva manera de programar. Ahora con el AndroidStudio voy a volver a intentarlo.
Este artículo trata sobre los ficheros más importantes (programación y diseño) en un proyecto de una aplicación Android y como están conectados estos ficheros entre sí.
Son conceptos muy básicos y explicado a muy bajo nivel, pero seguro que hay alguien que lo encuentra útil.

Aquí tenemos el sistema de ficheros de nuestro proyecto de nuestra aplicación


Dentro del directorio java tendremos el fichero MyActivity.java aquí tendremos “la programación”
Dentro de res/layout tenemos activity_my.xml que será el “diseño”

Comunicación entre programación y diseño

Como añadir un TextView, es decir, un label, etiqueta o similar
Si quiero mostrar en mi programa una etiqueta y asignarle un valor MEDIANTE PROGRAMACION tendré que hacer lo siguiente

1.- Crear el TextView en el activity_my.xml

android:id="@+id/txtTEXTO"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

2.- Cambiarle el valor mediante programación MyActivity.java
Para empezar a programar, empezaremos a escribir nuestras sentencias dentro de la función onCreate, después de la instrucción setContentView(R.layout.activity_my);

finalTextViewtextView = (TextView) findViewById(R.id.textView);
textView.setText("KK");

Como mostrar un Buttony como lanzar instrucciones una vez el usuario hace clic

1.- Crear el Button en el activity_my

< Button
android:id="@+id/btnOK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="OK" />

2.- Escribir sentencias a ejecutar cuando el usuario haga clic MyActivity.java

finalButtonbtnOK = (Button) findViewById(R.id.btnOK);
btnOK.setOnClickListener(new View.OnClickListener() { 
            @Override
publicvoidonClick(View v) {
                //Instrucciones a ejecutar una vez el usuario ha hecho clic en nuestro botón
            }
        });

sábado, 20 de febrero de 2010

programacion android: como saber mediante que tipo de red estamos conectados

Os dejo aquí el código fuente de un programa para android, con el cual podemos saber a que tipo de red esta conectado nuestro teléfono. EDGE, GPRS, UMTS, WIFI.
package com.tutoriales.ejemplo;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.TextView;
//import android.os.Parcelable;
public class ejemplo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hola");
setContentView(tv);
ConnectivityManager mgr = (ConnectivityManager) getBaseContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = mgr.getActiveNetworkInfo();
if (netInfo != null) {
if (netInfo.getState() == NetworkInfo.State.CONNECTED
&& netInfo.isAvailable()) {

if (netInfo.getSubtypeName().equalsIgnoreCase("EDGE")) {
tv.setText("EDGE");
}
if (netInfo.getSubtypeName().equalsIgnoreCase("GPRS")) {
tv.setText("GPRS");
}
if (netInfo.getSubtypeName().equalsIgnoreCase("UMTS")) {
tv.setText("UMTS");
}
if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) {
tv.setText("WIFI");
}
}
}
}
}

Fuente | anddev.org