Merge "Address the API review comments."

This commit is contained in:
Treehugger Robot
2018-03-07 17:40:20 +00:00
committed by Gerrit Code Review
6 changed files with 86 additions and 30 deletions

View File

@@ -39952,11 +39952,9 @@ package android.telecom {
package android.telephony {
public final class AccessNetworkConstants {
ctor public AccessNetworkConstants();
}
public static final class AccessNetworkConstants.AccessNetworkType {
ctor public AccessNetworkConstants.AccessNetworkType();
field public static final int CDMA2000 = 4; // 0x4
field public static final int EUTRAN = 3; // 0x3
field public static final int GERAN = 1; // 0x1
@@ -39966,7 +39964,6 @@ package android.telephony {
}
public static final class AccessNetworkConstants.EutranBand {
ctor public AccessNetworkConstants.EutranBand();
field public static final int BAND_1 = 1; // 0x1
field public static final int BAND_10 = 10; // 0xa
field public static final int BAND_11 = 11; // 0xb
@@ -40018,7 +40015,6 @@ package android.telephony {
}
public static final class AccessNetworkConstants.GeranBand {
ctor public AccessNetworkConstants.GeranBand();
field public static final int BAND_450 = 3; // 0x3
field public static final int BAND_480 = 4; // 0x4
field public static final int BAND_710 = 5; // 0x5
@@ -40036,7 +40032,6 @@ package android.telephony {
}
public static final class AccessNetworkConstants.UtranBand {
ctor public AccessNetworkConstants.UtranBand();
field public static final int BAND_1 = 1; // 0x1
field public static final int BAND_10 = 10; // 0xa
field public static final int BAND_11 = 11; // 0xb
@@ -40473,7 +40468,8 @@ package android.telephony {
}
public class NetworkScan {
method public void stop() throws android.os.RemoteException;
method public deprecated void stop() throws android.os.RemoteException;
method public void stopScan();
field public static final int ERROR_INTERRUPTED = 10002; // 0x2712
field public static final int ERROR_INVALID_SCAN = 2; // 0x2
field public static final int ERROR_INVALID_SCANID = 10001; // 0x2711
@@ -40897,7 +40893,8 @@ package android.telephony {
method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
method public boolean isWorldPhone();
method public void listen(android.telephony.PhoneStateListener, int);
method public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, android.telephony.TelephonyScanManager.NetworkScanCallback);
method public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
method public deprecated android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, android.telephony.TelephonyScanManager.NetworkScanCallback);
method public void sendDialerSpecialCode(java.lang.String);
method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);

View File

@@ -4111,7 +4111,6 @@ package android.telecom {
package android.telephony {
public static final class AccessNetworkConstants.TransportType {
ctor public AccessNetworkConstants.TransportType();
field public static final int WLAN = 2; // 0x2
field public static final int WWAN = 1; // 0x1
}

View File

@@ -30,6 +30,9 @@ public final class AccessNetworkConstants {
public static final int EUTRAN = 3;
public static final int CDMA2000 = 4;
public static final int IWLAN = 5;
/** @hide */
private AccessNetworkType() {};
}
/**
@@ -42,6 +45,9 @@ public final class AccessNetworkConstants {
public static final int WWAN = 1;
/** Wireless Local Area Networks (i.e. Wifi) */
public static final int WLAN = 2;
/** @hide */
private TransportType() {};
}
/**
@@ -63,6 +69,9 @@ public final class AccessNetworkConstants {
public static final int BAND_DCS1800 = 12;
public static final int BAND_PCS1900 = 13;
public static final int BAND_ER900 = 14;
/** @hide */
private GeranBand() {};
}
/**
@@ -92,6 +101,9 @@ public final class AccessNetworkConstants {
/** band 23, 24 are reserved */
public static final int BAND_25 = 25;
public static final int BAND_26 = 26;
/** @hide */
private UtranBand() {};
}
/**
@@ -147,6 +159,9 @@ public final class AccessNetworkConstants {
public static final int BAND_66 = 66;
public static final int BAND_68 = 68;
public static final int BAND_70 = 70;
/** @hide */
private EutranBand() {};
}
/**
@@ -179,5 +194,11 @@ public final class AccessNetworkConstants {
public static final int BAND_19 = 20;
public static final int BAND_20 = 21;
public static final int BAND_21 = 22;
/** @hide */
private CdmaBands() {};
}
/** @hide */
private AccessNetworkConstants() {};
}

View File

@@ -29,9 +29,9 @@ import java.lang.annotation.RetentionPolicy;
/**
* The caller of
* {@link TelephonyManager#requestNetworkScan(NetworkScanRequest, NetworkScanCallback)}
* {@link TelephonyManager#requestNetworkScan(NetworkScanRequest, Executor, NetworkScanCallback)}
* will receive an instance of {@link NetworkScan}, which contains a callback method
* {@link #stop()} for stopping the in-progress scan.
* {@link #stopScan()} for stopping the in-progress scan.
*/
public class NetworkScan {
@@ -106,16 +106,26 @@ public class NetworkScan {
* Use this method to stop an ongoing scan. When user requests a new scan, a {@link NetworkScan}
* object will be returned, and the user can stop the scan by calling this method.
*/
public void stop() throws RemoteException {
public void stopScan() {
ITelephony telephony = getITelephony();
if (telephony == null) {
Rlog.e(TAG, "Failed to get the ITelephony instance.");
throw new RuntimeException("Failed to get the ITelephony instance.");
}
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
telephony.stopNetworkScan(mSubId, mScanId);
} else {
throw new RemoteException("Failed to get the ITelephony instance.");
}
telephony.stopNetworkScan(mSubId, mScanId);
} catch (RemoteException ex) {
Rlog.e(TAG, "stopNetworkScan RemoteException", ex);
ex.rethrowAsRuntimeException();
}
}
/** @deprecated Use {@link #stopScan()} */
@Deprecated
public void stop() throws RemoteException {
try {
stopScan();
} catch (RuntimeException ex) {
throw new RemoteException("Failed to stop the network scan with id " + mScanId);
}
}

View File

@@ -34,6 +34,7 @@ import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkStats;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.BatteryStats;
import android.os.Bundle;
import android.os.Handler;
@@ -73,6 +74,7 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -5220,21 +5222,35 @@ public class TelephonyManager {
* <p>
* Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges()
*
* @param request Contains all the RAT with bands/channels that need to be scanned.
* @param executor The executor through which the callback should be invoked.
* @param callback Returns network scan results or errors.
* @return A NetworkScan obj which contains a callback which can be used to stop the scan.
*/
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public NetworkScan requestNetworkScan(
NetworkScanRequest request, TelephonyScanManager.NetworkScanCallback callback) {
NetworkScanRequest request, Executor executor,
TelephonyScanManager.NetworkScanCallback callback) {
synchronized (this) {
if (mTelephonyScanManager == null) {
mTelephonyScanManager = new TelephonyScanManager();
}
}
return mTelephonyScanManager.requestNetworkScan(getSubId(), request, callback);
return mTelephonyScanManager.requestNetworkScan(getSubId(), request, executor, callback);
}
/**
* @deprecated
* Use {@link
* #requestNetworkScan(NetworkScanRequest, Executor, TelephonyScanManager.NetworkScanCallback)}
*/
@Deprecated
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public NetworkScan requestNetworkScan(
NetworkScanRequest request, TelephonyScanManager.NetworkScanCallback callback) {
return requestNetworkScan(request, AsyncTask.THREAD_POOL_EXECUTOR, callback);
}
/**

View File

@@ -33,6 +33,7 @@ import android.util.Log;
import android.util.SparseArray;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
import com.android.internal.telephony.ITelephony;
@@ -55,8 +56,10 @@ public final class TelephonyScanManager {
/**
* The caller of
* {@link TelephonyManager#requestNetworkScan(NetworkScanRequest, NetworkScanCallback)} should
* implement and provide this callback so that the scan results or errors can be returned.
* {@link
* TelephonyManager#requestNetworkScan(NetworkScanRequest, Executor, NetworkScanCallback)}
* should implement and provide this callback so that the scan results or errors can be
* returned.
*/
public static abstract class NetworkScanCallback {
/** Returns the scan results to the user, this callback will be called multiple times. */
@@ -83,10 +86,13 @@ public final class TelephonyScanManager {
private static class NetworkScanInfo {
private final NetworkScanRequest mRequest;
private final Executor mExecutor;
private final NetworkScanCallback mCallback;
NetworkScanInfo(NetworkScanRequest request, NetworkScanCallback callback) {
NetworkScanInfo(
NetworkScanRequest request, Executor executor, NetworkScanCallback callback) {
mRequest = request;
mExecutor = executor;
mCallback = callback;
}
}
@@ -112,10 +118,15 @@ public final class TelephonyScanManager {
"Failed to find NetworkScanInfo with id " + message.arg2);
}
NetworkScanCallback callback = nsi.mCallback;
Executor executor = nsi.mExecutor;
if (callback == null) {
throw new RuntimeException(
"Failed to find NetworkScanCallback with id " + message.arg2);
}
if (executor == null) {
throw new RuntimeException(
"Failed to find Executor with id " + message.arg2);
}
switch (message.what) {
case CALLBACK_SCAN_RESULTS:
@@ -126,21 +137,22 @@ public final class TelephonyScanManager {
for (int i = 0; i < parcelables.length; i++) {
ci[i] = (CellInfo) parcelables[i];
}
callback.onResults((List<CellInfo>) Arrays.asList(ci));
executor.execute(() ->
callback.onResults((List<CellInfo>) Arrays.asList(ci)));
} catch (Exception e) {
Rlog.e(TAG, "Exception in networkscan callback onResults", e);
}
break;
case CALLBACK_SCAN_ERROR:
try {
callback.onError(message.arg1);
executor.execute(() -> callback.onError(message.arg1));
} catch (Exception e) {
Rlog.e(TAG, "Exception in networkscan callback onError", e);
}
break;
case CALLBACK_SCAN_COMPLETE:
try {
callback.onComplete();
executor.execute(() -> callback.onComplete());
mScanInfo.remove(message.arg2);
} catch (Exception e) {
Rlog.e(TAG, "Exception in networkscan callback onComplete", e);
@@ -171,12 +183,12 @@ public final class TelephonyScanManager {
* @hide
*/
public NetworkScan requestNetworkScan(int subId,
NetworkScanRequest request, NetworkScanCallback callback) {
NetworkScanRequest request, Executor executor, NetworkScanCallback callback) {
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
int scanId = telephony.requestNetworkScan(subId, request, mMessenger, new Binder());
saveScanInfo(scanId, request, callback);
saveScanInfo(scanId, request, executor, callback);
return new NetworkScan(scanId, subId);
}
} catch (RemoteException ex) {
@@ -187,9 +199,10 @@ public final class TelephonyScanManager {
return null;
}
private void saveScanInfo(int id, NetworkScanRequest request, NetworkScanCallback callback) {
private void saveScanInfo(
int id, NetworkScanRequest request, Executor executor, NetworkScanCallback callback) {
synchronized (mScanInfo) {
mScanInfo.put(id, new NetworkScanInfo(request, callback));
mScanInfo.put(id, new NetworkScanInfo(request, executor, callback));
}
}