diff options
27 files changed, 154 insertions, 101 deletions
diff --git a/Android.mk b/Android.mk index 57091cc30767..eb288a65ab0d 100644 --- a/Android.mk +++ b/Android.mk @@ -261,23 +261,23 @@ LOCAL_SRC_FILES += \ media/java/android/media/IAudioService.aidl \ media/java/android/media/IAudioFocusDispatcher.aidl \ media/java/android/media/IAudioRoutesObserver.aidl \ - media/java/android/media/IMediaController.aidl \ - media/java/android/media/IMediaControllerCallback.aidl \ media/java/android/media/IMediaHTTPConnection.aidl \ media/java/android/media/IMediaHTTPService.aidl \ media/java/android/media/IMediaRouterClient.aidl \ media/java/android/media/IMediaRouterService.aidl \ media/java/android/media/IMediaScannerListener.aidl \ media/java/android/media/IMediaScannerService.aidl \ - media/java/android/media/IMediaSession.aidl \ - media/java/android/media/IMediaSessionCallback.aidl \ - media/java/android/media/IMediaSessionManager.aidl \ media/java/android/media/IRemoteControlClient.aidl \ media/java/android/media/IRemoteControlDisplay.aidl \ media/java/android/media/IRemoteDisplayCallback.aidl \ media/java/android/media/IRemoteDisplayProvider.aidl \ media/java/android/media/IRemoteVolumeObserver.aidl \ media/java/android/media/IRingtonePlayer.aidl \ + media/java/android/media/session/IMediaController.aidl \ + media/java/android/media/session/IMediaControllerCallback.aidl \ + media/java/android/media/session/IMediaSession.aidl \ + media/java/android/media/session/IMediaSessionCallback.aidl \ + media/java/android/media/session/IMediaSessionManager.aidl \ telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \ telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \ telephony/java/com/android/internal/telephony/ITelephony.aidl \ diff --git a/CleanSpec.mk b/CleanSpec.mk index 1e49fcbb3ec7..448b03dc273e 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -186,6 +186,7 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/effects/) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/framework-res_intermediates) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrintClient.*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/services_intermediates) +$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/media/java/android/media/IMedia*) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/api/current.txt b/api/current.txt index f03023a3cb0b..35a1aee99aa3 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13174,23 +13174,6 @@ package android.media { method public static final android.media.MediaCodecInfo getCodecInfoAt(int); } - public final class MediaController { - ctor public MediaController(android.media.MediaSessionToken); - method public void addCallback(android.media.MediaController.Callback); - method public void addCallback(android.media.MediaController.Callback, android.os.Handler); - method public void removeCallback(android.media.MediaController.Callback); - method public void sendCommand(java.lang.String, android.os.Bundle); - method public void sendMediaButton(int); - } - - public static abstract class MediaController.Callback { - ctor public MediaController.Callback(); - method public void onEvent(java.lang.String, android.os.Bundle); - method public void onMetadataUpdate(android.os.Bundle); - method public void onPlaybackStateChange(int); - method public void onRouteChanged(android.os.Bundle); - } - public final class MediaCrypto { ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException; method public static final boolean isCryptoSchemeSupported(java.util.UUID); @@ -13757,33 +13740,6 @@ package android.media { method public abstract void onScanCompleted(java.lang.String, android.net.Uri); } - public final class MediaSession { - method public void addCallback(android.media.MediaSession.Callback); - method public void addCallback(android.media.MediaSession.Callback, android.os.Handler); - method public android.media.MediaSessionToken getSessionToken(); - method public void release(); - method public void removeCallback(android.media.MediaSession.Callback); - method public void setPlaybackState(int); - } - - public static abstract class MediaSession.Callback { - ctor public MediaSession.Callback(); - method public void onCommand(java.lang.String, android.os.Bundle); - method public void onMediaButton(android.content.Intent); - method public void onRequestRouteChange(android.os.Bundle); - } - - public final class MediaSessionManager { - method public android.media.MediaSession createSession(java.lang.String); - method public java.util.List<android.media.MediaController> getActiveSessions(); - } - - public class MediaSessionToken implements android.os.Parcelable { - method public int describeContents(); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - public class MediaSyncEvent { method public static android.media.MediaSyncEvent createEvent(int) throws java.lang.IllegalArgumentException; method public int getAudioSessionId(); @@ -14453,6 +14409,54 @@ package android.media.effect { } +package android.media.session { + + public final class MediaController { + ctor public MediaController(android.media.session.MediaSessionToken); + method public void addCallback(android.media.session.MediaController.Callback); + method public void addCallback(android.media.session.MediaController.Callback, android.os.Handler); + method public void removeCallback(android.media.session.MediaController.Callback); + method public void sendCommand(java.lang.String, android.os.Bundle); + method public void sendMediaButton(int); + } + + public static abstract class MediaController.Callback { + ctor public MediaController.Callback(); + method public void onEvent(java.lang.String, android.os.Bundle); + method public void onMetadataUpdate(android.os.Bundle); + method public void onPlaybackStateChange(int); + method public void onRouteChanged(android.os.Bundle); + } + + public final class MediaSession { + method public void addCallback(android.media.session.MediaSession.Callback); + method public void addCallback(android.media.session.MediaSession.Callback, android.os.Handler); + method public android.media.session.MediaSessionToken getSessionToken(); + method public void release(); + method public void removeCallback(android.media.session.MediaSession.Callback); + method public void setPlaybackState(int); + } + + public static abstract class MediaSession.Callback { + ctor public MediaSession.Callback(); + method public void onCommand(java.lang.String, android.os.Bundle); + method public void onMediaButton(android.content.Intent); + method public void onRequestRouteChange(android.os.Bundle); + } + + public final class MediaSessionManager { + method public android.media.session.MediaSession createSession(java.lang.String); + method public java.util.List<android.media.session.MediaController> getActiveSessions(); + } + + public class MediaSessionToken implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + +} + package android.mtp { public final class MtpConstants { @@ -15512,6 +15516,7 @@ package android.net.wifi { method public int describeContents(); method public java.lang.String getBSSID(); method public static android.net.NetworkInfo.DetailedState getDetailedStateOf(android.net.wifi.SupplicantState); + method public int getFrequency(); method public boolean getHiddenSSID(); method public int getIpAddress(); method public int getLinkSpeed(); @@ -15521,6 +15526,7 @@ package android.net.wifi { method public java.lang.String getSSID(); method public android.net.wifi.SupplicantState getSupplicantState(); method public void writeToParcel(android.os.Parcel, int); + field public static final java.lang.String FREQUENCY_UNITS = "MHz"; field public static final java.lang.String LINK_SPEED_UNITS = "Mbps"; } diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 7efb3f1e65e1..9b3643ca9f59 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -63,7 +63,7 @@ import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioManager; import android.media.MediaRouter; -import android.media.MediaSessionManager; +import android.media.session.MediaSessionManager; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.INetworkPolicyManager; diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index d05d1a134623..81a886ab40ca 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -2352,10 +2352,10 @@ public abstract class Context { /** * Use with {@link #getSystemService} to retrieve a - * {@link android.media.MediaSessionManager} for managing media Sessions. + * {@link android.media.session.MediaSessionManager} for managing media Sessions. * * @see #getSystemService - * @see android.media.MediaSessionManager + * @see android.media.session.MediaSessionManager */ public static final String MEDIA_SESSION_SERVICE = "media_session"; diff --git a/libs/hwui/PatchCache.cpp b/libs/hwui/PatchCache.cpp index dc0d98c2cb8d..8a446043b70f 100644 --- a/libs/hwui/PatchCache.cpp +++ b/libs/hwui/PatchCache.cpp @@ -129,7 +129,11 @@ void PatchCache::clearGarbage() { Mutex::Autolock _l(mLock); size_t count = mGarbage.size(); for (size_t i = 0; i < count; i++) { - remove(patchesToRemove, mGarbage[i]); + Res_png_9patch* patch = mGarbage[i]; + remove(patchesToRemove, patch); + // A Res_png_9patch is actually an array of byte that's larger + // than sizeof(Res_png_9patch). It must be freed as an array. + delete[] (int8_t*) patch; } mGarbage.clear(); } diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp index 945988556cb6..5a49f38c6996 100644 --- a/libs/hwui/PathCache.cpp +++ b/libs/hwui/PathCache.cpp @@ -395,7 +395,9 @@ void PathCache::clearGarbage() { Mutex::Autolock l(mLock); size_t count = mGarbage.size(); for (size_t i = 0; i < count; i++) { - remove(pathsToRemove, mGarbage.itemAt(i)); + const path_pair_t& pair = mGarbage.itemAt(i); + remove(pathsToRemove, pair); + delete pair.getFirst(); } mGarbage.clear(); } diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp index 457cfa9cfc9f..5562f34f25ef 100644 --- a/libs/hwui/ResourceCache.cpp +++ b/libs/hwui/ResourceCache.cpp @@ -193,8 +193,9 @@ void ResourceCache::destructorLocked(SkPath* resource) { // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { Caches::getInstance().pathCache.removeDeferred(resource); + } else { + delete resource; } - delete resource; return; } ref->destroyed = true; @@ -215,8 +216,9 @@ void ResourceCache::destructorLocked(const SkBitmap* resource) { // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { Caches::getInstance().textureCache.removeDeferred(resource); + } else { + delete resource; } - delete resource; return; } ref->destroyed = true; @@ -253,13 +255,14 @@ void ResourceCache::destructorLocked(Res_png_9patch* resource) { ssize_t index = mCache->indexOfKey(resource); ResourceReference* ref = index >= 0 ? mCache->valueAt(index) : NULL; if (ref == NULL) { + // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { Caches::getInstance().patchCache.removeDeferred(resource); + } else { + // A Res_png_9patch is actually an array of byte that's larger + // than sizeof(Res_png_9patch). It must be freed as an array. + delete[] (int8_t*) resource; } - // If we're not tracking this resource, just delete it - // A Res_png_9patch is actually an array of byte that's larger - // than sizeof(Res_png_9patch). It must be freed as an array. - delete[] (int8_t*) resource; return; } ref->destroyed = true; @@ -316,16 +319,18 @@ void ResourceCache::deleteResourceReferenceLocked(const void* resource, Resource SkBitmap* bitmap = (SkBitmap*) resource; if (Caches::hasInstance()) { Caches::getInstance().textureCache.removeDeferred(bitmap); + } else { + delete bitmap; } - delete bitmap; } break; case kPath: { SkPath* path = (SkPath*) resource; if (Caches::hasInstance()) { Caches::getInstance().pathCache.removeDeferred(path); + } else { + delete path; } - delete path; } break; case kShader: { @@ -336,11 +341,12 @@ void ResourceCache::deleteResourceReferenceLocked(const void* resource, Resource case kNinePatch: { if (Caches::hasInstance()) { Caches::getInstance().patchCache.removeDeferred((Res_png_9patch*) resource); + } else { + // A Res_png_9patch is actually an array of byte that's larger + // than sizeof(Res_png_9patch). It must be freed as an array. + int8_t* patch = (int8_t*) resource; + delete[] patch; } - // A Res_png_9patch is actually an array of byte that's larger - // than sizeof(Res_png_9patch). It must be freed as an array. - int8_t* patch = (int8_t*) resource; - delete[] patch; } break; case kLayer: { diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp index 467f6ca94a06..01d72d1e479c 100644 --- a/libs/hwui/TextureCache.cpp +++ b/libs/hwui/TextureCache.cpp @@ -184,7 +184,9 @@ void TextureCache::clearGarbage() { Mutex::Autolock _l(mLock); size_t count = mGarbage.size(); for (size_t i = 0; i < count; i++) { - mCache.remove(mGarbage.itemAt(i)); + const SkBitmap* bitmap = mGarbage.itemAt(i); + mCache.remove(bitmap); + delete bitmap; } mGarbage.clear(); } diff --git a/media/java/android/media/IMediaController.aidl b/media/java/android/media/session/IMediaController.aidl index fc3525a79248..8ca0e4570d9f 100644 --- a/media/java/android/media/IMediaController.aidl +++ b/media/java/android/media/session/IMediaController.aidl @@ -13,10 +13,10 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.content.Intent; -import android.media.IMediaControllerCallback; +import android.media.session.IMediaControllerCallback; import android.os.Bundle; import android.os.IBinder; import android.view.KeyEvent; diff --git a/media/java/android/media/IMediaControllerCallback.aidl b/media/java/android/media/session/IMediaControllerCallback.aidl index b54d0cf49c44..3aa0ee4f5347 100644 --- a/media/java/android/media/IMediaControllerCallback.aidl +++ b/media/java/android/media/session/IMediaControllerCallback.aidl @@ -13,7 +13,7 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.os.Bundle; diff --git a/media/java/android/media/IMediaSession.aidl b/media/java/android/media/session/IMediaSession.aidl index ed71d78bfa67..19f70923d898 100644 --- a/media/java/android/media/IMediaSession.aidl +++ b/media/java/android/media/session/IMediaSession.aidl @@ -13,9 +13,9 @@ * limitations under the License. */ -package android.media; +package android.media.session; -import android.media.IMediaController; +import android.media.session.IMediaController; import android.os.Bundle; /** diff --git a/media/java/android/media/IMediaSessionCallback.aidl b/media/java/android/media/session/IMediaSessionCallback.aidl index 3aaf925ff211..eb5f222e0acf 100644 --- a/media/java/android/media/IMediaSessionCallback.aidl +++ b/media/java/android/media/session/IMediaSessionCallback.aidl @@ -13,7 +13,7 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.content.Intent; import android.os.Bundle; diff --git a/media/java/android/media/IMediaSessionManager.aidl b/media/java/android/media/session/IMediaSessionManager.aidl index 8bc0c3b83e30..0b4328e76af8 100644 --- a/media/java/android/media/IMediaSessionManager.aidl +++ b/media/java/android/media/session/IMediaSessionManager.aidl @@ -13,10 +13,10 @@ * limitations under the License. */ -package android.media; +package android.media.session; -import android.media.IMediaSession; -import android.media.IMediaSessionCallback; +import android.media.session.IMediaSession; +import android.media.session.IMediaSessionCallback; import android.os.Bundle; /** diff --git a/media/java/android/media/MediaController.java b/media/java/android/media/session/MediaController.java index 1e99942a1fb4..09de859d66b1 100644 --- a/media/java/android/media/MediaController.java +++ b/media/java/android/media/session/MediaController.java @@ -14,9 +14,13 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.content.Intent; +import android.media.session.IMediaController; +import android.media.session.IMediaControllerCallback; +import android.media.MediaMetadataRetriever; +import android.media.RemoteControlClient; import android.os.Bundle; import android.os.Handler; import android.os.Looper; diff --git a/media/java/android/media/MediaSession.java b/media/java/android/media/session/MediaSession.java index 5e5c9fa096cd..1f1533bde107 100644 --- a/media/java/android/media/MediaSession.java +++ b/media/java/android/media/session/MediaSession.java @@ -14,10 +14,13 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.content.Intent; -import android.media.IMediaSession; +import android.media.session.IMediaController; +import android.media.session.IMediaSession; +import android.media.session.IMediaSessionCallback; +import android.media.RemoteControlClient; import android.os.Bundle; import android.os.Handler; import android.os.Looper; diff --git a/media/java/android/media/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java index 90f0071a0598..e3f2d9cc08de 100644 --- a/media/java/android/media/MediaSessionManager.java +++ b/media/java/android/media/session/MediaSessionManager.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package android.media; +package android.media.session; import android.content.Context; +import android.media.session.IMediaSessionManager; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; diff --git a/media/java/android/media/MediaSessionToken.aidl b/media/java/android/media/session/MediaSessionToken.aidl index e2f1abce3732..58126827fe5f 100644 --- a/media/java/android/media/MediaSessionToken.aidl +++ b/media/java/android/media/session/MediaSessionToken.aidl @@ -13,6 +13,6 @@ ** limitations under the License. */ -package android.media; +package android.media.session; parcelable MediaSessionToken; diff --git a/media/java/android/media/MediaSessionToken.java b/media/java/android/media/session/MediaSessionToken.java index 885fda358adc..dbb49645a3de 100644 --- a/media/java/android/media/MediaSessionToken.java +++ b/media/java/android/media/session/MediaSessionToken.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package android.media; +package android.media.session; +import android.media.session.IMediaController; import android.os.Parcel; import android.os.Parcelable; diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 0d3fa84145ae..89acec984f0c 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -17,10 +17,10 @@ package com.android.server.media; import android.content.Intent; -import android.media.IMediaController; -import android.media.IMediaControllerCallback; -import android.media.IMediaSession; -import android.media.IMediaSessionCallback; +import android.media.session.IMediaController; +import android.media.session.IMediaControllerCallback; +import android.media.session.IMediaSession; +import android.media.session.IMediaSessionCallback; import android.media.RemoteControlClient; import android.os.Bundle; import android.os.IBinder; diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index 9c96c35f006f..a7ff92684f82 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -17,9 +17,9 @@ package com.android.server.media; import android.content.Context; -import android.media.IMediaSession; -import android.media.IMediaSessionCallback; -import android.media.IMediaSessionManager; +import android.media.session.IMediaSession; +import android.media.session.IMediaSessionCallback; +import android.media.session.IMediaSessionManager; import android.os.Binder; import android.os.RemoteException; import android.text.TextUtils; diff --git a/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl b/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl index 9bc3baafc94f..2b14384c6dc8 100644 --- a/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl +++ b/tests/OneMedia/src/com/android/onemedia/IPlayerCallback.aidl @@ -12,10 +12,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + package com.android.onemedia; -import android.media.MediaSessionToken; +import android.media.session.MediaSessionToken; interface IPlayerCallback { void onSessionChanged(in MediaSessionToken session); diff --git a/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl b/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl index ab1d3fc2da9d..efdbe9ae8491 100644 --- a/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl +++ b/tests/OneMedia/src/com/android/onemedia/IPlayerService.aidl @@ -12,17 +12,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + package com.android.onemedia; -import android.media.MediaSessionToken; +import android.media.session.MediaSessionToken; import android.os.Bundle; import com.android.onemedia.IPlayerCallback; import com.android.onemedia.playback.IRequestCallback; interface IPlayerService { - MediaSessionToken getSessionToken(); + MediaSessionToken getSessionToken(); void registerCallback(in IPlayerCallback cb); void unregisterCallback(in IPlayerCallback cb); void sendRequest(String action, in Bundle params, in IRequestCallback cb); diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerController.java b/tests/OneMedia/src/com/android/onemedia/PlayerController.java index 4ccc846dd871..3f15db5a010b 100644 --- a/tests/OneMedia/src/com/android/onemedia/PlayerController.java +++ b/tests/OneMedia/src/com/android/onemedia/PlayerController.java @@ -1,8 +1,8 @@ package com.android.onemedia; -import android.media.MediaController; -import android.media.MediaSessionManager; +import android.media.session.MediaController; +import android.media.session.MediaSessionManager; import android.os.Handler; import android.os.IBinder; import android.os.RemoteException; diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerService.java b/tests/OneMedia/src/com/android/onemedia/PlayerService.java index 0819077c8b34..0b2ba8f48bfa 100644 --- a/tests/OneMedia/src/com/android/onemedia/PlayerService.java +++ b/tests/OneMedia/src/com/android/onemedia/PlayerService.java @@ -2,7 +2,7 @@ package com.android.onemedia; import android.app.Service; import android.content.Intent; -import android.media.MediaSessionToken; +import android.media.session.MediaSessionToken; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java index 25a8f0d1aa47..e5fb0d03acd8 100644 --- a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java +++ b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java @@ -2,9 +2,9 @@ package com.android.onemedia; import android.content.Context; import android.content.Intent; -import android.media.MediaSession; -import android.media.MediaSessionManager; -import android.media.MediaSessionToken; +import android.media.session.MediaSession; +import android.media.session.MediaSessionManager; +import android.media.session.MediaSessionToken; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 6a1306737254..4a6821c51815 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -69,6 +69,10 @@ public class WifiInfo implements Parcelable { public static final String LINK_SPEED_UNITS = "Mbps"; private int mLinkSpeed; + /** Frequency in MHz */ + public static final String FREQUENCY_UNITS = "MHz"; + private int mFrequency; + private InetAddress mIpAddress; private String mMacAddress; @@ -86,6 +90,7 @@ public class WifiInfo implements Parcelable { mSupplicantState = SupplicantState.UNINITIALIZED; mRssi = -9999; mLinkSpeed = -1; + mFrequency = -1; } /** @@ -100,6 +105,7 @@ public class WifiInfo implements Parcelable { mNetworkId = source.mNetworkId; mRssi = source.mRssi; mLinkSpeed = source.mLinkSpeed; + mFrequency = source.mFrequency; mIpAddress = source.mIpAddress; mMacAddress = source.mMacAddress; mMeteredHint = source.mMeteredHint; @@ -179,6 +185,20 @@ public class WifiInfo implements Parcelable { } /** + * Returns the current frequency in {@link #FREQUENCY_UNITS}. + * @return the frequency. + * @see #FREQUENCY_UNITS + */ + public int getFrequency() { + return mFrequency; + } + + /** @hide */ + public void setFrequency(int frequency) { + this.mFrequency = frequency; + } + + /** * Record the MAC address of the WLAN interface * @param macAddress the MAC address in {@code XX:XX:XX:XX:XX:XX} form * @hide @@ -303,7 +323,8 @@ public class WifiInfo implements Parcelable { append(", Supplicant state: "). append(mSupplicantState == null ? none : mSupplicantState). append(", RSSI: ").append(mRssi). - append(", Link speed: ").append(mLinkSpeed). + append(", Link speed: ").append(mLinkSpeed).append(LINK_SPEED_UNITS). + append(", Frequency: ").append(mFrequency).append(FREQUENCY_UNITS). append(", Net ID: ").append(mNetworkId). append(", Metered hint: ").append(mMeteredHint); @@ -320,6 +341,7 @@ public class WifiInfo implements Parcelable { dest.writeInt(mNetworkId); dest.writeInt(mRssi); dest.writeInt(mLinkSpeed); + dest.writeInt(mFrequency); if (mIpAddress != null) { dest.writeByte((byte)1); dest.writeByteArray(mIpAddress.getAddress()); @@ -346,6 +368,7 @@ public class WifiInfo implements Parcelable { info.setNetworkId(in.readInt()); info.setRssi(in.readInt()); info.setLinkSpeed(in.readInt()); + info.setFrequency(in.readInt()); if (in.readByte() == 1) { try { info.setInetAddress(InetAddress.getByAddress(in.createByteArray())); |