Java代码
private ToneGenerator mToneGenerator;
private Object mToneGeneratorLock = new Object();//监视器对象锁
private boolean mDTMFToneEnabled; //按键操作音
private static final int TONE_LENGTH_MS = 150;//延迟时间
void playTone(int tone) {
// TODO 播放按键声音
if (!mDTMFToneEnabled) {
return;
}
AudioManager audioManager = (AudioManager) getSystemService(***_SERVICE);
int ringerMode = ***gerMode();
if ((ringerMode == ***_MODE_SILENT)
|| (ringerMode == ***_MODE_VIBRATE)) {//静音或震动时不发出按键声音
return;
}
synchronized(mToneGeneratorLock) {
if (mToneGenerator == null) {
Log.w(TAG, "playTone: mToneGenerator == null, tone: "+tone);
return;
}
***one(tone, TONE_LENGTH_MS);//发声
}
}
protected void onResume(){
***me();
mDTMFToneEnabled = ***(getContentResolver(),
***_TONE_WHEN_DIALING, 1) == 1;//获取系统参数“按键操作音”是否开启
synchronized(mToneGeneratorLock) {
if (mToneGenerator == null) {
try {
mToneGenerator = new ToneGenerator(***_MUSIC, 80);
setVolumeControlStream(***_MUSIC);
} catch (RuntimeException e) {
Log.w(TAG, "Exception caught while creating local tone generator: " + e);
mToneGenerator = null;
}
}
}
}