diff options
| -rw-r--r-- | media/java/android/media/AudioRecord.java | 55 | ||||
| -rw-r--r-- | media/java/android/media/AudioTrack.java | 55 | ||||
| -rw-r--r-- | media/java/android/media/MediaPlayer.java | 33 | ||||
| -rw-r--r-- | media/java/android/media/NativeRoutingEventHandlerDelegate.java | 51 | 
4 files changed, 55 insertions, 139 deletions
| diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index 0906ba50f7df..27784e96d9f9 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -1516,66 +1516,13 @@ public class AudioRecord implements AudioRouting      }      /** -     * Helper class to handle the forwarding of native events to the appropriate listener -     * (potentially) handled in a different thread -     */ -    private class NativeRoutingEventHandlerDelegate { -        private final Handler mHandler; - -        NativeRoutingEventHandlerDelegate(final AudioRecord record, -                                   final AudioRouting.OnRoutingChangedListener listener, -                                   Handler handler) { -            // find the looper for our new event handler -            Looper looper; -            if (handler != null) { -                looper = handler.getLooper(); -            } else { -                // no given handler, use the looper the AudioRecord was created in -                looper = mInitializationLooper; -            } - -            // construct the event handler with this looper -            if (looper != null) { -                // implement the event handler delegate -                mHandler = new Handler(looper) { -                    @Override -                    public void handleMessage(Message msg) { -                        if (record == null) { -                            return; -                        } -                        switch(msg.what) { -                        case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE: -                            if (listener != null) { -                                listener.onRoutingChanged(record); -                            } -                            break; -                        default: -                            loge("Unknown native event type: " + msg.what); -                            break; -                        } -                    } -                }; -            } else { -                mHandler = null; -            } -        } - -        Handler getHandler() { -            return mHandler; -        } -    } - -    /**       * Sends device list change notification to all listeners.       */      private void broadcastRoutingChange() {          AudioManager.resetAudioPortGeneration();          synchronized (mRoutingChangeListeners) {              for (NativeRoutingEventHandlerDelegate delegate : mRoutingChangeListeners.values()) { -                Handler handler = delegate.getHandler(); -                if (handler != null) { -                    handler.sendEmptyMessage(AudioSystem.NATIVE_EVENT_ROUTING_CHANGE); -                } +                delegate.notifyClient();              }          }      } diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 50145f8a9886..e535fdf53d01 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -2856,10 +2856,7 @@ public class AudioTrack extends PlayerBase          AudioManager.resetAudioPortGeneration();          synchronized (mRoutingChangeListeners) {              for (NativeRoutingEventHandlerDelegate delegate : mRoutingChangeListeners.values()) { -                Handler handler = delegate.getHandler(); -                if (handler != null) { -                    handler.sendEmptyMessage(AudioSystem.NATIVE_EVENT_ROUTING_CHANGE); -                } +                delegate.notifyClient();              }          }      } @@ -2943,56 +2940,6 @@ public class AudioTrack extends PlayerBase          }      } -    /** -     * Helper class to handle the forwarding of native events to the appropriate listener -     * (potentially) handled in a different thread -     */ -    private class NativeRoutingEventHandlerDelegate { -        private final Handler mHandler; - -        NativeRoutingEventHandlerDelegate(final AudioTrack track, -                                   final AudioRouting.OnRoutingChangedListener listener, -                                   Handler handler) { -            // find the looper for our new event handler -            Looper looper; -            if (handler != null) { -                looper = handler.getLooper(); -            } else { -                // no given handler, use the looper the AudioTrack was created in -                looper = mInitializationLooper; -            } - -            // construct the event handler with this looper -            if (looper != null) { -                // implement the event handler delegate -                mHandler = new Handler(looper) { -                    @Override -                    public void handleMessage(Message msg) { -                        if (track == null) { -                            return; -                        } -                        switch(msg.what) { -                        case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE: -                            if (listener != null) { -                                listener.onRoutingChanged(track); -                            } -                            break; -                        default: -                            loge("Unknown native event type: " + msg.what); -                            break; -                        } -                    } -                }; -            } else { -                mHandler = null; -            } -        } - -        Handler getHandler() { -            return mHandler; -        } -    } -      //---------------------------------------------------------      // Methods for IPlayer interface      //-------------------- diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index 649c091b1fd4..1bc3dfa4bdbc 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -1514,7 +1514,8 @@ public class MediaPlayer extends PlayerBase              if (listener != null && !mRoutingChangeListeners.containsKey(listener)) {                  enableNativeRoutingCallbacksLocked(true);                  mRoutingChangeListeners.put( -                        listener, new NativeRoutingEventHandlerDelegate(this, listener, handler)); +                        listener, new NativeRoutingEventHandlerDelegate(this, listener, +                                handler != null ? handler : mEventHandler));              }          }      } @@ -1535,36 +1536,6 @@ public class MediaPlayer extends PlayerBase          }      } -    /** -     * Helper class to handle the forwarding of native events to the appropriate listener -     * (potentially) handled in a different thread -     */ -    private class NativeRoutingEventHandlerDelegate { -        private MediaPlayer mMediaPlayer; -        private AudioRouting.OnRoutingChangedListener mOnRoutingChangedListener; -        private Handler mHandler; - -        NativeRoutingEventHandlerDelegate(final MediaPlayer mediaPlayer, -                final AudioRouting.OnRoutingChangedListener listener, Handler handler) { -            mMediaPlayer = mediaPlayer; -            mOnRoutingChangedListener = listener; -            mHandler = handler != null ? handler : mEventHandler; -        } - -        void notifyClient() { -            if (mHandler != null) { -                mHandler.post(new Runnable() { -                    @Override -                    public void run() { -                        if (mOnRoutingChangedListener != null) { -                            mOnRoutingChangedListener.onRoutingChanged(mMediaPlayer); -                        } -                    } -                }); -            } -        } -    } -      private native final boolean native_setOutputDevice(int deviceId);      private native final int native_getRoutedDeviceId();      private native final void native_enableDeviceCallback(boolean enabled); diff --git a/media/java/android/media/NativeRoutingEventHandlerDelegate.java b/media/java/android/media/NativeRoutingEventHandlerDelegate.java new file mode 100644 index 000000000000..9a6baf17e860 --- /dev/null +++ b/media/java/android/media/NativeRoutingEventHandlerDelegate.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2017 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. + * You may obtain a copy of the License at + * + *      http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.media; + +import android.os.Handler; + +/** + * Helper class {@link AudioTrack}, {@link AudioRecord}, {@link MediaPlayer} and {@link MediaRecorder} + * to handle the forwarding of native events to the appropriate listener + * (potentially) handled in a different thread. + * @hide + */ +class NativeRoutingEventHandlerDelegate { +    private AudioRouting mAudioRouting; +    private AudioRouting.OnRoutingChangedListener mOnRoutingChangedListener; +    private Handler mHandler; + +    NativeRoutingEventHandlerDelegate(final AudioRouting audioRouting, +            final AudioRouting.OnRoutingChangedListener listener, Handler handler) { +        mAudioRouting = audioRouting; +        mOnRoutingChangedListener = listener; +        mHandler = handler; +    } + +    void notifyClient() { +        if (mHandler != null) { +            mHandler.post(new Runnable() { +                @Override +                public void run() { +                    if (mOnRoutingChangedListener != null) { +                        mOnRoutingChangedListener.onRoutingChanged(mAudioRouting); +                    } +                } +            }); +        } +    } +} |