10dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik/*
20dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * Copyright (C) 2014 The Android Open Source Project
30dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik *
40dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * Licensed under the Apache License, Version 2.0 (the "License");
50dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * you may not use this file except in compliance with the License.
60dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * You may obtain a copy of the License at
70dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik *
80dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik *      http://www.apache.org/licenses/LICENSE-2.0
90dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik *
100dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * Unless required by applicable law or agreed to in writing, software
110dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * distributed under the License is distributed on an "AS IS" BASIS,
120dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * See the License for the specific language governing permissions and
140dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * limitations under the License.
150dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik */
160dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErikpackage android.media;
170dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik
187c82ced4fc5b66c09a19eed9a5499039530142fbRoboErikimport android.os.IBinder;
197c82ced4fc5b66c09a19eed9a5499039530142fbRoboErik
200dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErikimport com.android.server.LocalServices;
210dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik
220dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik/**
230dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * Class for system services to access extra AudioManager functionality. The
240dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * AudioService is responsible for registering an implementation with
250dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * {@link LocalServices}.
260dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik *
270dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik * @hide
280dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik */
290dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErikpublic abstract class AudioManagerInternal {
300dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik
31272e161c1a200900cb10b5b0cdab8ae1f123cabdRoboErik    public abstract void adjustSuggestedStreamVolumeForUid(int streamType, int direction,
32272e161c1a200900cb10b5b0cdab8ae1f123cabdRoboErik            int flags,
33272e161c1a200900cb10b5b0cdab8ae1f123cabdRoboErik            String callingPackage, int uid);
34272e161c1a200900cb10b5b0cdab8ae1f123cabdRoboErik
350dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik    public abstract void adjustStreamVolumeForUid(int streamType, int direction, int flags,
360dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik            String callingPackage, int uid);
370dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik
380dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik    public abstract void setStreamVolumeForUid(int streamType, int direction, int flags,
390dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik            String callingPackage, int uid);
40519c7744b522aa07e12bc3244ac3de14aa2a4ad0RoboErik
41519c7744b522aa07e12bc3244ac3de14aa2a4ad0RoboErik    public abstract void adjustMasterVolumeForUid(int steps, int flags, String callingPackage,
42519c7744b522aa07e12bc3244ac3de14aa2a4ad0RoboErik            int uid);
43661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
447c82ced4fc5b66c09a19eed9a5499039530142fbRoboErik    public abstract void setMasterMuteForUid(boolean state, int flags, String callingPackage,
457c82ced4fc5b66c09a19eed9a5499039530142fbRoboErik            IBinder cb, int uid);
467c82ced4fc5b66c09a19eed9a5499039530142fbRoboErik
47661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    public abstract void setRingerModeDelegate(RingerModeDelegate delegate);
48661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
49661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    public abstract int getRingerModeInternal();
50661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
51661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    public abstract void setRingerModeInternal(int ringerMode, String caller);
52661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
53661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    public interface RingerModeDelegate {
54661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock        /** Called when external ringer mode is evaluated, returns the new internal ringer mode */
55661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock        int onSetRingerModeExternal(int ringerModeOld, int ringerModeNew, String caller,
56661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock                int ringerModeInternal);
57661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
58661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock        /** Called when internal ringer mode is evaluated, returns the new external ringer mode */
59661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock        int onSetRingerModeInternal(int ringerModeOld, int ringerModeNew, String caller,
60661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock                int ringerModeExternal);
61661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    }
620dac35af2c6aa42bcd181981b041747cfd1afa5fRoboErik}
63