Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 使用ToneGenerator編寫按鍵發聲功能

Android 使用ToneGenerator編寫按鍵發聲功能

編輯:關於Android編程

今天給大家介紹的是怎麼樣使用ToneGenerator編寫按鍵發聲功能,這個在我們開發的時候用到的地方很多(例如電話鍵盤按鍵),那麼我們就來看看吧,下面我們就用一個例子來說說怎麼樣能實現這個功能。

package com.jeavox.testtonegenerator;

import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.provider.Settings;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
private Button btn, btn2, btn3;
private int value;

private ToneGenerator mToneGenerator;
private Object mToneGeneratorLock = new Object(); // 監視器對象鎖
private boolean mDTMFToneEnabled; // 按鍵操作音
private static final int TONE_LENGTH_MS = 150; // 延遲時間
private AudioManager mAudioManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn.setText(value + "");
playTone(value);
value++;
if (value > 9) {
value = 0;
}
}
});

btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playTone(42); // *: 42
}
});

btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playTone(35); // #: 35
}
});

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mDTMFToneEnabled = Settings.System.getInt(getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
synchronized (mToneGeneratorLock) {
if (mToneGenerator == null) {
try {
mToneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 80);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
e.printStackTrace();
mToneGenerator = null;
}
}
}
}

// 播放按鍵聲音
void playTone(int tone) {
if (!mDTMFToneEnabled) {
return;
}

int ringerMode = mAudioManager.getRingerMode();
if ((ringerMode == AudioManager.RINGER_MODE_SILENT) || (ringerMode == AudioManager.RINGER_MODE_VIBRATE)) {
// 靜音或者震動時不發出按鍵聲音
return;
}

synchronized (mToneGeneratorLock) {
if (mToneGenerator == null) {
return;
}
mToneGenerator.startTone(tone, TONE_LENGTH_MS); // 發聲
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved