Files
frameworks_base/media/java/android/media/AudioRouting.java
Paul McLean ed36ca3d4f Native Audio Routing and (Java) AudioRouting (interface).
Adding AudioRouting (Java) interface for routing control
in AudioTrack and AudioRecord.
Deprecating current (Marshmallow) Routing APIs in
AudioTrack and AudioRecord.
Adding package-private constructors to AudioTrack and AudioRecord
to connect to native player/recorder.

Bug: 23899814
Change-Id: I7df7a687fbd56a34c1f5769ffe005eba2a059505
2016-01-15 15:59:37 -07:00

71 lines
2.8 KiB
Java

/*
* Copyright (C) 2016 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;
import android.os.Looper;
/**
* AudioRouting defines an interface for controlling routing and routing notifications in
* AudioTrack and AudioRecord objects.
*/
public interface AudioRouting {
/**
* Specifies an audio device (via an {@link AudioDeviceInfo} object) to route
* the output/input to/from.
* @param deviceInfo The {@link AudioDeviceInfo} specifying the audio sink or source.
* If deviceInfo is null, default routing is restored.
* @return true if succesful, false if the specified {@link AudioDeviceInfo} is non-null and
* does not correspond to a valid audio device.
*/
public boolean setPreferredDevice(AudioDeviceInfo deviceInfo);
/**
* Returns the selected output/input specified by {@link #setPreferredDevice}. Note that this
* is not guaranteed to correspond to the actual device being used for playback/recording.
*/
public AudioDeviceInfo getPreferredDevice();
/**
* Adds an {@link AudioRouting.OnRoutingChangedListener} to receive notifications of routing
* changes on this AudioTrack/AudioRecord.
* @param listener The {@link AudioRouting.OnRoutingChangedListener} interface to receive
* notifications of rerouting events.
* @param handler Specifies the {@link Handler} object for the thread on which to execute
* the callback. If <code>null</code>, the {@link Handler} associated with the main
* {@link Looper} will be used.
*/
public void addOnRoutingListener(OnRoutingChangedListener listener,
Handler handler);
/**
* Removes an {@link AudioRouting.OnRoutingChangedListener} which has been previously added
* to receive rerouting notifications.
* @param listener The previously added {@link AudioRouting.OnRoutingChangedListener} interface
* to remove.
*/
public void removeOnRoutingListener(OnRoutingChangedListener listener);
/**
* Defines the interface by which applications can receive notifications of routing
* changes for the associated {@link AudioRouting}.
*/
public interface OnRoutingChangedListener {
public void onRoutingChanged(AudioRouting router);
}
}