17898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/*
27898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Copyright (C) 2009 The Android Open Source Project
37898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project *
47898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
57898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * you may not use this file except in compliance with the License.
67898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * You may obtain a copy of the License at
77898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project *
87898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
97898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project *
107898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
117898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
127898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * See the License for the specific language governing permissions and
147898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * limitations under the License.
157898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */
167898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
177898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectpackage com.android.inputmethod.pinyin;
187898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
197898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.content.Context;
207898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.media.AudioManager;
217898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
227898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/**
237898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Class used to manage related sound resources.
247898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */
257898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectpublic class SoundManager {
267898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    private static SoundManager mInstance = null;
277898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    private Context mContext;
287898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    private AudioManager mAudioManager;
29256dc3edea464afb7696d807791cd12ac2be3c2bEric Laurent    // Align sound effect volume on music volume
30256dc3edea464afb7696d807791cd12ac2be3c2bEric Laurent    private final float FX_VOLUME = -1.0f;
317898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    private boolean mSilentMode;
327898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
337898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    private SoundManager(Context context) {
347898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        mContext = context;
357898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        updateRingerMode();
367898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    }
377898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
387898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    public void updateRingerMode() {
397898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        if (mAudioManager == null) {
407898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            mAudioManager = (AudioManager) mContext
417898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project                    .getSystemService(Context.AUDIO_SERVICE);
427898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        }
437898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        mSilentMode = (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL);
447898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    }
457898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
467898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    public static SoundManager getInstance(Context context) {
477898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        if (null == mInstance) {
487898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            if (null != context) {
497898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project                mInstance = new SoundManager(context);
507898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            }
517898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        }
527898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        return mInstance;
537898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    }
547898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project
557898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    public void playKeyDown() {
567898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        if (mAudioManager == null) {
577898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            updateRingerMode();
587898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        }
597898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        if (!mSilentMode) {
607898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            int sound = AudioManager.FX_KEYPRESS_STANDARD;
617898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project            mAudioManager.playSoundEffect(sound, FX_VOLUME);
627898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project        }
637898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project    }
647898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project}
65