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