N2TTS Debug

  • 使い方:

    • 新規プロジェクトを立ち上げ、自動生成されたMainActivityの1行目を残し、以下のコードを丸々コピペしてください。

    • Android Studioが出すエラーを一つずつ解決してください(基本的にはライブラリのimportだけのはず)

    • 以前はimport文も載せてましたが、Androidのライブラリがどんどん更新されていくため、このようなエラー解決をしてもらうことにしました

  • 使用条件:

    • N2TTSをインストールしてください。

    • N2TTSの音声アドオンをすべて入れてください。

  • 概要

    • N2TTSの各種音声動作確認をします。

    • RadioGroupとRadioButtonをすべてコードで生成するサンプルでもあります。

    • 表示されたリストをクリックすると、TTSの初期化完了を待ってから、しゃべります。

    • コードは最適化されていません。ゴミがあるかもしれません。

    • 音声はNotificationを使用しています。

    • もし音がならないようなら、コード内の_caseに1をセットしてください。Musicを使う設定に変わります。

public class MainActivity extends AppCompatActivity {

private SharedPreferences sp = null;

private String voice = "";

private TextToSpeech mTts = null;

private boolean tts_ok = false;

private Handler handler = new Handler(Looper.getMainLooper());

private Runnable runnable = null;

private Bundle myBundle = null;

private boolean onoff = false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if(sp==null){

sp = getSharedPreferences("setting", MODE_PRIVATE);

}

RadioGroup rg = new RadioGroup(this);

rg = genRadioButton(rg, "default");

rg = genRadioButton(rg, "ma001");

rg = genRadioButton(rg, "ma002");

rg = genRadioButton(rg, "ma003");

rg = genRadioButton(rg, "ma004");

rg = genRadioButton(rg, "ma005");

rg = genRadioButton(rg, "mb001");

rg = genRadioButton(rg, "mb002");

rg = genRadioButton(rg, "mb003");

rg = genRadioButton(rg, "mb004");

rg = genRadioButton(rg, "mb005");

rg = genRadioButton(rg, "fa001");

rg = genRadioButton(rg, "fa002");

rg = genRadioButton(rg, "fa003");

rg = genRadioButton(rg, "fa004");

rg = genRadioButton(rg, "fa005");

rg = genRadioButton(rg, "fb001");

rg = genRadioButton(rg, "fb002");

rg = genRadioButton(rg, "fb003");

rg = genRadioButton(rg, "fb004");

rg = genRadioButton(rg, "fb005");

setContentView(rg);

String TAG = "DEBUG";

int _case = 0;

if(myBundle==null){

myBundle = new Bundle();

if(_case == 0){

myBundle.putString("KEY_PARAM_STREAM", String.valueOf(AudioManager.STREAM_NOTIFICATION));

Log.d(TAG, "myBundle : NOTIFICATION");

}else{

myBundle.putString("KEY_PARAM_STREAM", String.valueOf(AudioManager.STREAM_MUSIC));

Log.d(TAG, "myBundle : MUSIC");

}

myBundle.putString("KEY_PARAM_VOLUME", String.valueOf(1.0f));

myBundle.putString("KEY_PARAM_PAN", String.valueOf(0.0f));

}

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

RadioButton rb = (RadioButton) findViewById(checkedId);

/*Toast.makeText(getApplicationContext(),

String.format("checked -> %s", rb.getText().toString()),

Toast.LENGTH_SHORT).show();*/

voice = rb.getText().toString();

mTts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener(){

@Override

public void onInit(int status){

if(status==TextToSpeech.SUCCESS){

if(mTts.isLanguageAvailable(Locale.JAPAN) >= TextToSpeech.LANG_AVAILABLE ||

mTts.isLanguageAvailable(Locale.JAPANESE) >= TextToSpeech.LANG_AVAILABLE){

if(voice.equals("default")){

mTts.setLanguage(Locale.JAPANESE);

}else{

Locale locale = new Locale(Locale.JAPAN.getLanguage(),

Locale.JAPAN.getCountry(), voice);

mTts.setLanguage(locale);

}

tts_ok = true;

onoff = true;

}

}

}

}, "jp.kddilabs.n2tts");

}

});

runnable = new Runnable() {

@Override

public void run() {

if(tts_ok && onoff){

if(Build.VERSION.SDK_INT >= 21){

mTts.speak("今日も一日お疲れ様ですぅ。", TextToSpeech.QUEUE_FLUSH, myBundle, "1");

onoff = false;

}

}

handler.removeCallbacks(runnable);

handler.postDelayed(runnable, 500);

}

};

handler.postDelayed(runnable, 500);

}

public RadioGroup genRadioButton(RadioGroup rg, String name){

RadioButton rb = new RadioButton(this);

rb.setText(name);

rg.addView(rb);

return rg;

}

}