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