Ringer mode change listener Broadcast receiver?

后端 未结 3 597
生来不讨喜
生来不讨喜 2020-12-03 00:16
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

switch (am.getRingerMode()) {
    case AudioManager.RINGER_MODE_SILENT:
        Log.i(\"MyA         


        
相关标签:
3条回答
  • 2020-12-03 00:35

    Use the following code inside the onCreate() method of your Activity or Service that you want to process the broadcast:

          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);
    
    0 讨论(0)
  • Here's an update version in Kotlin. Place this under your onCreate() lifecycle.

    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))
    
    0 讨论(0)
  • 2020-12-03 00:53

    Another solution is to add a receiver with an action in Manifest:

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

    and your class RingerModeStateChangeReceiver should extend BroadcastReceiver.

    0 讨论(0)
提交回复
热议问题