I have implemented an activity that plays media from a URL in Android.
In order to add pause functionality when a call is incoming I created a receiver that sets a variable when the call is coming. The activity reads this variable in onPause(), pauses the music and resets it. When the call is done and the activity is resumed, the music is resumed in onResume().
This works fine as long the activity has the focus. If I go back to home screen while the music is playing, and then the call comes, onPause() is not called. Hence, I can’t stop and start the music.
Has anybody implemented a media player that intercepts incoming/outgoing calls and stops/starts music correctly?
There are a few things you can do:
First of all, you can listen for changes in the call state using a
PhoneStateListener.You can register the listener in the TelephonyManager:
Remember to unregister the listener when it’s no longer needed using the
PhoneStateListener.LISTEN_NONE:For more information read the documentation.
Another thing you can do is listening for the broadcast
android.intent.action.PHONE_STATE. It will contain the extraTelephonyManager.EXTRA_STATEwhich will give you information about the call. Take a look at the documentation here.Please note that you’ll need the
android.permission.READ_PHONE_STATE-permission in both cases.