2011-03-09 26 views
6

Estoy escribiendo una suite de software para dispositivos Android que hará un seguimiento de los tiempos de llamada y otra información de llamada. Me gustaría que una de las aplicaciones se ejecute como un Servicio sin haber sido iniciada desde una Actividad, y me gustaría inicializarla inmediatamente cuando el teléfono arranque, y seguir funcionando constantemente, escuchando llamadas telefónicas, registrando información en una base de datos como necesario. El Servicio deberá presentar un diálogo al usuario al final de cada llamada.Aplicación de servicio de Android

2 preguntas:

  1. ¿Cómo consigo el programa (Servicio) para inicializar en el arranque de forma automática sin ningún ajuste del usuario o la interacción requerida?

  2. Tenía la impresión de que no puede crear instancias ni mostrar cuadros de diálogo sin utilizar una Actividad. Me gustaría que los diálogos aparezcan sobre lo que el usuario tenga actualmente en la pantalla, y mostrar un cuadro de diálogo. ¿Hay alguna manera de hacer que una Actividad sea completamente transparente con respecto a la Actividad actual o hay una forma de mostrar los diálogos desde un Servicio?

gracias de antemano.

Respuesta

10

¿Cómo consigo el programa (Servicio) para inicializar en el arranque de forma automática sin ningún ajuste del usuario o la interacción requerida?

Añadir este permiso a su manifiesta:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

continuación, agregar un receptor a su manifiesta:

<receiver android:name="your.package.BootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.HOME" /> 
    </intent-filter> 
</receiver> 

Crear un receptor en código Java:

public class BootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // start the service from here 
    } 
} 

Tenía la impresión de que no puede crear instancias y mostrar diálogos sin utilizar una Actividad. Me gustaría que los diálogos aparezcan sobre lo que el usuario tenga actualmente en la pantalla, y mostrar un cuadro de diálogo. ¿Hay alguna manera de hacer que una Actividad sea completamente transparente con respecto a la Actividad actual o hay una forma de mostrar los diálogos desde un Servicio?

Sí, eso es cierto. Tienes que tener una actividad que aparezca el diálogo. Para crear una actividad transparente añadir el siguiente estilo en su archivo res/values/styles.xml Aquí hay un archivo completo (si no tiene uno, créelo.):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.Transparent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">#00000000</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

luego aplicar el estilo a su actividad, por ejemplo:

<activity android:name=".TransparentActivity" android:theme="@style/Theme.Transparent"> 
... 
</activity> 
Cuestiones relacionadas