Merge "Implement the new requestNetworkScan API with current modem API."
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();