summaryrefslogtreecommitdiff
path: root/media/java/android/media/VolumeController.java
diff options
context:
space:
mode:
Diffstat (limited to 'media/java/android/media/VolumeController.java')
-rw-r--r--media/java/android/media/VolumeController.java118
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