diff --git a/testapps/EmbmsServiceTestApp/Android.mk b/testapps/EmbmsServiceTestApp/Android.mk
index 4dc522c..874fad2 100644
--- a/testapps/EmbmsServiceTestApp/Android.mk
+++ b/testapps/EmbmsServiceTestApp/Android.mk
@@ -15,5 +15,6 @@
 LOCAL_PRIVILEGED_MODULE := true
 # Change the following to "debug" to build the EmbmsTestService into the userdebug build.
 LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_TAGS := debug
 
 include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
index 35d18e9..6a0f61e 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
@@ -22,6 +22,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Random;
 
 // Tracks the states of the streams for a single (uid, appName, subscriptionId) tuple
 public class AppActiveStreams {
@@ -29,10 +30,13 @@
     private static class StreamCallbackWithState {
         private final IStreamingServiceCallback mCallback;
         private int mState;
+        private int mMethod;
+        private boolean mMethodSet = false;
 
-        public StreamCallbackWithState(IStreamingServiceCallback callback, int state) {
+        StreamCallbackWithState(IStreamingServiceCallback callback, int state, int method) {
             mCallback = callback;
             mState = state;
+            mMethod = method;
         }
 
         public IStreamingServiceCallback getCallback() {
@@ -46,11 +50,25 @@
         public void setState(int state) {
             mState = state;
         }
+
+        public int getMethod() {
+            return mMethod;
+        }
+
+        public void setMethod(int method) {
+            mMethod = method;
+            mMethodSet = true;
+        }
+
+        public boolean isMethodSet() {
+            return mMethodSet;
+        }
     }
 
     // Stores the state and callback per service ID.
     private final Map<String, StreamCallbackWithState> mStreamStates = new HashMap<>();
     private final StreamingAppIdentifier mAppIdentifier;
+    private final Random mRand = new Random();
 
     public AppActiveStreams(StreamingAppIdentifier appIdentifier) {
         mAppIdentifier = appIdentifier;
@@ -63,10 +81,22 @@
     }
 
     public void startStreaming(String serviceId, IStreamingServiceCallback callback) {
+        if (mStreamStates.get(serviceId) != null) {
+            // error - already started
+            return;
+        }
+        for (StreamCallbackWithState c : mStreamStates.values()) {
+            if (c.getCallback() == callback) {
+                // error - callback already in use
+                return;
+            }
+        }
         mStreamStates.put(serviceId,
-                new StreamCallbackWithState(callback, StreamingService.STATE_STARTED));
+                new StreamCallbackWithState(callback, StreamingService.STATE_STARTED,
+                        StreamingService.UNICAST_METHOD));
         try {
-            callback.streamStateChanged(StreamingService.STATE_STARTED);
+            callback.streamStateUpdated(StreamingService.STATE_STARTED);
+            updateStreamingMethod(serviceId);
         } catch (RemoteException e) {
             dispose(serviceId);
         }
@@ -79,7 +109,7 @@
             try {
                 if (entry.getState() != StreamingService.STATE_STOPPED) {
                     entry.setState(StreamingService.STATE_STOPPED);
-                    entry.getCallback().streamStateChanged(StreamingService.STATE_STOPPED);
+                    entry.getCallback().streamStateUpdated(StreamingService.STATE_STOPPED);
                 }
             } catch (RemoteException e) {
                 dispose(serviceId);
@@ -90,4 +120,25 @@
     public void dispose(String serviceId) {
         mStreamStates.remove(serviceId);
     }
+
+    private void updateStreamingMethod(String serviceId) {
+        StreamCallbackWithState callbackWithState = mStreamStates.get(serviceId);
+        if (callbackWithState != null) {
+            int oldMethod = callbackWithState.getMethod();
+            int newMethod = oldMethod;
+            if (mRand.nextInt(99) < 50) {
+                newMethod = StreamingService.UNICAST_METHOD;
+            } else {
+                newMethod = StreamingService.BROADCAST_METHOD;
+            }
+            if (newMethod != oldMethod || callbackWithState.isMethodSet()) {
+                callbackWithState.setMethod(newMethod);
+                try {
+                    callbackWithState.getCallback().streamMethodUpdated(newMethod);
+                } catch (RemoteException e) {
+                    dispose(serviceId);
+                }
+            }
+        }
+    }
 }
diff --git a/testapps/EmbmsTestStreamingApp/Android.mk b/testapps/EmbmsTestStreamingApp/Android.mk
index 2700522..45826b9 100644
--- a/testapps/EmbmsTestStreamingApp/Android.mk
+++ b/testapps/EmbmsTestStreamingApp/Android.mk
@@ -13,5 +13,6 @@
 
 LOCAL_CERTIFICATE := platform
 LOCAL_MODULE_TAGS := tests
+#LOCAL_MODULE_TAGS := debug
 
 include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
index c1cc539..b75a157 100644
--- a/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
+++ b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
@@ -30,6 +30,10 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
     <TextView
+        android:id="@+id/curr_streaming_method"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+    <TextView
         android:id="@+id/tracked_streams_label"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
index aa4a15b..00e76c1 100644
--- a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
@@ -25,6 +25,7 @@
 import android.telephony.MbmsStreamingManager;
 import android.telephony.mbms.MbmsException;
 import android.telephony.mbms.MbmsStreamingManagerCallback;
+import android.telephony.mbms.StreamingService;
 import android.telephony.mbms.StreamingServiceInfo;
 import android.view.View;
 import android.view.ViewGroup;
@@ -295,9 +296,28 @@
         });
     }
 
