私は自分のマネージャークラス内で音声認識マネージャーを構築しようとしています。TTS(Text to Speech):自分のクラスのマネージャー
は現在、私のコードは次のようになります。TTSモジュールを初期化しようとしたとき
public class TTSManager extends Activity implements OnInitListener{
private TextToSpeech myTTS;
private int MY_DATA_CHECK_CODE = 0;
private boolean readyToSpeak = false;
public TTSManager()
{
;
}
public void checkIfTTSModulesInstalled()
{
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
}
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
{
// success, create the TTS instance
myTTS = new TextToSpeech(this, this);
}
else
{
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
@Override
public void onInit(int status)
{
if (status == TextToSpeech.SUCCESS)
{
if(myTTS.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE)
{
myTTS.setLanguage(Locale.US);
readyToSpeak = true;
}
}
}
public void speak(String text)
{
if (readyToSpeak)
myTTS.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}
は、残念ながら私は、nullポインタ例外を受けています。 TTSマネージャを構築するにはどうすればよいですか?TTSマネージャを独自のクラスにするにはどうしたらいいですか?
こんにちは、TTSが別の方法でインストールされているかどうかを確認しています。特定のパッケージ(-name)がインストールされているかどうかを確認するだけですか? – nr1
特定のTTSエンジンがインストールされているかどうかを確認していますが、デフォルトのエンジンを使用している場合は、その必要はありません。 'startActivityForResult()'を使用してTTSデータがインストールされているかどうかを確認する場合は、 'onActivityResult()'が実際のアクティビティに含まれている必要があります。重要なことは、マネージャは 'TextToSpeech'オブジェクトをホストし、初期化、設定、破棄を行うことができますが、アクティビティによってトリガされる必要があることです。 –
もう1つ質問:TTSが利用可能かどうかを確認するための安全な方法がありますか?特定のパッケージ(名前)がデバイスで使用可能かどうかを確認するだけでは十分ではありませんか? – nr1