6 ene. 2011

Aplicación que muestra las coordenadas del Celular en google maps en el escritorio

En este artículo se usará de base 2 artículos anteriores, el primero sobre un navegador web básico con python+gtk+webkit y el segundo el de captura de la localizción del celular con Android.

La idea es capturar la información del GPS del celular y mostrarlo en una aplicación gtk gracias a webkit mostrando la ubicación geográfica gracias a google maps.

La interfaz en glade se muestra a continuación.
En realidad es la misma aplicación del navegador lo único es que se le quito la entrada de texto y el botón de "ir".

A continuación se muestra el código de la aplicación:
#!/usr/bin/env python2.6
# -*- coding: utf-8 -*-
"""
Nombre:Geolocalizacion
Descripción: Programa que captura la localización del GPS del Celular y lo
    muestra en google maps en el escritorio Linux.
Versión:0.1
Licencia:GPLv3
Autor: Ernesto Crespo
correo: ecrespo@gmail.com
"""
#Import gtk and webkit


import gtk
import webkit
#Importando el módulo android
import android
from time import sleep


    
#class App
class App:
    def __init__(self):
        #Constructor
        #Se asocia el archivo glade al Builder
        self.glade_file = "geolocalizcion.glade"
        self.glade = gtk.Builder()
        self.glade.add_from_file(self.glade_file)
        #Se asocia la ventana geo
        self.window = self.glade.get_object('geo')
        #Se asocia el botón salir
        self.exit = self.glade.get_object('salir')
        #Se asocia la ventana deslizante
        self.scrolledwindow1 = self.glade.get_object('scrolledwindow1')
        #
        #Se conecta el evento destruir
        self.window.connect("destroy",self.on_geo_destroy)
        #Se asocia el evento del botón salir
        self.exit.connect('clicked', self.on_salir_clicked)
        #Se abre la página de google maps
        #Se instancia la clase webview
        self.webview = webkit.WebView()
        #Se agrega a la ventana deslizante
        self.scrolledwindow1.add(self.webview)
        #Se captura la localización
        tupla = localizacion()
        #Se abre el url de google maps pasandole la longitud y latitud
        self.__go("http://maps.google.com/maps?q=%s,%s" %tupla)
        
        #Se muestra la ventana principal de la aplicación
        self.window.show_all()
    
    
    def __go(self,url):
        #Se abre el url 
        self.webview.open(url)
        
        
    def on_geo_destroy(self,*args):
        #Se cierra la apliación
        gtk.main_quit()
    
    def on_salir_clicked(self,*args):
     #Se cierra la aplicación
        gtk.main_quit()
    
    
    def main(self):
        #Se inicia la aplicación
        gtk.main()
        
    
def localizacion():
    
        #Se crea la instancia de la clase Android
        droid = android.Android()
        #Se inicia la localizacion
        droid.startLocating()
        #Se espera 15 segundos
        sleep(15)
        #Se presenta en la consola la información de la localización
        #Se maneja la información de un diccionario.
        latitud = droid.readLocation().result["network"]["latitude"]
        longitud = droid.readLocation().result["network"]["longitude"]
        #Se detiene la localización
        droid.stopLocating()
        #Se retorna la latitud y longitud capturada por medio del GPS del celular.
        return (latitud,longitud)


if __name__ == '__main__':
    app = App()
    app.main()

La figura de la aplicación funcionando mostrando el mapa y la posición que devuelve el GPS del celular.

4 ene. 2011

Crear un Navegador web básico con python+gtk+webkit

Volviendo a la programación con python, glade y gtk; ahora explicare como hacer un navegador sencillo usando webkit en python.

Este post se basa en el artículo del Blog de Marcelo, la diferencia es que el programo sin glade la interfaz gráfica.

En la siguiente figura se muestra la interfaz gráfica de la aplicación.

La aplicación simplemente tiene una entrada de texto para el URL donde se le puede dar enter para cargar la página o al botón de "ir"; la página se cargará en el frame con barras deslizantes en el centro de la interfaz y se tiene un botón para salir del navegador. Por defecto se carga una página al iniciar la aplicación.

El código de la aplicación se muestra a continuación:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Importar los módulos gtl y webkit