+    private void setStreamMethodDisplay(int method) {
+        runOnUiThread(() -> {
+            String methodString = "UNKNOWN METHOD";
+            switch (method) {
+                case StreamingService.BROADCAST_METHOD: {
+                    methodString = "BROADCAST";
+                    break;
+                }
+                case StreamingService.UNICAST_METHOD: {
+                    methodString = "UNICAST";
+                    break;
+                }
+            }
+            TextView methodField = (TextView) findViewById(R.id.curr_streaming_method);
+            methodField.setText(methodString);
+        });
+    }
+
     private void clearStateAndUriDisplay() {
         setUriDisplay(Uri.EMPTY);
         setStreamStateDisplay("");
+        setStreamMethodDisplay(StreamingService.UNICAST_METHOD);
     }
 
     public void updateUri() {
@@ -311,4 +331,14 @@
             "" : String.valueOf(getSelectedTrackedStream().getState());
         setStreamStateDisplay(stateString);
     }
+
+    /** implementation of updateMethod callback */
+    public void updateMethod() {
+        StreamingServiceTracker serviceTracker = getSelectedTrackedStream();
+        if (serviceTracker == null) {
+            setStreamMethodDisplay(StreamingService.UNICAST_METHOD);
+        } else {
+            setStreamMethodDisplay(serviceTracker.getMethod());
+        }
+    }
 }
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
index c0b12cb..9ca4476 100644
--- a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
@@ -34,8 +34,13 @@
         }
 
         @Override
-        public void streamStateChanged(int state) {
-            onStreamStateChanged(state);
+        public void streamStateUpdated(int state) {
+            onStreamStateUpdated(state);
+        }
+
+        @Override
+        public void streamMethodUpdated(int method) {
+            onStreamMethodUpdated(method);
         }
     }
 
@@ -45,6 +50,7 @@
 
     private int mState = StreamingService.STATE_STOPPED;
     private Uri mStreamingUri = Uri.EMPTY;
+    private int mMethod = StreamingService.UNICAST_METHOD;
 
     public StreamingServiceTracker(EmbmsTestStreamingApp appActivity, StreamingServiceInfo info) {
         mActivity = appActivity;
@@ -96,7 +102,11 @@
         return mStreamingUri;
     }
 
-    private void onStreamStateChanged(int state) {
+    public int getMethod() {
+        return mMethod;
+    }
+
+    private void onStreamStateUpdated(int state) {
         if (state == StreamingService.STATE_STARTED && mState != StreamingService.STATE_STARTED) {
             try {
                 mStreamingUri = mStreamingService.getPlaybackUri();
@@ -111,6 +121,13 @@
         mActivity.updateStreamingState();
     }
 
+    private void onStreamMethodUpdated(int method) {
+        if (mMethod != method) {
+            mMethod = method;
+            mActivity.updateMethod();
+        }
+    }
+
     @Override
     public String toString() {
         return "Tracked service with ID " + getServiceId();
