2011-05-12 16 views
6

Estoy tratando de desarrollar una aplicación de Android que muestra la intensidad de la señal de varios operadores de red en un mapa. El problema es que la única forma de cambiar el operador de red es haciéndolo a mano.Cambiar el operador de red con una aplicación de Android

¿Alguna idea sobre cómo puedo obtener esta información sin cambiarla manualmente? Creo que hay clases de Android internas/privadas para hacer esto.

Respuesta

1

Deberá utilizar una o más de las API internas de Google para hacer esto. No están, por defecto, disponibles para las aplicaciones de Android por varias razones (generalmente buenas). La API para activar y desactivar el tethering y configurarlo, por ejemplo, no es una API pública y no puede invocarse directamente por aplicaciones de terceros.

Tendrá que hacer dos cosas. Primero, descargue el código fuente de Android y encuentre la (s) API (s) que necesita para listar y cambiar de operador. Puede encontrar el código fuente de Android e instrucciones de descarga, here.

En segundo lugar, deberá usar la reflexión para invocar los métodos en esas API. El mejor enfoque para esto, y uno que utilicé para jugar con la API de tethering, es escribir una clase de proxy. Dale todos los mismos métodos que la API que deseas usar, y dentro de cada método usa la reflexión para invocar el método API. Cualquier otra técnica: (a) no compilará sin agregar partes del código fuente de Android a su ruta de clases y luego (b) se compilará pero explotará cuando implemente.

Tenga en cuenta que es mejor hacerlo en un dispositivo con la marca Nexus, ya que tiene el código Android de vanilla. Mi (exitoso) intento de escribir un widget de pantalla de inicio para activar y desactivar el anclaje funcionó en un Nexus One pero no funcionó en un Samsung Galaxy Tab P1000. El dispositivo admitía el anclaje a red, pero Samsung había modificado esa parte del sistema operativo como parte de su esfuerzo de migración.

Cuestiones relacionadas