CarAudioManager.java revision 5672e85bdf82f6a2350afb942dfe17b7c699af87
1a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung/* 2a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * Copyright (C) 2015 The Android Open Source Project 3a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * 4a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * Licensed under the Apache License, Version 2.0 (the "License"); 5a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * you may not use this file except in compliance with the License. 6a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * You may obtain a copy of the License at 7a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * 8a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * http://www.apache.org/licenses/LICENSE-2.0 9a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * 10a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * Unless required by applicable law or agreed to in writing, software 11a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * distributed under the License is distributed on an "AS IS" BASIS, 12a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * See the License for the specific language governing permissions and 14a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung * limitations under the License. 15a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung */ 16a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoungpackage android.support.car.media; 17a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 18a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoungimport android.media.AudioAttributes; 195672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Parkimport android.os.RemoteException; 205672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Parkimport android.support.annotation.IntDef; 21a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoungimport android.support.car.CarManagerBase; 22a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 235672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Parkimport java.lang.annotation.Retention; 245672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Parkimport java.lang.annotation.RetentionPolicy; 255672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park 265672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park/** 275672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * APIs for handling car specific audio stuffs. 285672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 29a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoungpublic class CarAudioManager implements CarManagerBase { 30a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 31a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung /** 325672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for unspecified type. 335672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 345672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_DEFAULT = 0; 355672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 365672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for playing music. 375672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 385672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_MUSIC = 1; 395672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 405672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for H/W radio. 415672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 425672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_RADIO = 2; 435672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 445672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for playing navigation guidance. 455672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 465672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_NAVIGATION_GUIDANCE = 3; 475672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 485672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for voice call 495672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 505672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_VOICE_CALL = 4; 515672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 525672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for voice search or voice command. 535672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 545672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_VOICE_COMMAND = 5; 555672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 565672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for playing alarm. 57a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung */ 585672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_ALARM = 6; 595672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 605672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for notification sound. 615672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 625672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_NOTIFICATION = 7; 635672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 645672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for system sound like UI feedback. 655672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 665672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_SYSTEM_SOUND = 8; 675672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 685672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Audio usage for playing safety alert. 695672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 705672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_SYSTEM_SAFETY_ALERT = 9; 715672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park 725672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** @hide */ 735672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public static final int CAR_AUDIO_USAGE_MAX = CAR_AUDIO_USAGE_SYSTEM_SAFETY_ALERT; 745672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park 755672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** @hide */ 765672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park @IntDef({CAR_AUDIO_USAGE_DEFAULT, CAR_AUDIO_USAGE_MUSIC, CAR_AUDIO_USAGE_RADIO, 775672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park CAR_AUDIO_USAGE_NAVIGATION_GUIDANCE, CAR_AUDIO_USAGE_VOICE_CALL, 785672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park CAR_AUDIO_USAGE_VOICE_COMMAND, CAR_AUDIO_USAGE_ALARM, CAR_AUDIO_USAGE_NOTIFICATION, 795672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park CAR_AUDIO_USAGE_SYSTEM_SOUND, CAR_AUDIO_USAGE_SYSTEM_SAFETY_ALERT}) 805672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park @Retention(RetentionPolicy.SOURCE) 815672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public @interface CarAudioUsage {} 82a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 83a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung private final ICarAudio mService; 84a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 855672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park /** 865672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * Get {@link AudioAttrbutes} relevant for the given usage in car. 875672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * @param carUsage 885672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park * @return 895672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park */ 905672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park public AudioAttributes getAudioAttributesForCarUsage(@CarAudioUsage int carUsage) { 915672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park try { 925672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park return mService.getAudioAttributesForCarUsage(carUsage); 935672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park } catch (RemoteException e) { 945672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park AudioAttributes.Builder builder = new AudioAttributes.Builder(); 955672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park return builder.setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN). 965672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park setUsage(AudioAttributes.USAGE_UNKNOWN).build(); 975672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park } 985672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park } 995672e85bdf82f6a2350afb942dfe17b7c699af87Keun-young Park 100a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung @Override 101a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung public void onCarDisconnected() { 102a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung // TODO Auto-generated method stub 103a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung } 104a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung 105a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung /** @hide */ 106a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung public CarAudioManager(ICarAudio service) { 107a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung mService = service; 108a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung } 109a74b9caa2fb6435f1c01c5e8766b89235c4e3d5akeunyoung} 110