import gtk
import webkit


    
#La clase App hereda threading.Thread
class App:
    def __init__(self):
     #Método constructor, asociando los widgets
        #Asociar el archivo glade al objeto Builder.
        self.glade_file = "navegador.glade"
        self.glade = gtk.Builder()
        self.glade.add_from_file(self.glade_file)
        #Asociando la ventana del navegador
        self.ventana = self.glade.get_object('navegador')
        #Asociando el boton salir
        self.bsalir = self.glade.get_object('bsalir')
        #Asociando el boton navegar
        self.navegar = self.glade.get_object('navegar')
        #Asociando la entrada de texto del url a navegar
        self.enlace = self.glade.get_object('url')
        #Asociando la ventana con las barras deslizantes
        self.scrolledwindow1 = self.glade.get_object('scrolledwindow1')
        #Conectores
        #Conectar de destruir la ventana principal
        self.ventana.connect("destroy",self.on_navegador_destroy)
        #Conectar del boton salir
        self.bsalir.connect('clicked', self.on_bsalir_clicked)
        #Conector del boton navegar
        self.navegar.connect('clicked',self.on_navegar_clicked)
        #Conector de dar enter a la entrada de texto
        self.enlace.connect('activate',self.on_url_activate)
        #Asociando página por defecto.
        #Instanciando la clase webview
        self.webview = webkit.WebView()
        #Agregando webview a la ventana con barras deslizantes
        self.scrolledwindow1.add(self.webview)
        #Abriendo una página por defecto
        self.__navegacion("http://www.debian.org")
        
        #Se muestra la ventana principal del programa
        self.ventana.show_all()
    
    #Si se da enter a la entrada de texto se captura el url y se navega
    def on_url_activate(self,*args):
        url = "http://" + self.enlace.get_text()
        self.__navegacion(url)


    #Se abre el url con webview
    def __navegacion(self,url):
        self.webview.open(url)
        
        
    def on_navegador_destroy(self,*args):
        #Se cierra la aplicación
        gtk.main_quit()
    
    def on_bsalir_clicked(self,*args):
     #Se cierra la aplicación al darle clip al boton salir.
        gtk.main_quit()
    
    def on_navegar_clicked(self,*args):
        #Se navega el url al darle clip al boton
        url = "http://" + self.enlace.get_text()
        self.__navegacion(url)
    
    def main(self):
     #Inicia la aplicación
        gtk.main()


if __name__ == '__main__':
    app = App()
    app.main()


En la siguiente figura se muestra el navegador en funcionamiento.

3 ene. 2011

2010

El año que apenas termina tuvo sus alegrías y tristezas; y la más importante es que mi padre que ya no está con nosotros. La felicidad más grande fue estar con la persona quien yo quiero en Valencia casualidades de la vida, aunque por 3 días, disfrute pasarla con ella y sólo espero que este año sea de un acercamiento completo...

Con respecto al blog casi repito la misma cantidad de artículos escritos que en el año 2009 por uno sólo no igualo la cifra.

Me había prometido escribir 48 artículos pero por diversas circunstancias no pude cumplir esa meta, bueno, será para este año que intentaré cumplir esa meta, a parte de escribir en español empezaré a escribir en inglés en mi otro blog para dejar este para sólo artículos en castellano;así que tocará traducir los artículos viejos que todavía estén actualizados y los que no actualizarlos y traducirlos.

Seguiré escribiendo sobre android y python, terminaré la serie de artículos sobre python+gtk+glade para así empezar a escribir sobre pyqt. También buscaré el tiempo para escribir sobre Django,seguire escribiendo sobre empaquetado en Debian orientado a python, algunas cosas sobre administración de redes y seguridad con Linux.

Uno de los problemas que tendré este año para escribir es el acceso al blog debido a restricciones de acceso en donde vivo y trabajo, intentaré cumplir la meta que
Ahora vamos con el resumen del blog:

  • El año 2010 escribí 35 artículos (el 36 iba a ser este artículo).
  • El mes donde más gente visito el blog fue en diciembre con 1721 visitas.
  • El artículo más leído fue python en Android con 665 visitas, seguido de comandos básicos de adb(Android) con 317 visitas y en tercer lugar Desarrollo de aplicaciones gráficas con python+gtk+glade con 235 visitas.
  • Hay 3 referencias importantes que tiene el blog, el wiki de python, el wiki de los tutoriales de SL4A que se encuentra en google code.
  • Los países de donde la gente más visita el blog son: España 2657, Venezuela 1195, Argentina 949, México 828,  Estados Unidos 413, Colombia 363, Chile 283, Alemania 201, Países Bajos 186, Perú 133; con algunas conexiones de Rusia, China, Corea del Sur, Japón, Reino Unido, Francia, etc.

Bueno, en el transcurso del mes iniciaré los artículos técnicos les envío un feliz año a todos los que me siguen, gracias por hacerlo!!!!.

AddThis