diff options
Diffstat (limited to 'media/java/android/media/VolumeController.java')
-rw-r--r-- | media/java/android/media/VolumeController.java | 118 |
1 files changed, 112 insertions, 6 deletions
diff --git a/media/java/android/media/VolumeController.java b/media/java/android/media/VolumeController.java index 2d12bf25f4d1..6b70cc39b915 100644 --- a/media/java/android/media/VolumeController.java +++ b/media/java/android/media/VolumeController.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 The Android Open Source Project + * Copyright (C) 2014 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. @@ -16,14 +16,120 @@ package android.media; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.Log; + +import java.util.Objects; + /** + * Wraps the remote volume controller interface as a convenience to audio service. * @hide */ -public interface VolumeController { +public class VolumeController { + private static final String TAG = "VolumeController"; + + private IVolumeController mController; + + public void setController(IVolumeController controller) { + mController = controller; + } + + public boolean isSameBinder(IVolumeController controller) { + return Objects.equals(asBinder(), binder(controller)); + } + + public IBinder asBinder() { + return binder(mController); + } + + private static IBinder binder(IVolumeController controller) { + return controller == null ? null : controller.asBinder(); + } + + @Override + public String toString() { + return "VolumeController(" + asBinder() + ")"; + } + + public void postHasNewRemotePlaybackInfo() { + if (mController == null) return; + try { + mController.hasNewRemotePlaybackInfo(); + } catch (RemoteException e) { + Log.w(TAG, "Error calling hasNewRemotePlaybackInfo", e); + } + } + + public void postRemoteVolumeChanged(int streamType, int flags) { + if (mController == null) return; + try { + mController.remoteVolumeChanged(streamType, flags); + } catch (RemoteException e) { + Log.w(TAG, "Error calling remoteVolumeChanged", e); + } + } + + public void postRemoteSliderVisibility(boolean visible) { + if (mController == null) return; + try { + mController.remoteSliderVisibility(visible); + } catch (RemoteException e) { + Log.w(TAG, "Error calling remoteSliderVisibility", e); + } + } + + public void postDisplaySafeVolumeWarning(int flags) { + if (mController == null) return; + try { + mController.displaySafeVolumeWarning(flags); + } catch (RemoteException e) { + Log.w(TAG, "Error calling displaySafeVolumeWarning", e); + } + } + + public void postVolumeChanged(int streamType, int flags) { + if (mController == null) return; + try { + mController.volumeChanged(streamType, flags); + } catch (RemoteException e) { + Log.w(TAG, "Error calling volumeChanged", e); + } + } + + public void postMasterVolumeChanged(int flags) { + if (mController == null) return; + try { + mController.masterVolumeChanged(flags); + } catch (RemoteException e) { + Log.w(TAG, "Error calling masterVolumeChanged", e); + } + } - public void postHasNewRemotePlaybackInfo(); + public void postMasterMuteChanged(int flags) { + if (mController == null) return; + try { + mController.masterMuteChanged(flags); + } catch (RemoteException e) { + Log.w(TAG, "Error calling masterMuteChanged", e); + } + } - public void postRemoteVolumeChanged(int streamType, int flags); + public void setLayoutDirection(int layoutDirection) { + if (mController == null) return; + try { + mController.setLayoutDirection(layoutDirection); + } catch (RemoteException e) { + Log.w(TAG, "Error calling setLayoutDirection", e); + } + } - public void postRemoteSliderVisibility(boolean visible); -} + public void postDismiss() { + if (mController == null) return; + try { + mController.dismiss(); + } catch (RemoteException e) { + Log.w(TAG, "Error calling dismiss", e); + } + } +}
\ No newline at end of file |