=== modified file 'src/core/media/service_implementation.cpp'
--- src/core/media/service_implementation.cpp	2015-03-31 20:38:11 +0000
+++ src/core/media/service_implementation.cpp	2015-03-31 21:23:21 +0000
@@ -35,6 +35,7 @@
 #include <map>
 #include <memory>
 #include <thread>
+#include <utility>
 
 #include <pulse/pulseaudio.h>
 
@@ -478,7 +479,9 @@
     // begins.
     core::Signal<void> pause_playback;
     std::unique_ptr<CallMonitor> call_monitor;
-    std::list<media::Player::PlayerKey> paused_sessions;
+    // Holds a pair of a Player key denoting what player to resume playback, and a bool
+    // for if it should be resumed after a phone call is hung up
+    std::list<std::pair<media::Player::PlayerKey, bool>> paused_sessions;
 };
 
 media::ServiceImplementation::ServiceImplementation() : d(new Private())
@@ -488,7 +491,9 @@
         // When the battery level hits 10% or 5%, pause all multimedia sessions.
         // Playback will resume when the user clears the presented notification.
         if (level == "low" || level == "very_low")
-            pause_all_multimedia_sessions();
+            // Whatever player session is currently playing, make sure it is NOT resumed after
+            // a phonecall is hung up
+            pause_all_multimedia_sessions(false);
     });
 
     d->is_warning->changed().connect([this](const core::IndicatorPower::IsWarning::ValueType &notifying)
@@ -502,14 +507,18 @@
     d->pause_playback.connect([this]()
     {
         std::cout << "Got pause_playback signal, pausing all multimedia sessions" << std::endl;
-        pause_all_multimedia_sessions();
+        // Whatever player session is currently playing, make sure it is NOT resumed after
+        // a phonecall is hung up
+        pause_all_multimedia_sessions(false);
     });
 
     d->call_monitor->on_change([this](CallMonitor::State state) {
         switch (state) {
         case CallMonitor::OffHook:
             std::cout << "Got call started signal, pausing all multimedia sessions" << std::endl;
-            pause_all_multimedia_sessions();
+            // Whatever player session is currently playing, make sure it gets resumed after
+            // a phonecall is hung up
+            pause_all_multimedia_sessions(true);
             break;
         case CallMonitor::OnHook:
             std::cout << "Got call ended signal, resuming paused multimedia sessions" << std::endl;
@@ -579,14 +588,15 @@
     });
 }
 
-void media::ServiceImplementation::pause_all_multimedia_sessions()
+void media::ServiceImplementation::pause_all_multimedia_sessions(bool resume_play_after_phonecall)
 {
-    enumerate_players([this](const media::Player::PlayerKey& key, const std::shared_ptr<media::Player>& player)
+    enumerate_players([this, resume_play_after_phonecall](const media::Player::PlayerKey& key, const std::shared_ptr<media::Player>& player)
                       {
                           if (player->playback_status() == Player::playing
                               && player->audio_stream_role() == media::Player::multimedia)
                           {
-                              d->paused_sessions.push_back(key);
+                              auto paused_player_pair = std::make_pair(key, resume_play_after_phonecall);
+                              d->paused_sessions.push_back(paused_player_pair);
                               std::cout << "Pausing Player with key: " << key << std::endl;
                               player->pause();
                           }
@@ -595,13 +605,16 @@
 
 void media::ServiceImplementation::resume_paused_multimedia_sessions(bool resume_video_sessions)
 {
-    std::for_each(d->paused_sessions.begin(), d->paused_sessions.end(), [this, resume_video_sessions](const media::Player::PlayerKey& key) {
+    std::for_each(d->paused_sessions.begin(), d->paused_sessions.end(),
+        [this, resume_video_sessions](const std::pair<media::Player::PlayerKey, bool> &paused_player_pair) {
+            const media::Player::PlayerKey key = paused_player_pair.first;
+            const bool resume_play_after_phonecall = paused_player_pair.second;
             auto player = player_for_key(key);
             // Only resume video playback if explicitly desired
-            if (resume_video_sessions || player->is_audio_source())
+            if ((resume_video_sessions || player->is_audio_source()) && resume_play_after_phonecall)
                 player->play();
             else
-                std::cout << "Not auto-resuming video playback session." << std::endl;
+                std::cout << "Not auto-resuming video player session or other type of player session." << std::endl;
         });
 
     d->paused_sessions.clear();

=== modified file 'src/core/media/service_implementation.h'
--- src/core/media/service_implementation.h	2015-03-31 20:38:11 +0000
+++ src/core/media/service_implementation.h	2015-03-31 21:23:21 +0000
@@ -41,7 +41,7 @@
     void pause_other_sessions(Player::PlayerKey key);
 
 private:
-    void pause_all_multimedia_sessions();
+    void pause_all_multimedia_sessions(bool resume_play_after_phonecall);
     void resume_paused_multimedia_sessions(bool resume_video_sessions = true);
     void resume_multimedia_session();
 

