1 package com.xtremelabs.robolectric.shadows;
2 
3 import android.media.AudioManager;
4 import com.xtremelabs.robolectric.internal.Implementation;
5 import com.xtremelabs.robolectric.internal.Implements;
6 
7 @SuppressWarnings({"UnusedDeclaration"})
8 @Implements(AudioManager.class)
9 public class ShadowAudioManager {
10 
11     private int streamMaxVolume = 15;
12     private int streamVolume = 7;
13     private int flags;
14     private AudioFocusRequest lastAudioFocusRequest;
15     private int nextResponseValue = AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
16     private AudioManager.OnAudioFocusChangeListener lastAbandonedAudioFocusListener;
17 
18     @Implementation
getStreamMaxVolume(int streamType)19     public int getStreamMaxVolume(int streamType) {
20         return streamMaxVolume;
21     }
22 
23     @Implementation
getStreamVolume(int streamType)24     public int getStreamVolume(int streamType) {
25         return streamVolume;
26     }
27 
28     @Implementation
setStreamVolume(int streamType, int index, int flags)29     public void setStreamVolume(int streamType, int index, int flags) {
30         this.streamVolume = index;
31         this.flags = flags;
32     }
33 
34     @Implementation
requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener l, int streamType, int durationHint)35     public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener l, int streamType, int durationHint) {
36         lastAudioFocusRequest = new AudioFocusRequest(l, streamType, durationHint);
37         return nextResponseValue;
38     }
39 
40     @Implementation
abandonAudioFocus(AudioManager.OnAudioFocusChangeListener l)41     public int abandonAudioFocus(AudioManager.OnAudioFocusChangeListener l) {
42         lastAbandonedAudioFocusListener = l;
43         return nextResponseValue;
44     }
45 
getStreamMaxVolume()46     public int getStreamMaxVolume() {
47         return streamMaxVolume;
48     }
49 
setStreamMaxVolume(int streamMaxVolume)50     public void setStreamMaxVolume(int streamMaxVolume) {
51         this.streamMaxVolume = streamMaxVolume;
52     }
53 
getStreamVolume()54     public int getStreamVolume() {
55         return streamVolume;
56     }
57 
setStreamVolume(int streamVolume)58     public void setStreamVolume(int streamVolume) {
59         this.streamVolume = streamVolume;
60     }
61 
getFlags()62     public int getFlags() {
63         return flags;
64     }
65 
setFlags(int flags)66     public void setFlags(int flags) {
67         this.flags = flags;
68     }
69 
getLastAudioFocusRequest()70     public AudioFocusRequest getLastAudioFocusRequest() {
71         return lastAudioFocusRequest;
72     }
73 
setNextFocusRequestResponse(int nextResponseValue)74     public void setNextFocusRequestResponse(int nextResponseValue) {
75         this.nextResponseValue = nextResponseValue;
76     }
77 
getLastAbandonedAudioFocusListener()78     public AudioManager.OnAudioFocusChangeListener getLastAbandonedAudioFocusListener() {
79         return lastAbandonedAudioFocusListener;
80     }
81 
82     public static class AudioFocusRequest {
83         public final AudioManager.OnAudioFocusChangeListener listener;
84         public final int streamType;
85         public final int durationHint;
86 
AudioFocusRequest(AudioManager.OnAudioFocusChangeListener listener, int streamType, int durationHint)87         private AudioFocusRequest(AudioManager.OnAudioFocusChangeListener listener, int streamType, int durationHint) {
88             this.listener = listener;
89             this.streamType = streamType;
90             this.durationHint = durationHint;
91         }
92     }
93 }
94