Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e73a0ab4 authored by Vinit Deshpande's avatar Vinit Deshpande Committed by Android (Google) Code Review
Browse files

Merge "Accomoditing API Review feedback for WifiScanner"

parents 2157b9dc 55027bb7
Loading
Loading
Loading
Loading
+0 −80
Original line number Diff line number Diff line
@@ -17293,86 +17293,6 @@ package android.net.wifi {
    method public abstract void onStartSuccess(java.lang.String);
  }
  public class WifiScanner {
    method public void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.HotspotInfo[]);
    method public void resetHotlist(android.net.wifi.WifiScanner.HotlistListener);
    method public void retrieveScanResults(boolean, android.net.wifi.WifiScanner.ScanListener);
    method public void setHotlist(android.net.wifi.WifiScanner.HotspotInfo[], int, android.net.wifi.WifiScanner.HotlistListener);
    method public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
    method public void startTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
    method public void stopBackgroundScan(android.net.wifi.WifiScanner.ScanListener);
    method public void stopTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
    field public static final int MAX_SCAN_PERIOD_MS = 1024000; // 0xfa000
    field public static final int MIN_SCAN_PERIOD_MS = 2000; // 0x7d0
    field public static final int REASON_CONFLICTING_REQUEST = -4; // 0xfffffffc
    field public static final int REASON_INVALID_LISTENER = -2; // 0xfffffffe
    field public static final int REASON_INVALID_REQUEST = -3; // 0xfffffffd
    field public static final int REASON_SUCCEEDED = 0; // 0x0
    field public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
    field public static final int REPORT_EVENT_AFTER_BUFFER_FULL = 0; // 0x0
    field public static final int REPORT_EVENT_AFTER_EACH_SCAN = 1; // 0x1
    field public static final int REPORT_EVENT_FULL_SCAN_RESULT = 2; // 0x2
    field public static final int WIFI_BAND_24_GHZ = 1; // 0x1
    field public static final int WIFI_BAND_5_GHZ = 2; // 0x2
    field public static final int WIFI_BAND_5_GHZ_DFS_ONLY = 4; // 0x4
    field public static final int WIFI_BAND_5_GHZ_WITH_DFS = 6; // 0x6
    field public static final int WIFI_BAND_BOTH = 3; // 0x3
    field public static final int WIFI_BAND_BOTH_WITH_DFS = 7; // 0x7
    field public static final int WIFI_BAND_UNSPECIFIED = 0; // 0x0
  }
  public static class WifiScanner.ChannelSpec {
    ctor public WifiScanner.ChannelSpec(int);
    field public int frequency;
  }
  public static class WifiScanner.FullScanResult implements android.os.Parcelable {
    ctor public WifiScanner.FullScanResult();
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public android.net.wifi.WifiScanner.InformationElement[] informationElements;
    field public android.net.wifi.ScanResult result;
  }
  public static abstract interface WifiScanner.HotlistListener {
    method public abstract void onFound(android.net.wifi.ScanResult[]);
  }
  public static class WifiScanner.HotspotInfo {
    ctor public WifiScanner.HotspotInfo();
    field public java.lang.String bssid;
    field public int frequencyHint;
    field public int high;
    field public int low;
  }
  public static class WifiScanner.InformationElement {
    ctor public WifiScanner.InformationElement();
    field public byte[] bytes;
    field public int id;
  }
  public static abstract interface WifiScanner.ScanListener {
    method public abstract void onFullResult(android.net.wifi.WifiScanner.FullScanResult);
    method public abstract void onPeriodChanged(int);
    method public abstract void onResults(android.net.wifi.ScanResult[]);
  }
  public static class WifiScanner.ScanSettings implements android.os.Parcelable {
    ctor public WifiScanner.ScanSettings();
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public int band;
    field public android.net.wifi.WifiScanner.ChannelSpec[] channels;
    field public int periodInMs;
    field public int reportEvents;
  }
  public static abstract interface WifiScanner.WifiChangeListener {
    method public abstract void onChanging(android.net.wifi.ScanResult[]);
    method public abstract void onQuiescence(android.net.wifi.ScanResult[]);
  }
  public class WpsInfo implements android.os.Parcelable {
    ctor public WpsInfo();
    ctor public WpsInfo(android.net.wifi.WpsInfo);
+34 −1
Original line number Diff line number Diff line
@@ -90,6 +90,19 @@ public class ScanResult implements Parcelable {
     */
    public final static int UNSPECIFIED = -1;

    /** information element from beacon
     * @hide
     */
    public static class InformationElement {
        public int id;
        public byte[] bytes;
    }

    /** information elements found in the beacon
     * @hide
     */
    public InformationElement informationElements[];

    /** {@hide} */
    public ScanResult(WifiSsid wifiSsid, String BSSID, String caps, int level, int frequency,
            long tsf) {
@@ -199,6 +212,16 @@ public class ScanResult implements Parcelable {
        } else {
            dest.writeInt(0);
        }
        if (informationElements != null) {
            dest.writeInt(informationElements.length);
            for (int i = 0; i < informationElements.length; i++) {
                dest.writeInt(informationElements[i].id);
                dest.writeInt(informationElements[i].bytes.length);
                dest.writeByteArray(informationElements[i].bytes);
            }
        } else {
            dest.writeInt(0);
        }
    }

    /** Implement the Parcelable interface {@hide} */
@@ -223,6 +246,17 @@ public class ScanResult implements Parcelable {
                if (in.readInt() == 1) {
                    sr.passpoint = WifiPasspointInfo.CREATOR.createFromParcel(in);
                }
                int n = in.readInt();
                if (n != 0) {
                    sr.informationElements = new InformationElement[n];
                    for (int i = 0; i < n; i++) {
                        sr.informationElements[i] = new InformationElement();
                        sr.informationElements[i].id = in.readInt();
                        int len = in.readInt();
                        sr.informationElements[i].bytes = new byte[len];
                        in.readByteArray(sr.informationElements[i].bytes);
                    }
                }
                return sr;
            }

@@ -230,5 +264,4 @@ public class ScanResult implements Parcelable {
                return new ScanResult[size];
            }
        };

}
+18 −72
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import java.util.concurrent.CountDownLatch;
 * Get an instance of this class by calling
 * {@link android.content.Context#getSystemService(String) Context.getSystemService(Context
 * .WIFI_SCANNING_SERVICE)}.
 * @hide
 */
