jueves, 12 de noviembre de 2015

Tutorial Android Parte 3 - Lanzar actividades de forma explicita

La segunda forma de lanzar actividades, es hacerlo de forma explicita, para esto se tiene que modificar el archivo manifest.xml agregando para la actividad "Dos" un "intent filter" el cual es como un "alias" que las actividades van a poder referencia para identificar la actividad.


Una vez modificado el archivo manifest.xml, solo debemos de cambiar la forma en la que llamamos la actividad utilizando el método setAction como se muestra a continuación.


Si todo sale bien podran visualizar nuevamente la actividad dos.


El código fuente de este ejemplo se puede encontrar en la siguiente dirección.

https://github.com/alfespa17/tutorialmobile/tree/master/Ejemplo3LanzarActividadesExplicitas






Tutorial Android Parte 2 - Lanzar Actividades de forma Implicita

Una de las cosas mas comunes en Android es lanzar diferentes aplicaciones para que el usuario pueda realizar diferentes acciones, por ejemplo estar en la aplicación de Facebook y lanzar la aplicación de la cámara para tomar un Selfie o estar en la actividad de Google+ y luego lanzar la aplicación de Youtube para ver un vídeo.

Existen dos métodos para cargar actividades, la primera es la forma implícita que es la que describiré a continuación y la forma explicita que la detallare en otro entrada del blog.

Lo primero que necesitaremos será crear un proyecto y agregar una segunda actividad a la aplicación ademas de la actividad que se crea por defecto y le llamaremos actividad "dos".

Click derecho en java->new->activity-EmptyActivity, colocamos el nombre "dos" y luego podremos observar nuestra nueva actividad en Android Studio.

Buscamos el layout de la actividad principal, agregamos un pequeño boton y le asignamos un id "lanzarDos" para poder obtener una referencia al objeto luego.



Ahora modificamos el código java de la actividad principal para poder agregar la acción al botón y lanzar la actividad dos.


Al ejecutar el código si todo salio bien luego de presionar el botón inicial deberían de poder visualizar el resultado de la siguiente forma.


El código fuente de este ejemplo lo pueden encontrar en la siguiente dirección

https://github.com/alfespa17/tutorialmobile/tree/master/Ejemplo2LanzarActividadImplicita



Tutorial Android Parte 1 Ciclo de Vida de Actividades.

Todos los formularios en android se denominan actividades, cada actividad tiene un ciclo de vida predefinido que debe de tomarse en cuenta para comprender el funcionamiento de las diferentes aplicaciones y poder conocer como responden estas a diferentes tipos de estímulos como por ejemplo el cambio de orientación.



Para comprender mejor como funciona el ciclo de vida podemos ejecutar el codigo de ejemplo "Ejemplo1CicloVida" en mi respositorio de git y revisar el log de la aplicación para poder observar como se ejecuta cada uno de los metodos cuando giramos el dispositivo, cuando cambiamos de actividad o cuando cerramos las actividades.

https://github.com/alfespa17/tutorialmobile/tree/master/Ejemplo1CicloDeVida

Si lograron ejecutarlo de forma correcta luego de girar varias veces el dispositivo mobil deberian de poder visualizar un log similar al siguiente.






Tutorial Android Parte 0 Estructura de Proyectos

A continuación se describe de forma básica la estructura de los proyectos en Android. 
El archivo básico de configuración de cada aplicación Android se encuentra en el archivo manifest.xml, en este archivo se pueden definir cada unos de los formularios con los que contara la aplicación, se pueden definir los diferentes permisos a los cuales tendrá acceso, así como también la versión mínima necesaria para ejecutar la aplicación y la versión máxima de la mismas manera.


Las aplicaciones Android se desarrollan en capas, cada uno de las pantallas de los formularios se definen en la carpeta de layouts mediante archivos XML, estas se pueden crear considerando las diferentes resoluciones de los dispositivos.

Debido a que Android es una plataforma multi-lenguaje todas las cadenas de texto de nuestras aplicaciones deben de crearse en la carpeta de values/strings como se puede visualizar a continuación.

jueves, 4 de agosto de 2011

Cambiar Wallpaper en Gnome con Ruby

Bueno he aquí un pequeño script de ruby para cambiar el fondo de pantalla de un escritorio de Gnome, para ejecutarlo solo es necesario escribir en una terminal el siguiente comando:

ruby wallpaperDaemon.rb parametro1 parametro2 parametro3..N&

donde
parametro1     = Ruta en la cual se encuentran las imágenes para el fondo de pantalla
parametro2     = Tiempo en segundos para realizar el cambio de pantalla
parametro3..N = Extensión de archivos a ser tomadas en cuenta para cambiar el fondo de pantalla
&                   = Escribir al final para que se ejecute en segundo plano

Por ejemplo el comando completo para ejecutar el script seria:

ruby wallpaperDaemon.rb /home/alfredo/Imágenes/Wallpaper/ 10 png jpg bmp jpeg&




#!/usr/bin/env ruby

require 'rubygems'
require 'gconf2'

class WallpaperChanger
   def initialize(w_ruta)
      @w_directorio = w_ruta
      @w_tipos = []
      @w_imagenes = []
   end

   def buscarWallpaper
      buscarDirTipo(@w_directorio)
   end

   def wallpaperAleatorio()
      w_cliente = GConf::Client.default
      w_min = 0
      w_max = @w_imagenes.size-1
      w_cliente['/desktop/gnome/background/picture_filename'] = @w_imagenes[rand(w_min+rand(w_max))]
   end

   def agregarTipo(w_tipo)
      if @w_tipos.include?(w_tipo)
         puts "#{w_tipo} ya se ha ingresado"
      else
         @w_tipos.push(w_tipo)
      end
   end

   private
   def buscarDirTipo(w_directorio)
      Dir.new(w_directorio).each do |w_archivo|
         w_ruta = w_directorio + '/' + w_archivo
         unless (w_archivo =~ /^\.+/)
            File.directory?(w_ruta) ? buscarDirTipo(w_ruta) : verificarTipo(w_ruta)
         end
      end
   end

   def verificarTipo(w_archivo)
      @w_tipos.each do |extension|
         if w_archivo.end_with?(extension)
            agregarImagen(w_archivo)
         end    
      end
   end

   def agregarImagen(w_archivo)
      @w_imagenes.push(w_archivo)
   end
end

#REVISO LA EXISTENCIA DEL DIRECTORIO
if File.directory? ARGV[0]
   w_directorio = ARGV[0]
else
   raise 'Directorio no valido'
end

#VALIDO EL TIEMPO PARA CAMBIAR EL FONDO DE PANTALLA
if /[1-9][0-9]*/ =~ ARGV[1]
   w_tiempo = ARGV[1].to_i
else
   raise 'Tiempo no valido'
end

#CREANDO EL CAMBIADOR DE WALLPAPER
w_wallpaper = WallpaperChanger.new(w_directorio)

#AGREGANDO LOS TIPO DE EXTENSIONES DISPONIBLES
2.upto(ARGV.size-1) {|parametro| w_wallpaper.agregarTipo(ARGV[parametro])}

#BUSCO ARCHIVOS QUE COINCIDAN CON LOS TIPOS INGRESADOS
w_wallpaper.buscarWallpaper

loop do
   w_wallpaper.wallpaperAleatorio
   sleep(w_tiempo)
end


Megaupload: http://www.megaupload.com/?d=BB3700PD