Loading src/com/android/server/telecom/CallsManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -436,8 +436,10 @@ public class CallsManager extends Call.ListenerBase AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); InCallTonePlayer.MediaPlayerFactory mediaPlayerFactory = (resourceId, attributes) -> MediaPlayer.create(mContext, resourceId, attributes, audioManager.generateAudioSessionId()); (resourceId, attributes) -> new InCallTonePlayer.MediaPlayerAdapterImpl( MediaPlayer.create(mContext, resourceId, attributes, audioManager.generateAudioSessionId())); InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0); Loading src/com/android/server/telecom/InCallTonePlayer.java +43 −2 Original line number Diff line number Diff line Loading @@ -76,8 +76,49 @@ public class InCallTonePlayer extends Thread { ToneGenerator get (int streamType, int volume); } public interface MediaPlayerAdapter { void setLooping(boolean isLooping); void setOnCompletionListener(MediaPlayer.OnCompletionListener listener); void start(); void release(); int getDuration(); } public static class MediaPlayerAdapterImpl implements MediaPlayerAdapter { private MediaPlayer mMediaPlayer; public MediaPlayerAdapterImpl(MediaPlayer mediaPlayer) { mMediaPlayer = mediaPlayer; } @Override public void setLooping(boolean isLooping) { mMediaPlayer.setLooping(isLooping); } @Override public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) { mMediaPlayer.setOnCompletionListener(listener); } @Override public void start() { mMediaPlayer.start(); } @Override public void release() { mMediaPlayer.release(); } @Override public int getDuration() { return mMediaPlayer.getDuration(); } } public interface MediaPlayerFactory { MediaPlayer get (int resourceId, AudioAttributes attributes); MediaPlayerAdapter get (int resourceId, AudioAttributes attributes); } public interface AudioManagerAdapter { Loading Loading @@ -136,7 +177,7 @@ public class InCallTonePlayer extends Thread { private int mState; /** For tones which are not generated using ToneGenerator. */ private MediaPlayer mToneMediaPlayer = null; private MediaPlayerAdapter mToneMediaPlayer = null; /** Telecom lock object. */ private final TelecomSystem.SyncRoot mLock; Loading tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java +35 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.telecom.tests; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; Loading Loading @@ -56,7 +57,35 @@ public class InCallTonePlayerTest extends TelecomTestCase { @Mock private InCallTonePlayer.ToneGeneratorFactory mToneGeneratorFactory; private MediaPlayer mMediaPlayer; private InCallTonePlayer.MediaPlayerAdapter mMediaPlayerAdapter = new InCallTonePlayer.MediaPlayerAdapter() { private MediaPlayer.OnCompletionListener mListener; @Override public void setLooping(boolean isLooping) { // Do nothing. } @Override public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) { mListener = listener; } @Override public void start() { mListener.onCompletion(null); } @Override public void release() { // Do nothing. } @Override public int getDuration() { return 0; } }; @Mock private InCallTonePlayer.MediaPlayerFactory mMediaPlayerFactory; Loading @@ -71,14 +100,13 @@ public class InCallTonePlayerTest extends TelecomTestCase { @Before public void setUp() throws Exception { super.setUp(); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter); mFactory.setCallAudioManager(mCallAudioManager); when(mToneGeneratorFactory.get(anyInt(), anyInt())).thenReturn(mToneGenerator); when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayerAdapter); mMediaPlayer = new MediaPlayer(); when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayer); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter); mFactory.setCallAudioManager(mCallAudioManager); } @SmallTest Loading Loading
src/com/android/server/telecom/CallsManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -436,8 +436,10 @@ public class CallsManager extends Call.ListenerBase AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); InCallTonePlayer.MediaPlayerFactory mediaPlayerFactory = (resourceId, attributes) -> MediaPlayer.create(mContext, resourceId, attributes, audioManager.generateAudioSessionId()); (resourceId, attributes) -> new InCallTonePlayer.MediaPlayerAdapterImpl( MediaPlayer.create(mContext, resourceId, attributes, audioManager.generateAudioSessionId())); InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0); Loading
src/com/android/server/telecom/InCallTonePlayer.java +43 −2 Original line number Diff line number Diff line Loading @@ -76,8 +76,49 @@ public class InCallTonePlayer extends Thread { ToneGenerator get (int streamType, int volume); } public interface MediaPlayerAdapter { void setLooping(boolean isLooping); void setOnCompletionListener(MediaPlayer.OnCompletionListener listener); void start(); void release(); int getDuration(); } public static class MediaPlayerAdapterImpl implements MediaPlayerAdapter { private MediaPlayer mMediaPlayer; public MediaPlayerAdapterImpl(MediaPlayer mediaPlayer) { mMediaPlayer = mediaPlayer; } @Override public void setLooping(boolean isLooping) { mMediaPlayer.setLooping(isLooping); } @Override public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) { mMediaPlayer.setOnCompletionListener(listener); } @Override public void start() { mMediaPlayer.start(); } @Override public void release() { mMediaPlayer.release(); } @Override public int getDuration() { return mMediaPlayer.getDuration(); } } public interface MediaPlayerFactory { MediaPlayer get (int resourceId, AudioAttributes attributes); MediaPlayerAdapter get (int resourceId, AudioAttributes attributes); } public interface AudioManagerAdapter { Loading Loading @@ -136,7 +177,7 @@ public class InCallTonePlayer extends Thread { private int mState; /** For tones which are not generated using ToneGenerator. */ private MediaPlayer mToneMediaPlayer = null; private MediaPlayerAdapter mToneMediaPlayer = null; /** Telecom lock object. */ private final TelecomSystem.SyncRoot mLock; Loading
tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java +35 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.telecom.tests; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; Loading Loading @@ -56,7 +57,35 @@ public class InCallTonePlayerTest extends TelecomTestCase { @Mock private InCallTonePlayer.ToneGeneratorFactory mToneGeneratorFactory; private MediaPlayer mMediaPlayer; private InCallTonePlayer.MediaPlayerAdapter mMediaPlayerAdapter = new InCallTonePlayer.MediaPlayerAdapter() { private MediaPlayer.OnCompletionListener mListener; @Override public void setLooping(boolean isLooping) { // Do nothing. } @Override public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) { mListener = listener; } @Override public void start() { mListener.onCompletion(null); } @Override public void release() { // Do nothing. } @Override public int getDuration() { return 0; } }; @Mock private InCallTonePlayer.MediaPlayerFactory mMediaPlayerFactory; Loading @@ -71,14 +100,13 @@ public class InCallTonePlayerTest extends TelecomTestCase { @Before public void setUp() throws Exception { super.setUp(); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter); mFactory.setCallAudioManager(mCallAudioManager); when(mToneGeneratorFactory.get(anyInt(), anyInt())).thenReturn(mToneGenerator); when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayerAdapter); mMediaPlayer = new MediaPlayer(); when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayer); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter); mFactory.setCallAudioManager(mCallAudioManager); } @SmallTest Loading