public class WifiScanner {

@@ -72,16 +73,14 @@ public class WifiScanner {
    public static final int REASON_INVALID_LISTENER = -2;
    /** Invalid request */
    public static final int REASON_INVALID_REQUEST = -3;
    /** Request conflicts with other scans that may be going on */
    public static final int REASON_CONFLICTING_REQUEST = -4;

    /**
     * Generic action callback invocation interface
     *  @hide
     */
    public static interface ActionListener {
        public void onSuccess(Object result);
        public void onFailure(int reason, Object exception);
        public void onSuccess();
        public void onFailure(int reason, String description);
    }

    /**
@@ -193,58 +192,6 @@ public class WifiScanner {

    }

    /** information element from beacon */
    public static class InformationElement {
        public int id;
        public byte[] bytes;
    }

    /** scan result with information elements from beacons */
    public static class FullScanResult implements Parcelable {
        public ScanResult result;
        public InformationElement informationElements[];

        /** Implement the Parcelable interface {@hide} */
        public int describeContents() {
            return 0;
        }

        /** Implement the Parcelable interface {@hide} */
        public void writeToParcel(Parcel dest, int flags) {
            result.writeToParcel(dest, flags);
            dest.writeInt(informationElements.length);
            for (int i = 0; i < informationElements.length; i++) {
                dest.writeInt(informationElements[i].id);
                dest.writeInt(informationElements[i].bytes.length);
                dest.writeByteArray(informationElements[i].bytes);
            }
        }

        /** Implement the Parcelable interface {@hide} */
        public static final Creator<FullScanResult> CREATOR =
                new Creator<FullScanResult>() {
                    public FullScanResult createFromParcel(Parcel in) {
                        FullScanResult result = new FullScanResult();
                        result.result = ScanResult.CREATOR.createFromParcel(in);
                        int n = in.readInt();
                        result.informationElements = new InformationElement[n];
                        for (int i = 0; i < n; i++) {
                            result.informationElements[i] = new InformationElement();
                            result.informationElements[i].id = in.readInt();
                            int len = in.readInt();
                            result.informationElements[i].bytes = new byte[len];
                            in.readByteArray(result.informationElements[i].bytes);
                        }

                        return result;
                    }

                    public FullScanResult[] newArray(int size) {
                        return new FullScanResult[size];
                    }
                };
    }

    /** @hide */
    public static class ParcelableScanResults implements Parcelable {
        public ScanResult mResults[];
@@ -305,7 +252,7 @@ public class WifiScanner {
        /**
         * reports full scan result for each access point found in scan
         */
        public void onFullResult(FullScanResult fullScanResult);
        public void onFullResult(ScanResult fullScanResult);
    }

    /** @hide */
@@ -336,13 +283,12 @@ public class WifiScanner {
    }
    /**
     * retrieves currently available scan results
     * @param flush {@code true} means flush all results
     * @param listener specifies which scan to cancel; must be same object as passed in {@link
     *                 #startBackgroundScan}
     */
    public void retrieveScanResults(boolean flush, ScanListener listener) {
    public ScanResult[] getScanResults() {
        validateChannel();
        sAsyncChannel.sendMessage(CMD_GET_SCAN_RESULTS, 0, getListenerKey(listener));
        Message reply = sAsyncChannel.sendMessageSynchronously(CMD_GET_SCAN_RESULTS, 0);
        ScanResult[] results = (ScanResult[]) reply.obj;
        return results;
    }

    /** specifies information about an access point of interest */
@@ -490,7 +436,7 @@ public class WifiScanner {
    }

    /** interface to receive hotlist events on; use this on {@link #setHotlist} */
    public static interface HotlistListener extends ActionListener {
    public static interface HotspotListener extends ActionListener {
        /** indicates that access points were found by on going scans
         * @param results list of scan results, one for each access point visible currently
         */
@@ -550,10 +496,10 @@ public class WifiScanner {
     * @param hotspots access points of interest
     * @param apLostThreshold number of scans needed to indicate that AP is lost
     * @param listener object provided to report events on; this object must be unique and must
     *                 also be provided on {@link #resetHotlist}
     *                 also be provided on {@link #stopTrackingHotspots}
     */
    public void setHotlist(HotspotInfo[] hotspots,
            int apLostThreshold, HotlistListener listener) {
    public void startTrackingHotspots(HotspotInfo[] hotspots,
            int apLostThreshold, HotspotListener listener) {
        validateChannel();
        HotlistSettings settings = new HotlistSettings();
        settings.hotspotInfos = hotspots;
@@ -562,9 +508,9 @@ public class WifiScanner {

    /**
     * remove tracking of interesting access points
     * @param listener same object provided in {@link #setHotlist}
     * @param listener same object provided in {@link #startTrackingHotspots}
     */
    public void resetHotlist(HotlistListener listener) {
    public void stopTrackingHotspots(HotspotListener listener) {
        validateChannel();
        sAsyncChannel.sendMessage(CMD_RESET_HOTLIST, 0, removeListener(listener));
    }
@@ -769,10 +715,10 @@ public class WifiScanner {
            switch (msg.what) {
                    /* ActionListeners grouped together */
                case CMD_OP_SUCCEEDED :
                    ((ActionListener) listener).onSuccess(msg.obj);
                    ((ActionListener) listener).onSuccess();
                    break;
                case CMD_OP_FAILED :
                    ((ActionListener) listener).onFailure(msg.arg1, msg.obj);
                    ((ActionListener) listener).onFailure(msg.arg1, (String)msg.obj);
                    removeListener(msg.arg2);
                    break;
                case CMD_SCAN_RESULT :
@@ -780,14 +726,14 @@ public class WifiScanner {
                            ((ParcelableScanResults) msg.obj).getResults());
                    return;
                case CMD_FULL_SCAN_RESULT :
                    FullScanResult result = (FullScanResult) msg.obj;
                    ScanResult result = (ScanResult) msg.obj;
                    ((ScanListener) listener).onFullResult(result);
                    return;
                case CMD_PERIOD_CHANGED:
                    ((ScanListener) listener).onPeriodChanged(msg.arg1);
                    return;
                case CMD_AP_FOUND:
                    ((HotlistListener) listener).onFound(
                    ((HotspotListener) listener).onFound(
                            ((ParcelableScanResults) msg.obj).getResults());
                    return;
                case CMD_WIFI_CHANGE_DETECTED: