loading...

martes, 27 de diciembre de 2011

Android. Determinar la velocidad de la red durante la reproducción de un vídeo.

Leer cantidad de bytes desde la red wifi.

private long parserNumber(String line) throws Exception {
        long ret=0;
        String[] delim = line.split(" ");
        if(delim.length >= 1){
            ret = Long.parseLong(delim[0]);
        }
        return ret;
    }
   
    public long syncFetchReceivedBytes() {
        // TODO Auto-generated method stub
        ProcessBuilder cmd;
        long readBytes=0;
        BufferedReader rd = null;
        try {
            String[] args = { "/system/bin/cat", "/proc/net/dev" };
            cmd = new ProcessBuilder(args);
            Process process = cmd.start();
            rd = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            String line;
            int linecount = 0;
            while ((line = rd.readLine()) != null) {
                linecount++;
                if(line.contains("lan0")||line.contains("eth0")){
                    String[] delim = line.split(":");
                    if(delim.length>=2){
                        readBytes=parserNumber(delim[1].trim());
                        break;
                    }
                }
            }
            rd.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (rd != null) {
                try {
                    rd.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return readBytes;
    }

 

Invocando la función anterior cada segundo

long curReadBytes=syncFetchReceivedBytes();
String strSpeed=(curReadBytes-lastReadBytes)/1024 kbps
lastReadBytes = curReadBytes;



lunes, 26 de diciembre de 2011

Desde Android como Enviar una petición HTTP POST con variables

public void saveDni(String id, String dni) {   HttpClient httpclient = new DefaultHttpClient();     
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");   try {
//Añade las variables a enviar por post
List<NameValuePair> postValues = new ArrayList<NameValuePair>(2);
postValues.add(new BasicNameValuePair("id", "000001"));
postValues.add(new BasicNameValuePair("dni", "23234345T"));   httppost.setEntity(new UrlEncodedFormEntity(postValues));   //Hace la petición
HttpResponse response = httpclient.execute(httppost);
}
catch (ClientProtocolException e) {
//TODO Auto-generated catch block
}
catch (IOException e) {
//TODO Auto-generated catch block
}
}


domingo, 25 de diciembre de 2011

MT6516 potencia Tops-A1 funciona con Windows Mobile y Android MTK6515

image

Tops-A1 es alimentado por MTK MT6515 chip, y el diseño fue copiado de HTC Diamond2, que se podría decir fácilmente de la imagen. Se pone un procesador de 416 MHz, 3.2 pulgadas WQVGA 240x400 pantalla, 256 MB de RAM, 256 MB ROM, chip de GPS, dual sim, una cámara de 3 megapíxeles y una cámara secundaria frontal.  Estas especificaciones no son definitivamente muy bueno de acuerdo con el estándar de la industria actual, pero este teléfono recibe más de lo que se podía ver a partir de sus especificaciones. Cuando este teléfono por primera vez al mercado sólo con Windows Mobile.Recientemente, el fabricante dio a conocer un nuevo ROM, con la que el teléfono puede funcionar con Windows Mobile y Android OS. Una cosa puede ser diferente de esperar es que no se puede seleccionar el sistema operativo de su pantalla de inicio. En su lugar, usted necesita decidir qué sistema operativo que desea ejecutar cuando se inicia el teléfono por pulsar las teclas diferentes. Cuando se presiona la tecla de encendido para iniciar el teléfono, pone el sistema operativo Android. Cuando se presiona la tecla de encendido y tecla de retroceso, al mismo tiempo para iniciar el teléfono, te lleva Windows Mobile. Todos estos se presentaron en el siguiente video, echar un vista



HTC EVO 4G clon V819 funciona con Android 2.1 MTK6516

image

El clon de HTC EVO 4G de Shenzhen shanzhai está a punto de salir al mercado. El diseño es muy similar a la máquina original, pero las especificaciones no son tan buenos. Es sólo sobre la base de MTK MTK 6516 chip, que sólo tiene un procesador de 460 MHz, con lo que con un 3,5 pulgadas de 320x480 pantalla táctil resistiva, 256 MB de RAM, 512 MB de ROM y una cámara de 2 megapíxeles. Wi-Fi y GPS tampoco falta como características estándar. Se ejecuta Android 2.1, y se pone de radio FM.El precio aún no es revelado, pero podría ser alrededor de 1.200 yuanes.



I9000 Samsung Galaxy S clon de Shenzhen

image

Galaxy de Samsung teléfonos de la serie S no se comportan mal en el mercado, y de la maldición que atrajo la atención de los encargados de Shenzhen shanzhai. Este Galaxy S I9000 clon es su más reciente respuesta. El teléfono se ve decente con un acabado dorado, y también sólida construcción, lo que podría molestar es que se basa en MTK MTK6516 chip, que apenas consigue un procesador de 416MHz. Se ejecuta Android 2.1 en la actualidad, y de acuerdo con los niños detrás de M8cool el fabricante lanzará un nuevo firmware en no mucho tiempo, compatible con Windows Mobile y Android de arranque dual, que no es imposible, y los responsables de shanzhai no llevar increíble, porque hemos parecen algunas MTK6516 teléfonos basados ​​en sistema operativo de arranque dual. Otras especificaciones incluyen un 3,5 pulgadas de 320 × 480 de pantalla táctil capacitiva, 256 MB de RAM, 512 MB ​​de ROM, Bluetooth y conectividad Wi-Fi y una cámara de 5 megapíxeles. Todavía no hay información sobre el precio.



HOT teléfono HD9 se doble sim dual y el sistema operativo

hot

Este es el nuevo teléfono HD9 de la compañía de esta serie. HOT HD9 tiene un 4,3 pulgadas de 480 × 800 de pantalla táctil capacitiva, 512 MB de ROM, 488 MB de RAM, una cámara de 8 megapíxeles, y un conector para auriculares de 3,5 mm. Es compatible con dual sim, dual y sistema operativo: el día de Windows Mobile 6.5 y Android 2.2. Las personas mayores de sitio web chino PConline dijo que recibe un 1 GB procesador Qualcomm 8250B, pero dudo mucho de eso. Lo más probable es que viene con una 460 Mhz MTK6516 chip. El diseño es bastante decente, pero el precio no es barato también, que es de 1980 Yuan (unos $ 290 USD).



MTK6516 clon de HTC Desire potencia soporta Android 2.2, sim dual y pantalla WVGA

clon1

MTK empresa parece haber hecho grandes mejoras en su MTK6516 chip de teléfono inteligente. Ellos han tenido éxito esta plataforma de apoyo a Android 2.2 y pantalla WVGA.Todo esto  se ha demostrado en un teléfono real, un clon de HTC Desire. El teléfono corre Android 2.2, con 480 × 800 pixels, que son a la vez la primera vez que se encuentra en MTK6516 teléfonos basados ​​en chip. La pantalla es de 3,6 pulgadas, y se hace doble SIM de apoyo, uno de los favoritos función de los empresarios. Otra cosa interesante es que este teléfono no tiene ningún problema para ejecutar el popular juego Angry aves, que se mostró en el segundo vídeo. El primer video le dará una impresión más o menos de la pantalla del teléfono y la respuesta.



Baratos Dual Sim teléfono Android A5000 basado en MTK6516

A5000

MTK6516 son  teléfonos definitivamente que  no están en la gama de teléfonos de gran alcance en la norma actual. Este chip sólo tiene un procesador de 460Mhz, pero prometen un muy buen precio. El teléfono frente a usted se le llama A5000, con un MTK6516 chip dual sim apoyo y Android 2.2 OS. Sus especificaciones incluyen otros 256 MB de RAM, 512 MB de ROM, cámara de 3.2 megapíxeles, un conector para auriculares de 3,5 mm, y una batería de 1800 mAh. El diseño no es malo, no como los que son totalmente copiada de las marcas del pantano. Es un poco gruesa, pero tiene un aspecto sólido.



iPhone 4 clon M98 corre Android, sólo 9,8 mm con un espesor MTK6516

mtk6516 clom

Este clon llamado M98 corre Android2.2, y de la imagen de la interfaz de usuario parece muy agradable. Pero lo que hace que este teléfono diferente al grupo de clones es su grosor, que es 9,8 mm, la misma que la del original. Lo triste es que es sólo sobre la base de MTK6516 chip, que sólo obtiene un procesador de 460 Mhz. sus otras especificaciones incluyen un 3,5 pulgadas de 480 x 800 pixels, 512 MB de ROM, 256 MB de RAM, una cámara de 3,2 megapíxeles y una batería mAh 1800. M98 se encuentra todavía en prototipo, y todavía no hay palabras sobre la disponibilidad de tiempo y precio.



Fabricante de shanzhai desarrolla primer teléfono compatible Google y Apple MTK6516

gooapple (1)

El teléfono Gooapple, no parece malo en el video. Se roba por completo el diseño del iPhone, y se ejecuta el sistema operativo Android en su interior. Es impulsado por un chip de 460Mhz MTK6516, con lo que con un 3,5 pulgadas de 480 * 320 de pantalla táctil capacitiva, doble cámara de 5 megapíxeles, respectivamente, y las resoluciones de 1,3 megapíxeles, conectividad 3G WCDMA, Android 2.2 OS. No hay palabras acerca de su memoria RAM y ROM. Que llegará al mercado el 10 de abril, con una apariencia agradable precio 999 yuanes ($ 153 USD).



El MOTODEV aplicación Validator

 
image
Cómo funciona:
  1. Haga clic en "Get Started" botón de abajo y entrar en MOTODEV.
  2. Simplemente arrastre y suelte su aplicación.
  3. Obtener al instante los resultados!

 

El validador de la aplicación también se incluye con MOTODEV Studio, el galardonado IDE basado en Eclipse para desarrolladores de Android. El MOTODEV aplicación Validator es una herramienta online que permite una rápida pre-test de sus aplicaciones Android durante el desarrollo de la compatibilidad con una amplia gama de dispositivos Android y los perfiles de hardware, incluyendo el Motorola XOOM ™.

La aplicación de validación SDK Beta

Personalizar esta solución de prueba de aplicaciones móviles para satisfacer las necesidades de su organización.

Hacer preguntas y obtener retroalimentación

Únase a la comunidad MOTODEV para charlar con los expertos de la aplicación de validación, entender los resultados, y obtener retroalimentación sobre su aplicación.

Comenzar

 Más información »



viernes, 23 de diciembre de 2011

El cerebro presta más atención a la cara de una persona sobre la que hemos oído chismes negativos

Los chismes son uno de los principales males de nuestra sociedad. Un pequeño comentario negativo, puede terminar por poner fin a cualquier tipo de relación entre personas y todo grupo o institución que dependa de ellas, incluyendo las empresas.
Por si fuera poco, está comprobado que las habladurías reducen la productividad. Según un estudio de la consultora especializada en recursos humanos, Ábaco Siglo XXI, los rumores que circulan por las empresas pueden hacer perder entre dos y tres horas de jornada laboral a los empleados, mermando la productividad de la compañía en un 50%.
Además, a diferencia de un comentario positivo, los chismes tienen una viralización mucho mayor; cuentan con el denominado “efecto bola de nieve”, razón por la cual son tan difíciles de controlar.
Un grupo de científicos de la Universidad del Noreste de Boston (EU), quiso ahondar más en el tema y optó por estudiar cómo el sistema visual de nuestro cerebro presta atención a una cara de una persona sobre la que hemos oído “chismes negativos”.
El estudio, publicado por la revista Science, indica que contrario de lo que se podría pensar afecta no sólo las opiniones que tenemos acerca de alguien, sino también a algo más básico que eso: la facilidad con la que ves a una persona.
En otras palabras, un chisme negativo hace más probable que veamos una cara que si no teníamos información sobre ella, o si lo que sabíamos era algo positivo o neutro.
Según Lisa Barrett, profesora de psicología de la Universidad del Noreste de Boston, aunque el grupo de investigadores desconoce el porqué de este hecho, la hipótesis que barajan es que las regiones del cerebro que están implicadas en los sentimientos y el aprendizaje emocional están conectados con el sistema visual, y también con las regiones subcorticales del cerebro que forman parte de la percepción.

El experimento

El grupo estadounidense diseñó experimentos centrándose en un fenómeno de la percepción visual llamado “rivalidad binocular”, por el que alternamos entre diferentes imágenes presentadas a cada ojo. Así, cuando nos muestran dos cuadros, uno para cada ojo, sólo somos capaces de ver uno de ellos.
Para ello, contaron con la participación de 66 alumnos universitarios, exponiendo caras neutras asociadas a una descripción de un comportamiento negativo; como puede ser robar, un comportamiento positivo; como por ejemplo visitar a alguien que está enfermo, o un comportamiento neutral.
Según relata Science, cada cara se presentó cuatro veces. En total, 20 caras para cada categoría. Posteriormente mostraron estos rostros solos, agregaron 20 nuevos y las utilizaron en un experimento de ‘rivalidad binocular’. Es decir, en cada ensayo se le enseñó al participante una cara para un ojo y una casa para el otro.
Gracias a ello pudieron observar que cuando mostraban una cara neutra en un ojo y una casa en la otra, al comunicarles chismes negativos sobre la cara, lo más probable es que vieran más la cara que la casa. Si les decían algo positivo, o neutral, no existía diferencia para ver la casa o la cara.

AltoNivel



miércoles, 21 de diciembre de 2011

¿Cómo puedo limitar los recursos del proceso?

 

Use  setrlimit( ), que permite controlar los datos, rss, CPU el uso, el tamaño máximo de pila y mucho más.

int setrlimit (int resource, const struct rlimit *rlim);

#include <sys/types.h> 
#include <sys/time.h>
#include <sys/resource.h>

struct rlimit r = { 0, 0 };
if (setrlimit(RLIMIT_NPROC, &r) != 0)
{
/* setrlimit( ) error */
}
if (fork() == -1)
{
perror("fork");
}


¿Cómo puedo leer y modificar los contenidos del espacio de direcciones de otro programa y cómo puedo obtener información del proceso, como / usr / bin / top?

 

#include <kvm.h> 
#include <sys/types.h>
#include <sys/ptrace.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>

pid_t             child;
kvm_t             *kvm;
struct kinfo_proc *kproc;
child = fork();
if (child == -1)
{
  /* fork( ) error */
}
else if (child == 0)
{
  execl("/some/program", (char *) NULL);
}
kvm = kvm_open(NULL, "/dev/mem", NULL, O_RDONLY, NULL);
if (kvm == NULL)
{
  /* kvm_open( ) error */
}
kproc = kvm_getprocs(kvm, KERN_PROC_PID, child, &rc);
if (kproc == NULL)
{
  /* kvm_getprocs( ) error */
}
if (rc)
{
  char  *p = kproc->kp_eproc.e_vm.vm_daddr;
  int   data;
  if (ptrace(PT_ATTACH, child, 0, 0) != 0)
  {
    /* ptrace( ) error */
  }
  kill(child, SIGSTOP);
  wait(NULL);
  errno = 0;
  data = ptrace(PT_READ_D, child, p, 0);
  if (data == -1 && errno != 0)
  {
    /* ptrace( ) error */
  }
  printf("Data segment start: %p\n", p);
  printf("First %d bytes: %x\n", sizeof(data), data);
}



¿Cómo puedo saber si tengo mi programa de E / S y si se redirige o no?

 

#include <unistd.h> 

if (isatty(STDIN_FILENO) == 0)
{
/* input is pipe or file */
}
if (isatty(STDOUT_FILENO) == 0)
{
/* output is redirected/piped */
}


¿Cómo puedo ejecutar mi programa en segundo plano, al igual que mi concha y que si me escriba. / Prog y?

 

#include <unistd.h> 
#include <sys/types.h>

pid_t child;
child = fork();
if (child == -1)
{
/* fork( ) error */
}
else if (child == 0)
{
if (setsid() == -1)
{
/* setsid( ) error */
}
}
else
{
return(0);
}

/* program continues here */


Como hacer una conexión tipo tubería entre un programa y otro. Usando la función piper()

 

 

#include <unistd.h>
int pipe(int filedes[2]);

/*

+Este código crea un tubo y crea un proceso hijo con tenedor ().
* El niño se convierte en el "más" del programa y espera a que
* La entrada de STDIN. El proceso padre envía los datos por su
* Final de la tubería, la cual es recibida por el niño.

 */
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int fd[2], i;
pid_t child;
if (pipe(fd) != 0)
{
/* pipe( ) error */
}
child = fork();
if (child == -1)
{
/* fork( ) error */
}
else if (child == 0)
{
close(fd[1]);
if (dup2(fd[0], STDIN_FILENO) != STDIN_FILENO)
{
/* dup2( ) error */
}
execl("/usr/bin/more", (char *) NULL);
}
else
{
close(fd[0]);
for (i = 0; i < 100; ++i)
{
if (write(fd[1], "hello\n", 6) == -1)
{
/* write( ) error */
}
}
close(fd[1]);
waitpid(child, NULL, 0);
}


lunes, 19 de diciembre de 2011

Osciloscopio para iPad, iPhone y iPod

image

Osciloscopio para iPad, iPhone y iPod
Vista previa de la aplicación del osciloscopio para iOS:http://OscilloscopeApp.com/



Android Bluetooth osciloscopio

Android Bluetooth osciloscopio

Android Bluetooth / Osciloscopio inalámbrica utilizando Samsung Galaxy GT-i5700 Spica, y dsPIC33FJ16GS504 LMX9838.http://projectproto.blogspot.com/2010/09/android-bluetooth-oscilloscope.html



Microchip PIC24 Android StarterKit (ADK)

Microchip PIC24 Android StarterKit (ADK)

Microchip PIC24 Android StarterKit (ADK) + LEDs Shield Board , I/O LEDs ,Servo and DC Motor



Android ™ para el Desarrollo de accesorios con chipKIT ™ MAX32

Android ™ para el Desarrollo de accesorios con chipKIT ™ MAX32

Este video muestra un ejemplo de aplicación de trabajo de Marco de accesorios de Microchip para Android ™ se ejecuta en la plataforma de desarrollo de chipKIT ™ Para ver paso a paso las instrucciones, consulte el siguiente post: http://www.chipkit.org/forum/viewtopic. php f = 7 & t = 545 y hilit = Android? Para más información, visite:http://www.microchip.com/android http://www.microchip.com/chipKIT



miércoles, 7 de diciembre de 2011

Android, junto a Kodak te dan el poder de impresión desde tu teléfono inteligente con Document Print y Google Cloud Print

kodak
Kodak pretende facilitarnos la vida al hacer que sea posible imprimir desde un teléfono Android cualquiera, por medio de su aplicación Document Print.
kodak1
Los requisitos básicos hablan del uso de una impresora Kodak AiO registrada en su servicio, y la selección del documento a imprimir desde Evernote, Dropbox, Google Docs o el navegador. Con esos requisitos cumplidos, es posible imprimir desde cualquier lugar del mundo gracias a la nube y por medio de Google Cloud Print.
image
App Kodak






Documento de impresión Kodak de la aplicación para Android OS


Características




Acceder a los archivos * en el dispositivo, Evernote, Dropbox o Google Docs
Acceder a las páginas Web
Enviar archivos y páginas web a cualquier impresora Kodak AiO **, desde cualquier web conectada dispositivo Android ™ ***

Enviar a la impresora

Paso 1:

Paso 2:
Paso 3:

:
Seleccionar el lugar donde se almacenan los archivos

Seleccione los archivos

Paso 4:
Paso 5:


Accede a tu cuenta Google

Seleccione Ajustes de impresión y de impresión










Vía: http://www.kodak.com/ek/US/en/Document_Print_App_for_Android.htm


martes, 6 de diciembre de 2011

Android. Si vamos a reproducir un video, necesitaremos conocer el tiempo del buffer, ya que al Api de Media Player no lo hace.

Para leer cuantos bytes se han bajado a través de una red wifi.

También podremos chequear la velocidad de conexión, mirando lo siguiente:

tiempo = curReadBytes syncFetchReceivedBytes ();
cadena strSpeed ​​= (curReadBytes-lastReadBytes) / 1024 kbps
lastReadBytes = curReadBytes;

Código de ejemplo

private long parserNumber(String line) throws Exception {
long ret=0;
String[] delim = line.split(" ");
if(delim.length >= 1){
ret = Long.parseLong(delim[0]);
}
return ret;
}   public long syncFetchReceivedBytes() {
// TODO Auto-generated method stub
ProcessBuilder cmd;
long readBytes=0;
BufferedReader rd = null;
try {
String[] args = { "/system/bin/cat", "/proc/net/dev" };
cmd = new ProcessBuilder(args);
Process process = cmd.start();
rd = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line;
int linecount = 0;
while ((line = rd.readLine()) != null) {
linecount++;
if(line.contains("lan0")||line.contains("eth0")){
String[] delim = line.split(":");
if(delim.length>=2){
readBytes=parserNumber(delim[1].trim());
break;   }
}
}
rd.close();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rd != null) {
try {
rd.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return readBytes;
}


domingo, 4 de diciembre de 2011

Se ha descubierto un neuvo mundo de la tegnología. Androidland, dedicada a dispositivos Android

 

Fans de Android de todo el mundo: toca peregrinación a Australia a realizar una visita obligada a Androidland, la "primera tienda del mundo" dedicada a dispositivos Android, según asegura Telstra, el operador australiano que la ha inaugurado. Situada en Melbourne, la apertura ha contado con el apoyo explícito de Google y varios fabricantes, y no sabemos si es el inicio de una gran aventura que lleve a la apertura de más tiendas por todo el globo, o si se trata de una experiencia de carácter regional. Los que accedan a Androidland, lo primero que notarán es la profusión del color verde por todas las esquinas, y podrán visitar la "space ship", un lugar donde se puede jugar a Angry Birds en una gran pantalla, o bien navegar por Google Earth también en una pantalla de enormes dimensiones. Tienes un vídeo tras el salto.



sábado, 3 de diciembre de 2011

Dispositivo para aquellos que no pueden caminar por si solos. EKSO Bionics exoesqueleto

Cuando se trata de aquellos que no pueden caminar más, debido a una lesión en la médula espinal, la movilidad no es que mucha y más si  usted está en una silla de ruedas. Sin embargo, estoy bastante seguro de que hay momentos en que uno se siente muy, muy deprimido o decaído sobre la situación, y de alguna manera usted quería volver a levantarse y caminar - o incluso correr, al igual que el protagonista de la película Avatar . Bueno, la gente de EKSO Bionics han llegado con su exoesqueleto propio que se dice que es capaz de ofrecer a aquellos con lesiones de la médula espinal el volver a estar de pie y caminando, sobre sus propias piernas sin tener que depender de las ruedas de cualquier tipo . Todavía tendrá una buena cantidad de tiempo para que esta tecnología se perfeccione y llegue al mercado.

Fuente: http://www.ubergizmo.com/2011/12/ekso-bionics-exoskeleton/



Android. Supercurio desarrolla una app que detecta la presencia de Carrier IQ

A estas alturas, ya serás consciente del revuelo que se ha armado al descubrirse que Carrier IQ registraba buena parte de la información de los Android, lo que desató la inquietud y como consecuencia de ello, la polémica. Pues bien, mientras se dilucida el asunto, Supercurio ha llegado al rescate con una aplicación para móviles Android que detecta la larga mano de esta firma en tu terminal. Se trata de una aplicación no terminada, pero que ya puedes descargarla, y lo que es mejor del asunto, es que el código abierto está a disposición de todos los usuarios que quieran mejorarla. La tienes haciendo clic en Leer.



Sin su autorización, Algunos teléfonos Android están expuestos a la ejecución de aplicaciones no autorizadas

A estas alturas es increíble que se siga dando esta situación, pero así es: algunos fabricantes todavía no han enseñado a sus Androides a decir que no pueden abrir la puerta a desconocidos. Un equipo de investigadores de la Universidad del Estado de Carolina del Norte han descubierto que ocho teléfonos Android (HTC Legend, EVO 4G y Wildfire S; Motorola Droid y Droid X; Samsung Epic 4G; y Google Nexus One y Nexus S) poseen importantes fallos de seguridad que permitirían que aplicaciones sin la "confianza" del sistema operativo enviaran mensajes SMS, grabaran conversaciones, localizaran al usuario, borraran datos y ejecutaran programas potencialmente dañinos sin el consentimiento de sus propietarios a través de aplicaciones ya instaladas, según han descubierto usando una herramienta especial que han bautizado con el nombre de Woodpecker (pájaro carpintero). Todas las pruebas se realizaron en teléfonos con las aplicaciones de serie, que a fin de cuentas, suponen el mayor riesgo para los usuarios al estar presentes en un mayor número de terminales.
Curiosamente (o más bien no), de los teléfonos analizados, los Nexus fueron los menos vulnerables, lo que sugiere que otros fabricantes no han seguido el modelo para implementar el sistema de permisos de Android. Tanto Motorola como Google han reconocido estas carencias, pero por lo visto, tanto Samsung como HTC no han sido receptivas a los hallazgos de los investigadores, que en sus palabras, se han encontrado con "dificultades importantes" para comunicarles sus descubrimientos.
[Vía
Ars Technica]



viernes, 2 de diciembre de 2011

Android Fundamentos de la aplicación

 

Vista rápida

  • Aplicaciones de Android se compone de uno o más componentes de la aplicación (actividades, servicios, proveedores de contenido y receptores de radiodifusión)
  • Cada componente realiza una función diferente en el comportamiento global de la aplicación, y cada uno de ellos se puede activar de forma individual (aunque por otras aplicaciones)
  • El archivo de manifiesto debe declarar todos los componentes de la aplicación y también debe declarar todos los requisitos de aplicación, como la versión mínima de Android necesarios y todas las configuraciones de hardware necesarios
  • Código de no aplicación de recursos (imágenes, secuencias, archivos de diseño, etc) deben incluir alternativas para las configuraciones de dispositivo diferente (como cadenas en distintos lenguajes y diferentes diseños para diferentes tamaños de pantalla)

En este documento

  1. Componentes de la aplicación
    1. La activación de los componentes
  2. El archivo de manifiesto
    1. La declaración de los componentes
    2. La declaración de los requisitos de aplicación
  3. Recursos de aplicación

Las Aplicaciones Android están escritas en el lenguaje de programación Java. Las herramientas de Android SDK, compilar el código, junto con los datos y archivos de recursos-en un paquete de Android , un archivo comprimido con un . apk sufijo. Todo el código en una sola . apk de archivo es considerado como una aplicación y es el archivo que con Android utiliza para instalar la aplicación.

Una vez instalado en un dispositivo, cada aplicación Android vive en su propia seguridad sandbox:

  • El sistema operativo Android es un sistema multi-usuario de Linux en el que cada aplicación es un usuario diferente.
  • Por defecto, el sistema asigna a cada solicitud un único ID de usuario de Linux (el ID es utilizado sólo por el sistema y se desconoce a la aplicación). El sistema establece permisos para todos los archivos en una aplicación para que sólo el ID de usuario asignado a esa aplicación puede acceder a ellos.
  • Cada proceso tiene su propia máquina virtual (VM), por lo que el código de una aplicación se ejecuta de manera aislada de otras aplicaciones.
  • Por defecto, cada aplicación se ejecuta en su proceso de Linux propia. Android se inicia el proceso cuando alguno de los componentes de la aplicación necesitan ser ejecutados, y luego cierra el proceso cuando ya no se necesita o cuando el sistema debe recuperar la memoria para otras aplicaciones.

De esta manera, el sistema Android implementa el principio de privilegios mínimos. Es decir, cada aplicación, por defecto, sólo tiene acceso a los componentes que necesita para hacer su trabajo y nada más. Esto crea un ambiente muy seguro en el que una aplicación no puede acceder a partes del sistema para el cual no se le da permiso.

Sin embargo, hay maneras para que una aplicación para compartir datos con otras aplicaciones y de una aplicación para acceder a los servicios del sistema:

  • Es posible disponer de dos aplicaciones que comparten el mismo ID de usuario de Linux, en cuyo caso pueden acceder a los demás archivos. Para ahorrar recursos del sistema, las aplicaciones con el mismo ID de usuario también puede hacer arreglos para ejecutar en el mismo proceso y Linux comparten la misma máquina virtual (las solicitudes deben estar firmadas con el mismo certificado).
  • Una aplicación puede solicitar permiso para acceder a los datos del dispositivo, tales como los contactos del usuario, los mensajes SMS, el almacenamiento capaz (tarjeta SD), cámara, Bluetooth, y mucho más. Todos los permisos de la aplicación debe ser concedida por el usuario durante la instalación.

Que cubre los conceptos básicos acerca de cómo una aplicación Android que existe dentro del sistema. El resto de este documento es una introducción a:

  • Los componentes básicos que definen el marco de la aplicación.
  • El archivo de manifiesto en el que se declaran los componentes y las funciones requeridas de dispositivo para su aplicación.
  • Recursos que están separados del código de la aplicación y permitir que la aplicación para optimizar su comportamiento con elegancia para una variedad de configuraciones de los dispositivos.

Componentes de la aplicación

Componentes de la aplicación son los componentes esenciales de una aplicación Android. Cada componente es un punto diferente a través del cual el sistema puede entrar en su aplicación. No todos los componentes son verdaderos puntos de entrada para el usuario y algunos dependen unos de otros, pero cada uno existe como una entidad propia y desempeña un papel específico, cada uno es una pieza única que ayuda a definir el comportamiento general de la aplicación.

Hay cuatro tipos diferentes de componentes de la aplicación. Cada tipo tiene un propósito distinto y tiene un ciclo vital distinto que define cómo el componente se crea y destruye.

Estos son los cuatro tipos de componentes de la aplicación:

Actividades
Una actividad representa una pantalla única con una interfaz de usuario. Por ejemplo, una aplicación de correo electrónico puede haber una actividad que muestra una lista de correos electrónicos nuevos, otra actividad para componer un correo electrónico, así como otra actividad para la lectura de mensajes de correo electrónico. Aunque las actividades de trabajo para formar una experiencia de usuario coherente en la aplicación de correo electrónico, cada una es independiente de los otros. Como tal, una aplicación puede comenzar a cualquiera de estas actividades (si la aplicación de correo electrónico lo permite). Por ejemplo, una aplicación de cámara se puede iniciar la actividad en la aplicación de correo electrónico que compone nuevos mensajes de correo, para que el usuario pueda compartir una imagen.

Una actividad que se implementa como una subclase de actividad y se puede aprender más sobre esto en la actividades de guía para el desarrollador.

Servicios
Un servicio es un componente que se ejecuta en segundo plano para realizar operaciones de larga duración o para realizar un trabajo de procesos remotos. Un servicio no proporciona una interfaz de usuario. Por ejemplo, un servicio puede reproducir música en segundo plano mientras el usuario está en una aplicación diferente, o puede obtener los datos por la red sin la interacción del usuario con el bloqueo de una actividad. Otro de los componentes, tales como actividad, puede iniciar el servicio y se deja correr o se unen a ella con el fin de interactuar con él.

Un servicio se implementa como una subclase de servicio y usted puede aprender más sobre él en el Servicios de guía para el desarrollador.

Los proveedores de contenido (Content provider)
Un proveedor de contenidos administra un conjunto compartido de datos de aplicación. Puede almacenar los datos en el sistema de archivos, una base de datos SQLite, en la web, o cualquier otro lugar de almacenamiento permanente de su aplicación puede tener acceso. A través del proveedor de contenidos, otras aplicaciones pueden consultar o modificar incluso los datos (si el proveedor de contenido lo permite). Por ejemplo, el sistema Android ofrece un proveedor de contenidos que gestiona la información de contacto del usuario. Por lo tanto, cualquier aplicación con los permisos adecuados puede hacer una consulta por parte del proveedor de contenido (como ContactsContract.Data ) a leer y escribir información sobre una persona en particular.

Los proveedores de contenidos también son útiles para la lectura y escritura de datos que son privativos de su aplicación y no se comparten. Por ejemplo, el Bloc de Notas aplicación de ejemplo utiliza un proveedor de contenido para guardar notas.

Un proveedor de contenido se lleva a cabo como una subclase de ContentProvider y debe implementar un conjunto estándar de API que permite a otras aplicaciones para realizar transacciones. Para más información, consulte el contenido de los proveedores de guía para el desarrollador.

Receptores de radiodifusión (Broadcast receivers)
Un receptor de radiodifusión es un componente que responde a los anuncios de difusión en todo el sistema. Muchas emisiones se originan en el sistema-por ejemplo, una emisión de anunciar que la pantalla se ha apagado, la batería está baja, o una imagen fue capturada. Las solicitudes también se pueden iniciar las emisiones, por ejemplo, para permitir que otras aplicaciones de saber que algunos datos han sido descargados en el dispositivo y está disponible para que los utilice. A pesar de receptores de radiodifusión no mostrar una interfaz de usuario, pueden crear una notificación de la barra de estado para alertar al usuario cuando un evento de difusión se produce. Más comúnmente, sin embargo, un receptor de radiodifusión es una "puerta" a otros componentes y tiene la intención de hacer una mínima cantidad de trabajo. Por ejemplo, se podría iniciar un servicio para realizar un trabajo basado en el evento.

Un receptor de radiodifusión se implementa como una subclase de BroadcastReceiver y cada emisión se entrega como una intención de objetos. Para más información, consulte la BroadcastReceiver clase.

Un aspecto único del diseño del sistema Android es que cualquier aplicación puede comenzar otro componente de la aplicación. Por ejemplo, si desea que el usuario capturar una foto con la cámara del dispositivo, es probable que haya otra aplicación que hace eso y su aplicación se puede utilizar, en lugar de desarrollar una actividad para capturar una foto de ti mismo. No es necesario incorporar o incluso enlazan con el código de la aplicación de la cámara. En su lugar, sólo tiene que iniciar la actividad en la aplicación de cámara que capta una foto. Cuando esté completo, la foto es incluso volvió a su aplicación para que pueda usarlo. Para el usuario, parece como si la cámara es en realidad una parte de su solicitud.

Cuando el sistema arranca un componente, se inicia el proceso para que la aplicación (si no está abierto) y crea una instancia de las clases necesarias para el componente. Por ejemplo, si su aplicación se inicia la actividad en la aplicación de cámara que captura una foto, que la actividad se ejecuta en el proceso que pertenece a la aplicación de la cámara, no en el proceso de la aplicación. Por lo tanto, a diferencia de la mayoría de las aplicaciones en otros sistemas, las aplicaciones de Android no tiene un único punto de entrada (no hay main () función, por ejemplo).

Debido a que el sistema se ejecuta cada aplicación en un proceso separado con permisos de archivos que limitan el acceso a otras aplicaciones, su aplicación no pueden activar directamente un componente de otra aplicación. El sistema Android, sin embargo, se puede. Por lo tanto, para activar un componente de otra aplicación, debe entregar un mensaje al sistema que especifica su intención de iniciar un componente particular. Entonces, el sistema activa el componente para usted.

Componentes de la activación

Tres de los cuatro tipos de componentes, actividades, servicios y difusión receptores son activados por un mensaje asincrónico llama intención . Intenciones se unen los componentes individuales el uno al otro en tiempo de ejecución (se puede pensar en ellos como los mensajeros que la solicitud de una acción de otros componentes), si el componente pertenece a su aplicación u otra.

La intención es creada con una intención de objetos, que define un mensaje de que se active un componente específico o un determinado tipo de componentes, la intención puede ser explícita o implícita, respectivamente.

Para las actividades y servicios, la intención define la acción a realizar (por ejemplo, para "ver" o "enviar" algo) y puede especificar el URI de la información para actuar en (entre otras cosas, que el componente que está siendo iniciado puede ser que necesite saber ). Por ejemplo, la intención podría transmitir una petición para una actividad para mostrar una imagen o abrir una página web. En algunos casos, puede iniciar una actividad para recibir un resultado, en cuyo caso, la actividad también se devuelve el resultado de una intención (por ejemplo, puede emitir un intento para que el usuario elija un contacto personal y lo han devuelto a usted -la intención de retorno incluye un URI que apunta al contacto seleccionado).

Para receptores de radiodifusión, la intención simplemente define el anuncio se emite (por ejemplo, una emisión para indicar la batería del dispositivo es bajo sólo incluye una cadena de acción conocida que indica "batería baja").

El tipo de otro componente, el proveedor de contenido, no está activado por las intenciones. Por el contrario, se activa cuando el blanco de una solicitud de un ContentResolver . La resolución de contenido maneja todas las transacciones directas con el proveedor de contenido de modo que el componente que es la realización de transacciones con el proveedor no tiene por qué y en lugar de llamadas a métodos en el ContentResolver objeto. Esto deja una capa de abstracción entre el proveedor de contenidos y la información del componente solicita (por seguridad).

Hay métodos diferentes para activiting cada tipo de componente:

  • Usted puede iniciar una actividad (o darle algo nuevo que hacer) haciendo pasar una intención de startActivity () o startActivityForResult () (si desea que la actividad para devolver un resultado).
  • Usted puede iniciar un servicio (o dar nuevas instrucciones para un servicio continuo) al aprobar una intención de StartService () . O se puede enlazar con el servicio pasando una intención de bindService () .
  • Usted puede iniciar una transmisión, pasando una intención de métodos como sendBroadcast () , sendOrderedBroadcast () , o sendStickyBroadcast () .
  • Usted puede realizar una consulta a un proveedor de contenidos llamando query () en un ContentResolver .

Para más información sobre el uso de las intenciones, ver la intención y la intención de filtros de documentos. Más información sobre la activación de los componentes específicos también se proporciona en los siguientes documentos: Actividades , Servicios , BroadcastReceiver y proveedores de contenido .

El archivo de manifiesto

Antes de que el sistema Android puede iniciar un componente de aplicación, el sistema debe saber que existe el componente de la lectura de la aplicación AndroidManifest.xml archivo (el "manifiesto" de archivos). Su aplicación debe declarar todos sus componentes en este archivo, que debe estar en la raíz del directorio del proyecto de aplicación.

El manifiesto hace una serie de cosas, además de declarar los componentes de la aplicación, tales como:

  • Identificar los permisos de usuario de la aplicación requiere, tales como acceso a Internet o acceso de lectura a los contactos del usuario.
  • Declarar el mínimo nivel de la API necesaria para la aplicación, sobre la base de que la aplicación utiliza las API.
  • Declarar las características de hardware y software utilizado o requerido por la aplicación, tales como una cámara, los servicios de bluetooth, o una pantalla multitouch.
  • API bibliotecas de la aplicación debe estar vinculada en contra (que no sea la API de Android marco), como la biblioteca de Google Maps .
  • Y más
La declaración de los componentes

La tarea principal del manifiesto es informar al sistema acerca de los componentes de la aplicación. Por ejemplo, un archivo de manifiesto se puede declarar una actividad de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:icon="@drawable/app_icon.png" ... >
        <activity android:name="com.example.project.ExampleActivity"
                  android:label="@string/example_label" ... >
        </activity>
        ...
    </application>
</manifest>
En el <application> elemento, el androide: icono de puntos de atributos a los recursos de un icono que identifica la aplicación.

En el <activity> elemento, el androide: el nombre de atributo especifica el nombre de clase completo de la actividad de la subclase y el androide: la etiqueta especifica los atributos de una cadena que se utiliza la etiqueta visible para el usuario de la actividad.

Usted debe declarar todos los componentes de la aplicación de esta manera:



  • <activity> elementos para las actividades


  • <service> elementos de los servicios


  • <receiver> elementos para receptores de radiodifusión


  • <provider> elementos para los proveedores de contenido

Actividades, servicios y proveedores de contenido que incluya en su fuente pero no se declara en el manifiesto no son visibles para el sistema y, en consecuencia, no se puede ejecutar. Sin embargo, los receptores de radiodifusión puede ser declarado en el manifiesto o creados de forma dinámica en el código (como BroadcastReceiver objetos) e inscrita en el sistema llamando a registerReceiver () .

Para más información sobre cómo estructurar el archivo de manifiesto para su aplicación, consulte el Archivo de AndroidManifest.xml documentación.

La declaración de las capacidades de los componentes

Como se mencionó anteriormente, en la activación de los componentes , puede utilizar una intención para iniciar las actividades, servicios y receptores de radiodifusión. Puede hacerlo por nombrar explícitamente el componente de destino (con el nombre de la clase de componentes) en el intento. Sin embargo, el poder real de las intenciones radica en el concepto de las acciones de la intención. Con las acciones de la intención, sólo tiene que describir el tipo de acción que desea realizar (y, opcionalmente, los datos sobre la cual desea realizar la acción) y que el sistema pueda encontrar un componente en el dispositivo que puede realizar la acción y empezar a que. Si hay varios componentes que pueden llevar a cabo la acción descrita por el intento, entonces el usuario selecciona cual usar.

La forma en que el sistema identifica los componentes que pueden responder a la intención es comparar la intención de recibir a los filtros de la intención prevista en el archivo de manifiesto de otras aplicaciones en el dispositivo.

Cuando se declara un componente en el manifiesto de su aplicación, si lo desea, puede incluir filtros intención de que declare la capacidad del componente para que pueda responder a las intenciones de otras aplicaciones. Se puede declarar un filtro de intención para el componente mediante la adición de un <intent-filter>elemento como un elemento hijo de la declaración del componente.

Por ejemplo, una aplicación de correo electrónico con una actividad para componer un nuevo correo electrónico podría declarar un filtro de la intención de manifestar su entrada para responder a "enviar" las intenciones (para enviar correo electrónico). Una actividad en su aplicación se puede crear una intención de "enviar" la acción (ACTION_SEND ), que el sistema de partidos a la aplicación de correo electrónico de "enviar" la actividad y lo lanza al llamar a la intención con startActivity () .

Para más información sobre la creación de filtros intención, ver la intención y la intención de filtros de documentos.

La declaración de los requisitos de aplicación

Hay una gran variedad de dispositivos que funcionan con Android, y no todos ellos ofrecen las mismas características y capacidades. Con el fin de impedir que su aplicación se instala en los dispositivos que carecen de las características que necesita su aplicación, es importante que se definan claramente el perfil de los tipos de dispositivos de aplicación es compatible con dispositivo de declarar y los requisitos de software en el archivo de manifiesto. La mayoría de estas declaraciones son sólo informativos y el sistema no los lee, pero los servicios externos, tales como Android Market los lee con el fin de proporcionar filtrado para los usuarios cuando buscan aplicaciones de su dispositivo.

Por ejemplo, si su aplicación requiere una cámara y utiliza las API introducido en Android 2.1 ( Nivel API 7), debe declarar estos como los requisitos en el archivo de manifiesto. De esta forma, los dispositivos que hacen no tiene una cámara y tiene una versión para Android menor de 2,1 no se puede instalar la aplicación desde Android Market.

Sin embargo, también puede declarar que la aplicación utiliza la cámara, pero no requieren la misma. En ese caso, la aplicación debe realizar una comprobación en tiempo de ejecución para determinar si el dispositivo tiene una cámara y desactivar las funciones que utilizan la cámara si no está disponible.

Aquí están algunas de las características de los dispositivos importantes que usted debe tener en cuenta al diseñar y desarrollar su aplicación:



Tamaño de la pantalla y la densidad


Con el fin de clasificar los dispositivos de su tipo de pantalla, Android se definen dos características de cada dispositivo: tamaño de la pantalla (las dimensiones físicas de la pantalla) y la densidad de la pantalla (la densidad física de los píxeles en la pantalla, o dpi-puntos por pulgada). Para simplificar todos los diferentes tipos de configuraciones de pantalla, el sistema Android que se generaliza en grupos selectos que sean más fáciles de destino.

Los tamaños de pantalla son: pequeñas y grandes, normal, grande y extra grande.
La densidad de la pantalla son: baja densidad, de densidad media, alta densidad y alta densidad extra.


Por defecto, su aplicación es compatible con todos los tamaños de pantalla y densidades, ya que el sistema Android hace los ajustes necesarios al diseño de interfaz de usuario y los recursos de la imagen. Sin embargo, usted debe crear diseños especializados para ciertos tamaños de pantalla y proporcionan imágenes especializados para ciertas densidades, utilizando fuentes alternativas de diseño, y declarando en su manifiesto exactamente qué tamaños de pantalla de su aplicación es compatible con la <supports-screens> elemento.

Para más información, consulte el apoyo de varias pantallas documento.



Configuraciones de entrada


Muchos dispositivos proporcionan un tipo diferente de mecanismo de entrada del usuario, tales como un teclado físico, trackball, o un cojín de navegación de cinco direcciones. Si su aplicación requiere un determinado tipo de hardware de entrada, entonces usted debe declararlo en su manifiesto con la <uses-configuration> elemento. Sin embargo, es raro que una aplicación debe requerir una configuración de entrada determinado.


Las características del dispositivo


Hay muchos equipos y software que pueden o no pueden existir en un determinado dispositivo con Android, tales como una cámara, un sensor de luz, bluetooth, una cierta versión de OpenGL, o la fidelidad de la pantalla táctil. Usted nunca debe asumir que una determinada característica está disponible en todos los dispositivos con Android (que no sea la disponibilidad de la biblioteca estándar de Android), por lo que debe declarar cualquiera de las funciones que utiliza la aplicación con la <uses-feature> elemento.


Plataforma de la versión


Diferentes con Android a menudo ejecutar diferentes versiones de la plataforma Android, como el Android 1.6 o Android 2.3. Cada versión sucesiva a menudo incluye APIs adicionales no disponibles en la versión anterior. Con el fin de indicar qué conjunto de APIs están disponibles, cada versión de la plataforma especifica un nivel de API (por ejemplo, Android 1.0 es el Nivel 1 del API y Android 2.3 es el nivel API 9). Si utiliza las API que se han añadido a la plataforma con la versión 1.0, debe declarar el nivel de API mínima a la que se introdujeron las API que utilizan los <uses-sdk> elemento.

Es importante que declare todos los requisitos para su aplicación, ya que, al distribuir la aplicación en Android Market, el mercado utiliza estas declaraciones para filtrar qué aplicaciones están disponibles en cada dispositivo. Como tal, su aplicación debe estar disponible sólo para dispositivos que cumplen con todos los requisitos de su aplicación.

Para obtener más información acerca de cómo Android filtros de mercado de las aplicaciones sobre la base de estos requisitos (y otros), ver el mercado de filtros de documentos.

Recursos de aplicación


Una aplicación Android se compone de algo más que código que requiere de recursos que están separados desde el código fuente, como imágenes, archivos de audio, y cualquier cosa relacionada con la presentación visual de la aplicación. Por ejemplo, debe definir las animaciones, menús, estilos, colores y el diseño de interfaces de usuario con la actividad de los archivos XML. Utilizando recursos de la aplicación hace que sea fácil de actualizar varias características de su aplicación sin modificar código y mediante la provisión de sistemas de recursos alternativos, le permite optimizar la aplicación para una variedad de configuraciones de los dispositivos (tales como los diferentes idiomas y tamaños de pantalla).

Para todos los recursos que incluya en su proyecto Android, las herramientas del SDK construir definir un ID único entero, que se puede utilizar para hacer referencia al recurso de su código de aplicación o de otros recursos definidos en XML. Por ejemplo, si la aplicación contiene una imagen llamada logo.png (salvo en el res / dibujable / directorio), las herramientas del SDK genera un ID de recursos denominado R.drawable.logo , que se puede utilizar para hacer referencia a la imagen e insertarla en la interfaz de usuario.

Uno de los aspectos más importantes de la provisión de recursos aparte de su código fuente es la capacidad para que usted pueda proporcionar recursos alternativos para las configuraciones de dispositivo diferente. Por ejemplo, mediante la definición de cadenas de la interfaz de usuario en XML, se puede traducir las cadenas a otros idiomas y salvar esas cadenas en archivos separados. Entonces, basado en un lenguaje de clasificación que se anexan al nombre del directorio de recursos (como res / valores fr-/ para valores de la cadena francesa) y el ajuste de idioma del usuario, el sistema Android aplica las cadenas de un lenguaje apropiado para la interfaz de usuario.

Android es compatible con muchos diferentes calificadores de los recursos alternativos. El calificador es una cadena corta que se incluye en el nombre de los directorios de sus recursos a fin de definir la configuración del dispositivo para que esos recursos deben ser utilizados. Como otro ejemplo, a menudo se deben crear diferentes diseños para sus actividades, dependiendo de la orientación de la pantalla del dispositivo y el tamaño. Por ejemplo, cuando la pantalla del dispositivo es en orientación vertical (altura), es posible que desee un diseño con botones para ser vertical, pero cuando la pantalla está en horizontal (ancho), los botones deben estar alineados horizontalmente. Para cambiar el diseño en función de la orientación, se pueden definir dos diseños diferentes y aplicar el calificativo apropiado para nombrar el directorio de cada diseño. Entonces, el sistema aplica automáticamente el diseño adecuado en función de la orientación del dispositivo actual.

Para más información sobre los diferentes tipos de recursos que se pueden incluir en su aplicación y la forma de crear recursos alternativos para diferentes configuraciones de los dispositivos, consulte la Aplicación de Recursos guía para desarrolladores.

 

Fuente: http://developer.android.com/guide/topics/fundamentals.html



Entendiendo Android. ¿Que es Android?

¿Qué es Android?

Android es una pila de software para dispositivos móviles que incluye las aplicaciones de un sistema operativo, middleware y clave.

El SDK de Android proporciona las herramientas y los APIs necesarios para comenzar a desarrollar aplicaciones en la plataforma Android usando el lenguaje de programación Java.

 

Características

  • Marco de la aplicación permitiendo la reutilización y sustitución de componentes
  • Dalvik máquina virtual optimizada para dispositivos móviles
  • Navegador integrado basado en el código abierto WebKit motor
  • Gráficos optimizados impulsado por una costumbre de la biblioteca de gráficos 2D, gráficos 3D basado en la especificación OpenGL ES 1.0 (aceleración de hardware opcional)
  • SQLite para el almacenamiento de datos estructurados
  • Apoyo a los medios de audio comunes, videos y formatos de imagen (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  • Telefonía GSM (dependiente del hardware)
  • Bluetooth, EDGE, 3G y WiFi (dependiente del hardware)
  • Cámara, GPS, brújula y el acelerómetro (dependiente del hardware)
  • Entorno de desarrollo incluyendo un emulador de dispositivo, herramientas para la depuración, la memoria y de perfiles de rendimiento, y un plugin para el IDE de Eclipse

Android Arquitectura

El siguiente diagrama muestra los componentes principales del sistema operativo Android. Cada sección se describe con más detalle a continuación.

Arquitectura del sistema Android

Aplicaciones

Android se venderá con un conjunto de aplicaciones básicas, como un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos, y otros.Todas las aplicaciones se escriben usando el lenguaje de programación Java.

Applicación Framework

Al proporcionar una plataforma de desarrollo abierto, Android ofrece a los desarrolladores la capacidad de crear aplicaciones muy ricas e innovadoras. Los desarrolladores son libres para tomar ventaja del hardware del dispositivo, información de acceso a la ubicación, ejecutar servicios en segundo plano, configurar alarmas, añadir las notificaciones de la barra de estado, y mucho, mucho más.

Los desarrolladores tienen acceso completo a la API, de un mismo marco utilizado por las aplicaciones básicas. La arquitectura de la aplicación está diseñada para simplificar la reutilización de componentes, y cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación podrá entonces hacer uso de esas capacidades (sujeto a restricciones de seguridad impuestas por el marco). Este mismo mecanismo permite que los componentes se sustituye por el usuario.

Detrás de todas las aplicaciones es un conjunto de servicios y sistemas, incluyendo:

  • Un amplio conjunto y extensible de Visitas que se pueden utilizar para construir una aplicación, incluyendo listas, rejillas, cajas de texto, botones, e incluso un navegador web integrable
  • Los proveedores de contenido que permiten a las aplicaciones acceder a datos de otras aplicaciones (por ejemplo, contactos), o para compartir sus propios datos
  • A Resource Manager , que proporciona acceso a los recursos no son de código tales como cadenas localizadas, gráficos y archivos de diseño
  • Un Administrador de notificaciones que permite a todas las aplicaciones para mostrar alertas personalizadas en la barra de estado
  • Un gestor de actividad que gestiona el ciclo de vida de las aplicaciones y proporciona una navegación común backstack

Para más detalles y un tutorial de una aplicación, consulte el tutorial de Bloc de notas .

Bibliotecas

Android incluye un conjunto de C / C + + librerías utilizadas por los diversos componentes del sistema Android. Estas capacidades están expuestos a los desarrolladores a través del framework de aplicaciones Android. Algunas de las bibliotecas del núcleo son los siguientes:

  • System C library - una implementación derivados de BSD de la biblioteca del sistema estándar de C (libc), en sintonía para Linux embebido basado en los dispositivos
  • Media Libraries - sobre la base de OpenCORE PacketVideo, la reproducción de apoyo a las bibliotecas y la grabación de muchas de audio y formatos de vídeo populares, así como archivos de imágenes estáticas, incluyendo MPEG4, H.264, MP3, AAC, AMR, JPG y PNG
  • Surface Manager - administra el acceso al subsistema de pantalla y sin problemas en 2D y 3D compuestos capas gráficas de múltiples aplicaciones
  • LibWebCore - un motor de navegador web moderno que alimenta tanto el navegador de Android y una vista web embebido
  • SGL - el motor de base de gráficos 2D
  • Librerías 3D - una implementación basada en OpenGL ES 1.0 API, las bibliotecas utilizar aceleración 3D por hardware (donde esté disponible) o la incluyen, rasterizador altamente optimizada de software 3D
  • FreeType - mapa de bits y representación de la fuente de vectores
  • SQLite - un motor de base de datos relacional potente y ligera disponible para todas las aplicaciones
  •  

Android Runtime

Android incluye un conjunto de bibliotecas básicas que proporciona la mayor parte de la funcionalidad disponible en las bibliotecas del núcleo del lenguaje de programación Java.

Cada aplicación Android se ejecuta en su propio proceso, con su propia instancia de la máquina virtual de Dalvik. Dalvik ha sido escrito para que un dispositivo puede ejecutar varias máquinas virtuales de manera eficiente. La máquina virtual Dalvik ejecuta archivos ejecutables en el Dalvik (. Dex) el formato que está optimizado para memoria mínima. El VM es basado en registros, y corre clases compiladas por un compilador del lenguaje Java que se han convertido en el formato. Dex por la incluyó "dx" de la herramienta.

La máquina virtual Dalvik se basa en el kernel de Linux para la funcionalidad subyacente, como la gestión de memoria threading y de bajo nivel.

Linux Kernel

Android se basa en la versión 2.6 de Linux para los servicios del núcleo del sistema como la seguridad, la gestión de memoria, gestión de procesos, la pila de red, y el modelo de controlador. El núcleo también actúa como una capa de abstracción entre el hardware y el resto de la pila de software.