AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

switch (am.getRingerMode()) {
    case AudioManager.RINGER_MODE_SILENT:
        Log.i("MyApp","Silent mode");
    break;

    case AudioManager.RINGER_MODE_VIBRATE:
        Log.i("MyApp","Vibrate mode");
    break;

    case AudioManager.RINGER_MODE_NORMAL:
        Log.i("MyApp","Normal mode");
    break;
}

Desde el código anterior puedo conseguir el timbre modo. Lo que me gustaría liek a hacer es escuchar el timbre de cambio de modo y llamar a una función.

Lo que me han dicho es que no se puede registrar el AudioManager. RINGER_MODE_CHANGED_ACTION y escuchar el cambio de intención en broadcastreceiver método onReceive. Suena claro. Pero soy nuevo en android y realmente no sé cómo escribirlo. Es allí cualquier persona puede escribir un fragmento de código y mostrar cómo exactamente funciona en lugar de decir que el uso de este o que 🙂 Gracias

OriginalEl autor akd | 2011-09-20

3 Comentarios

  1. 16

    Utilice el siguiente código dentro de la onCreate() método de su Activity o Service que desea proceso de la emisión:

          BroadcastReceiver receiver=new BroadcastReceiver(){
              @Override
              public void onReceive(Context context, Intent intent) {
                   //code...
              }
          };
          IntentFilter filter=new IntentFilter(
                          AudioManager.RINGER_MODE_CHANGED_ACTION);
          registerReceiver(receiver,filter);
    Muchas gracias. esa es la respuesta. Pero me da lo trabajado en la Actividad, pero no pude conseguir que se trabajó en una clase de Servicio. Si usted puede dar un ejemplo de trabajo en el servicio. que sería genial también. Muchas gracias de nuevo.
    lo que no funcionó en el interior del servicio?
    No estoy seguro en realidad. Cuando puse el código que se envía en el interior de método onCreate de la actividad y dentro de onReceive me puede enviar datos al servidor mediante una llamada a un método. Sin embargo, Cuando puse el código dentro de la clase de Servicio’ método onCreate. y correr no puedo ver nada en el servidor. Tengo registrado el servicio en archivo de manifiesto así. Básicamente, Lo que me gustaría hacer es que aunque la aplicación es asesinado será capaz de escuchar el timbre en el modo y envía los datos al servidor. Creo que shuldnt lugar en una actividad, si yo quiero escuchar todo el tiempo. es ese derecho?
    sí. ha comenzado el servicio?
    en realidad no.. yo esperaba que se ejecute cuando se ejecute la aplicación. Tienes razón no strat. Yo uso este startService(new Intent(this, MyService.class)); en mi mainactivity y funciona perfecto. es allí una manera de ejecutar el servicio con el arranque de inicio del teléfono?

    OriginalEl autor Ovidiu Latcu

  2. 13

    Otra solución es añadir un receptor con una acción en un Manifiesto:

    <receiver android:name=".receivers.RingerModeStateChangeReceiver" >
        <intent-filter>
            <action android:name="android.media.RINGER_MODE_CHANGED" />
        </intent-filter>
    </receiver>

    y su clase RingerModeStateChangeReceiver debe extenderse BroadcastReceiver.

    gran respuesta , gracias

    OriginalEl autor wlk

  3. 0

    Aquí está una actualización de la versión en Kotlin. El lugar esta bajo su onCreate() ciclo de vida.

    this.activity?.registerReceiver(object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                if (intent.action == AudioManager.RINGER_MODE_CHANGED_ACTION) {
                    //Set Player Volume
                }
            }
        }, IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION))

    OriginalEl autor Delacrix Morgan

Dejar respuesta

Please enter your comment!
Please enter your name here