/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net;

import android.os.Parcel;
import android.os.Parcelable;

Class that represents useful attributes of generic network links such as the upload/download throughput or packet error rate. Generally speaking, you should be dealing with instances of LinkQualityInfo subclasses, such as android.net.#WifiLinkQualityInfo or android.net.#MobileLinkQualityInfo which provide additional information. @hide
/** * Class that represents useful attributes of generic network links * such as the upload/download throughput or packet error rate. * Generally speaking, you should be dealing with instances of * LinkQualityInfo subclasses, such as {@link android.net.#WifiLinkQualityInfo} * or {@link android.net.#MobileLinkQualityInfo} which provide additional * information. * @hide */
public class LinkQualityInfo implements Parcelable {
Represents a value that you can use to test if an integer field is set to a good value
/** * Represents a value that you can use to test if an integer field is set to a good value */
public static final int UNKNOWN_INT = Integer.MAX_VALUE;
Represents a value that you can use to test if a long field is set to a good value
/** * Represents a value that you can use to test if a long field is set to a good value */
public static final long UNKNOWN_LONG = Long.MAX_VALUE; public static final int NORMALIZED_MIN_SIGNAL_STRENGTH = 0; public static final int NORMALIZED_MAX_SIGNAL_STRENGTH = 99; public static final int NORMALIZED_SIGNAL_STRENGTH_RANGE = NORMALIZED_MAX_SIGNAL_STRENGTH - NORMALIZED_MIN_SIGNAL_STRENGTH + 1; /* Network type as defined by ConnectivityManager */ private int mNetworkType = ConnectivityManager.TYPE_NONE; private int mNormalizedSignalStrength = UNKNOWN_INT; private long mPacketCount = UNKNOWN_LONG; private long mPacketErrorCount = UNKNOWN_LONG; private int mTheoreticalTxBandwidth = UNKNOWN_INT; private int mTheoreticalRxBandwidth = UNKNOWN_INT; private int mTheoreticalLatency = UNKNOWN_INT; /* Timestamp when last sample was made available */ private long mLastDataSampleTime = UNKNOWN_LONG; /* Sample duration in millisecond */ private int mDataSampleDuration = UNKNOWN_INT; public LinkQualityInfo() { }
Implement the Parcelable interface
@hide
/** * Implement the Parcelable interface * @hide */
public int describeContents() { return 0; }
Implement the Parcelable interface.
/** * Implement the Parcelable interface. */
protected static final int OBJECT_TYPE_LINK_QUALITY_INFO = 1; protected static final int OBJECT_TYPE_WIFI_LINK_QUALITY_INFO = 2; protected static final int OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO = 3;
@hide
/** * @hide */
public void writeToParcel(Parcel dest, int flags) { writeToParcel(dest, flags, OBJECT_TYPE_LINK_QUALITY_INFO); }
@hide
/** * @hide */
public void writeToParcel(Parcel dest, int flags, int objectType) { dest.writeInt(objectType); dest.writeInt(mNetworkType); dest.writeInt(mNormalizedSignalStrength); dest.writeLong(mPacketCount); dest.writeLong(mPacketErrorCount); dest.writeInt(mTheoreticalTxBandwidth); dest.writeInt(mTheoreticalRxBandwidth); dest.writeInt(mTheoreticalLatency); dest.writeLong(mLastDataSampleTime); dest.writeInt(mDataSampleDuration); }
@hide
/** * @hide */
public static final Creator<LinkQualityInfo> CREATOR = new Creator<LinkQualityInfo>() { public LinkQualityInfo createFromParcel(Parcel in) { int objectType = in.readInt(); if (objectType == OBJECT_TYPE_LINK_QUALITY_INFO) { LinkQualityInfo li = new LinkQualityInfo(); li.initializeFromParcel(in); return li; } else if (objectType == OBJECT_TYPE_WIFI_LINK_QUALITY_INFO) { return WifiLinkQualityInfo.createFromParcelBody(in); } else if (objectType == OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO) { return MobileLinkQualityInfo.createFromParcelBody(in); } else { return null; } } public LinkQualityInfo[] newArray(int size) { return new LinkQualityInfo[size]; } };
@hide
/** * @hide */
protected void initializeFromParcel(Parcel in) { mNetworkType = in.readInt(); mNormalizedSignalStrength = in.readInt(); mPacketCount = in.readLong(); mPacketErrorCount = in.readLong(); mTheoreticalTxBandwidth = in.readInt(); mTheoreticalRxBandwidth = in.readInt(); mTheoreticalLatency = in.readInt(); mLastDataSampleTime = in.readLong(); mDataSampleDuration = in.readInt(); }
returns the type of network this link is connected to
Returns:network type as defined by ConnectivityManager or UNKNOWN_INT
/** * returns the type of network this link is connected to * @return network type as defined by {@link android.net.ConnectivityManager} or * {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getNetworkType() { return mNetworkType; }
@hide
/** * @hide */
public void setNetworkType(int networkType) { mNetworkType = networkType; }
returns the signal strength normalized across multiple types of networks
Returns:an integer value from 0 - 99 or UNKNOWN_INT
/** * returns the signal strength normalized across multiple types of networks * @return an integer value from 0 - 99 or {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getNormalizedSignalStrength() { return mNormalizedSignalStrength; }
@hide
/** * @hide */
public void setNormalizedSignalStrength(int normalizedSignalStrength) { mNormalizedSignalStrength = normalizedSignalStrength; }
returns the total number of packets sent or received in sample duration
Returns:number of packets or UNKNOWN_LONG
/** * returns the total number of packets sent or received in sample duration * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} */
public long getPacketCount() { return mPacketCount; }
@hide
/** * @hide */
public void setPacketCount(long packetCount) { mPacketCount = packetCount; }
returns the total number of packets errors encountered in sample duration
Returns:number of errors or UNKNOWN_LONG
/** * returns the total number of packets errors encountered in sample duration * @return number of errors or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} */
public long getPacketErrorCount() { return mPacketErrorCount; }
@hide
/** * @hide */
public void setPacketErrorCount(long packetErrorCount) { mPacketErrorCount = packetErrorCount; }
returns the theoretical upload bandwidth of this network
Returns:bandwidth in Kbps or UNKNOWN_INT
/** * returns the theoretical upload bandwidth of this network * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getTheoreticalTxBandwidth() { return mTheoreticalTxBandwidth; }
@hide
/** * @hide */
public void setTheoreticalTxBandwidth(int theoreticalTxBandwidth) { mTheoreticalTxBandwidth = theoreticalTxBandwidth; }
returns the theoretical download bandwidth of this network
Returns:bandwidth in Kbps or UNKNOWN_INT
/** * returns the theoretical download bandwidth of this network * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getTheoreticalRxBandwidth() { return mTheoreticalRxBandwidth; }
@hide
/** * @hide */
public void setTheoreticalRxBandwidth(int theoreticalRxBandwidth) { mTheoreticalRxBandwidth = theoreticalRxBandwidth; }
returns the theoretical latency of this network
Returns:latency in milliseconds or UNKNOWN_INT
/** * returns the theoretical latency of this network * @return latency in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getTheoreticalLatency() { return mTheoreticalLatency; }
@hide
/** * @hide */
public void setTheoreticalLatency(int theoreticalLatency) { mTheoreticalLatency = theoreticalLatency; }
returns the time stamp of the last sample
Returns:milliseconds elapsed since start and sample time or UNKNOWN_LONG
/** * returns the time stamp of the last sample * @return milliseconds elapsed since start and sample time or * {@link android.net.LinkQualityInfo#UNKNOWN_LONG} */
public long getLastDataSampleTime() { return mLastDataSampleTime; }
@hide
/** * @hide */
public void setLastDataSampleTime(long lastDataSampleTime) { mLastDataSampleTime = lastDataSampleTime; }
returns the sample duration used
Returns:duration in milliseconds or UNKNOWN_INT
/** * returns the sample duration used * @return duration in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} */
public int getDataSampleDuration() { return mDataSampleDuration; }
@hide
/** * @hide */
public void setDataSampleDuration(int dataSampleDuration) { mDataSampleDuration = dataSampleDuration; } }