ScanResult.java revision 7f28e844c12403e77dc62b2d0ccf34a9639745e0
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.net.wifi;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
197fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport android.net.wifi.passpoint.WifiPasspointInfo;
207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport android.net.wifi.passpoint.WifiPasspointManager;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Describes information about a detected access point. In addition
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to the attributes described here, the supplicant keeps track of
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@code quality}, {@code noise}, and {@code maxbitrate} attributes,
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but does not currently report them to external clients.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ScanResult implements Parcelable {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** The network name. */
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String SSID;
33b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff
34b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff    /** Ascii encoded SSID. This will replace SSID when we deprecate it. @hide */
35b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff    public WifiSsid wifiSsid;
36b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** The address of the access point. */
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String BSSID;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Describes the authentication, key management, and encryption schemes
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * supported by the access point.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String capabilities;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
45137ff532ebb062ea513d6ea0dd894b91f373d1a3Brian Williammee     * The detected signal level in dBm.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int level;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The frequency in MHz of the channel over which the client is communicating
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with the access point.
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int frequency;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5506c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev     * Time Synchronization Function (tsf) timestamp in microseconds when
5606c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev     * this result was last seen.
5706c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev     */
580451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    public long timestamp;
590451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt
600451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    /**
617c3606c103e95d3991267cca2592402a68779cafvandwalle     * Timestamp representing date when this result was last seen, in milliseconds from 1970
627c3606c103e95d3991267cca2592402a68779cafvandwalle     * {@hide}
637c3606c103e95d3991267cca2592402a68779cafvandwalle     */
647c3606c103e95d3991267cca2592402a68779cafvandwalle    public long seen;
657c3606c103e95d3991267cca2592402a68779cafvandwalle
667c3606c103e95d3991267cca2592402a68779cafvandwalle
677c3606c103e95d3991267cca2592402a68779cafvandwalle    /**
680451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * The approximate distance to the AP in centimeter, if available.  Else
690451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * {@link UNSPECIFIED}.
700451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * {@hide}
710451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     */
720451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    public int distanceCm;
730451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt
740451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    /**
750451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * The standard deviation of the distance to the AP, if available.
760451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * Else {@link UNSPECIFIED}.
770451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * {@hide}
780451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     */
790451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    public int distanceSdCm;
800451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt
810451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    /**
82a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng     * Passpoint ANQP information. This is not fetched automatically.
837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * Use {@link WifiPasspointManager#requestAnqpInfo} to request ANQP info.
84fdb2575a8029dfe90a55c4ecc594bb5628bdf361Vinit Deshapnde     * {@hide}
85a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng     */
867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public WifiPasspointInfo passpoint;
87a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng
88a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng    /**
890451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     * {@hide}
900451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt     */
910451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    public final static int UNSPECIFIED = -1;
9206c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev
9355027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande    /** information element from beacon
9455027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande     * @hide
9555027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande     */
9655027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande    public static class InformationElement {
9755027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande        public int id;
9855027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande        public byte[] bytes;
9955027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande    }
10055027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande
10155027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande    /** information elements found in the beacon
10255027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande     * @hide
10355027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande     */
10455027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande    public InformationElement informationElements[];
10555027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande
106b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff    /** {@hide} */
107b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff    public ScanResult(WifiSsid wifiSsid, String BSSID, String caps, int level, int frequency,
108b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            long tsf) {
109b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff        this.wifiSsid = wifiSsid;
110b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff        this.SSID = (wifiSsid != null) ? wifiSsid.toString() : WifiSsid.NONE;
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.BSSID = BSSID;
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.capabilities = caps;
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.level = level;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.frequency = frequency;
11506c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev        this.timestamp = tsf;
1160451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.distanceCm = UNSPECIFIED;
1170451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.distanceSdCm = UNSPECIFIED;
11806c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev    }
11906c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev
1200451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    /** {@hide} */
1210451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    public ScanResult(WifiSsid wifiSsid, String BSSID, String caps, int level, int frequency,
1220451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt            long tsf, int distCm, int distSdCm) {
1230451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.wifiSsid = wifiSsid;
1240451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.SSID = (wifiSsid != null) ? wifiSsid.toString() : WifiSsid.NONE;
1250451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.BSSID = BSSID;
1260451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.capabilities = caps;
1270451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.level = level;
1280451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.frequency = frequency;
1290451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.timestamp = tsf;
1300451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.distanceCm = distCm;
1310451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        this.distanceSdCm = distSdCm;
1320451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt    }
133b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff
13406c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev    /** copy constructor {@hide} */
13506c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev    public ScanResult(ScanResult source) {
13606c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev        if (source != null) {
137b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            wifiSsid = source.wifiSsid;
13806c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            SSID = source.SSID;
13906c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            BSSID = source.BSSID;
14006c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            capabilities = source.capabilities;
14106c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            level = source.level;
14206c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            frequency = source.frequency;
14306c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            timestamp = source.timestamp;
1440451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt            distanceCm = source.distanceCm;
1450451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt            distanceSdCm = source.distanceSdCm;
1467c3606c103e95d3991267cca2592402a68779cafvandwalle            seen = source.seen;
1477f28e844c12403e77dc62b2d0ccf34a9639745e0Yuhao Zheng            passpoint = source.passpoint;
14806c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev        }
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
151011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde    /** empty scan result
152011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde     *
153011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde     * {@hide}
154011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde     * */
155011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde    public ScanResult() {
156011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde    }
157011e1b35a64180d6f0234af8a3c2b70777eb9f39Vinit Deshapnde
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        StringBuffer sb = new StringBuffer();
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String none = "<none>";
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sb.append("SSID: ").
164b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            append(wifiSsid == null ? WifiSsid.NONE : wifiSsid).
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(", BSSID: ").
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(BSSID == null ? none : BSSID).
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(", capabilities: ").
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(capabilities == null ? none : capabilities).
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(", level: ").
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(level).
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            append(", frequency: ").
17206c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            append(frequency).
17306c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            append(", timestamp: ").
17406c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev            append(timestamp);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1760451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        sb.append(", distance: ").append((distanceCm != UNSPECIFIED ? distanceCm : "?")).
1770451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt                append("(cm)");
1780451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        sb.append(", distanceSd: ").append((distanceSdCm != UNSPECIFIED ? distanceSdCm : "?")).
1790451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt                append("(cm)");
1800451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt
1817f28e844c12403e77dc62b2d0ccf34a9639745e0Yuhao Zheng        sb.append(", passpoint: ").append(passpoint != null ? "yes" : "no");
182a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return sb.toString();
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Implement the Parcelable interface {@hide} */
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Implement the Parcelable interface {@hide} */
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int flags) {
193b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff        if (wifiSsid != null) {
194b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            dest.writeInt(1);
195b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            wifiSsid.writeToParcel(dest, flags);
196b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff        } else {
197b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff            dest.writeInt(0);
198b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff        }
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(BSSID);
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(capabilities);
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(level);
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(frequency);
20306c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev        dest.writeLong(timestamp);
2040451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        dest.writeInt(distanceCm);
2050451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt        dest.writeInt(distanceSdCm);
2065fb7bf5fdb93831684b00eb637ec15b5cf0d1e2dvandwalle        dest.writeLong(seen);
207a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng        if (passpoint != null) {
208a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng            dest.writeInt(1);
209a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng            passpoint.writeToParcel(dest, flags);
210a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng        } else {
211a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng            dest.writeInt(0);
212a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng        }
21355027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande        if (informationElements != null) {
21455027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande            dest.writeInt(informationElements.length);
21555027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande            for (int i = 0; i < informationElements.length; i++) {
21655027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                dest.writeInt(informationElements[i].id);
21755027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                dest.writeInt(informationElements[i].bytes.length);
21855027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                dest.writeByteArray(informationElements[i].bytes);
21955027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande            }
22055027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande        } else {
22155027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande            dest.writeInt(0);
22255027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande        }
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Implement the Parcelable interface {@hide} */
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Creator<ScanResult> CREATOR =
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        new Creator<ScanResult>() {
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            public ScanResult createFromParcel(Parcel in) {
229b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff                WifiSsid wifiSsid = null;
230b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff                if (in.readInt() == 1) {
231b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff                    wifiSsid = WifiSsid.CREATOR.createFromParcel(in);
232b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff                }
233a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng                ScanResult sr = new ScanResult(
234b6deeed3ceff9e0f754697987b7c724901996082Irfan Sheriff                    wifiSsid,
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    in.readString(),
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    in.readString(),
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    in.readInt(),
23806c43d575c88976f8709ff3fc0bad7117bde23e7Iliyan Malchev                    in.readInt(),
2390451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt                    in.readLong(),
2400451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt                    in.readInt(),
2410451d59ba2d768e7653752028910f00a6c96e64eRobert Greenwalt                    in.readInt()
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                );
2435fb7bf5fdb93831684b00eb637ec15b5cf0d1e2dvandwalle                sr.seen = in.readLong();
244a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng                if (in.readInt() == 1) {
2457fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    sr.passpoint = WifiPasspointInfo.CREATOR.createFromParcel(in);
246a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng                }
24755027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                int n = in.readInt();
24855027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                if (n != 0) {
24955027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                    sr.informationElements = new InformationElement[n];
25055027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                    for (int i = 0; i < n; i++) {
25155027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                        sr.informationElements[i] = new InformationElement();
25255027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                        sr.informationElements[i].id = in.readInt();
25355027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                        int len = in.readInt();
25455027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                        sr.informationElements[i].bytes = new byte[len];
25555027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                        in.readByteArray(sr.informationElements[i].bytes);
25655027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                    }
25755027bb7b87ddcb05d65892677a2e0fe42f66ba2Vinit Deshpande                }
258a4864472313208e4f1de02f45d3eadad237c54afYuhao Zheng                return sr;
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            public ScanResult[] newArray(int size) {
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return new ScanResult[size];
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        };
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
266