19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.media;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Triviimport android.app.PendingIntent;
20b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurentimport android.bluetooth.BluetoothDevice;
21d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Triviimport android.content.ComponentName;
22632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.AudioRoutesInfo;
23d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Triviimport android.media.IAudioFocusDispatcher;
24632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.IAudioRoutesObserver;
254426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlClient;
264426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlDisplay;
271357012968f9066ea3051d83995e9bac69526c3cJean-Michel Triviimport android.media.IRemoteVolumeObserver;
28098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.media.IRingtonePlayer;
29098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.net.Uri;
30c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Triviimport android.view.KeyEvent;
31d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IAudioService {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void adjustVolume(int direction, int flags);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
393114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void adjustLocalOrRemoteStreamVolume(int streamType, int direction);
403114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags);
42dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void adjustStreamVolume(int streamType, int direction, int flags);
44dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
455020e7e2d37865da862846b97d9959e83244a35eMike Lockwood    void adjustMasterVolume(int direction, int flags);
46dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setStreamVolume(int streamType, int index, int flags);
48a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
493114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void setRemoteStreamVolume(int index);
503114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
51a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood    void setMasterVolume(int index, int flags);
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
53a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent    void setStreamSolo(int streamType, boolean state, IBinder cb);
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
55a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent    void setStreamMute(int streamType, boolean state, IBinder cb);
5625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
5725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    boolean isStreamMute(int streamType);
5825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
590273af55cf68d54d26d154b44d105d40fed79701Justin Koh    void setMasterMute(boolean state, int flags, IBinder cb);
60cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
61cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood    boolean isMasterMute();
62cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getStreamVolume(int streamType);
645020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
65a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood    int getMasterVolume();
665020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getStreamMaxVolume(int streamType);
68a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
69a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood    int getMasterMaxVolume();
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    int getLastAudibleStreamVolume(int streamType);
7225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
73cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood    int getLastAudibleMasterVolume();
74cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRingerMode(int ringerMode);
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRingerMode();
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVibrateSetting(int vibrateType, int vibrateSetting);
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getVibrateSetting(int vibrateType);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean shouldVibrate(int vibrateType);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859272b4b4a44fe1f33e3030810618194f817caaecEric Laurent    void setMode(int mode, IBinder cb);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getMode();
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffect(int effectType);
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffectVolume(int effectType, float volume);
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean loadSoundEffects();
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void unloadSoundEffects();
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
974050c93601b3c3609b21cc1e18a29b64747e7fa9Eric Laurent    oneway void reloadAudioSettings();
98c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
99c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setSpeakerphoneOn(boolean on);
100c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
101c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isSpeakerphoneOn();
102c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
103c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setBluetoothScoOn(boolean on);
104c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
105c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isBluetoothScoOn();
106d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
1074ab22bb7d0aafce1be200153d71d432c9d54e04aEric Laurent    void setBluetoothA2dpOn(boolean on);
1087847211fb4699bf6018e29d214a918ed6657319bEric Laurent
1097847211fb4699bf6018e29d214a918ed6657319bEric Laurent    boolean isBluetoothA2dpOn();
1107847211fb4699bf6018e29d214a918ed6657319bEric Laurent
111d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi    int requestAudioFocus(int mainStreamType, int durationHint, IBinder cb, IAudioFocusDispatcher l,
1128f619182cb759718f64ab95fd6d61c16138f6952Jean-Michel Trivi            String clientId, String callingPackageName);
113d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
114d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi    int abandonAudioFocus(IAudioFocusDispatcher l, String clientId);
115d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
116d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi    void unregisterAudioFocusClient(String clientId);
117d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi
118c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi    oneway void dispatchMediaKeyEvent(in KeyEvent keyEvent);
119c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi    void dispatchMediaKeyEventUnderWakelock(in KeyEvent keyEvent);
120c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi
121f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Trivi    oneway void registerMediaButtonIntent(in PendingIntent pi, in ComponentName c);
122f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Trivi    oneway void unregisterMediaButtonIntent(in PendingIntent pi,  in ComponentName c);
123d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi
124722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi    oneway void registerMediaButtonEventReceiverForCalls(in ComponentName c);
125722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi    oneway void unregisterMediaButtonEventReceiverForCalls();
126722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi
1273114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    int registerRemoteControlClient(in PendingIntent mediaIntent,
128f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Trivi           in IRemoteControlClient rcClient, in String callingPackageName);
129f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Trivi    oneway void unregisterRemoteControlClient(in PendingIntent mediaIntent,
1304426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi           in IRemoteControlClient rcClient);
1318f619182cb759718f64ab95fd6d61c16138f6952Jean-Michel Trivi
1324426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void   registerRemoteControlDisplay(in IRemoteControlDisplay rcd);
1334426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void unregisterRemoteControlDisplay(in IRemoteControlDisplay rcd);
1344426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void remoteControlDisplayUsesBitmapSize(in IRemoteControlDisplay rcd, int w, int h);
1358f619182cb759718f64ab95fd6d61c16138f6952Jean-Michel Trivi
1363114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void setPlaybackInfoForRcc(int rccId, int what, int value);
1373114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi           int  getRemoteStreamMaxVolume();
1383114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi           int  getRemoteStreamVolume();
1391357012968f9066ea3051d83995e9bac69526c3cJean-Michel Trivi    oneway void registerRemoteVolumeObserverForRcc(int rccId, in IRemoteVolumeObserver rvo);
1403114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
1413def1eec2baed0b8845ec32c871e249dc533a9d9Eric Laurent    void startBluetoothSco(IBinder cb);
1423def1eec2baed0b8845ec32c871e249dc533a9d9Eric Laurent    void stopBluetoothSco(IBinder cb);
14345c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent
14445c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent    void forceVolumeControlStream(int streamType, IBinder cb);
1456d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent
146098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    void setRingtonePlayer(IRingtonePlayer player);
147098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    IRingtonePlayer getRingtonePlayer();
1486d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent    int getMasterStreamType();
149b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent
150b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent    void setWiredDeviceConnectionState(int device, int state, String name);
151b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent    int setBluetoothA2dpDeviceConnectionState(in BluetoothDevice device, int state);
152632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn
153632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn    AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
155