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