0

デバイスの起動時にサービスを実行しています。いくつかのデータをチェックし、通知を送信します。私は以下に出くわしました。

http://mobile.tutsplus.com/tutorials/android/android-sdk-using-the-text-to-speech-engine/

音声通知を送信したい。UI部分は必要ありません。プロジェクトに追加するにはどうすればよいですか?

  1. 別の Java クラス (サービスから Activity を呼び出す)
  2. 内部クラス
4

2 に答える 2

1

クラスAppとその中に のインスタンスを作成しますTextToSpeech

public class App extends Application {
    private static TextToSpeech mTts;

    public static TextToSpeech getmTts() {
        return mTts;
    }

    public void onCreate() {
        super.onCreate();

        // creating TTS:
        mTts = new TextToSpeech(this, this);
        mTts.setLanguage(Locale.US);
        mTts.stop();
    }
}      

マニフェストで (上記) を宣言Appします。

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name="your.application.package.App" >

たとえば、次のよう broadcastにしたい場合は、サービスで送信します。BroadcastReceiver

public class TTSReceiver extends BroadcastReceiver implements OnInitListener {

    private TextToSpeech mTts;
    private String message;

    @Override
    public void onReceive(Context context, Intent intent) {
        mTts = App.getmTts();
        mTts.setLanguage(Locale.US);
        message = "your message";
        mTts.stop();
        mTts.speak(message, TextToSpeech.QUEUE_FLUSH, null);
    }

    public void onInit(int status) {
    }

}
于 2012-08-24T15:46:12.113 に答える
0
public class SpeakService extends Service implements OnInitListener {

     public static TextToSpeech tts;
     private String string;

     @Override
     public IBinder onBind(Intent arg0) {
         return null;
     }

     @Override
     public void onCreate() {
         tts = new TextToSpeech(this, this);
         super.onCreate();
     }

     @Override
     public void onDestroy() {
         if (tts != null) {
             tts.stop();
             tts.shutdown();
         }
         super.onDestroy();
     }

     @Override
     public void onStart(Intent intent, int startId) {
       super.onStart(intent, startId);
       string = intent.getStringExtra("string");
     }

     @Override
     public void onInit(int status) {
       if (status == TextToSpeech.SUCCESS) {
         int result = tts.setLanguage(Locale.UK);
         if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.d("SpeakService", "Language is not available.");
         } else {
            if (!TextUtils.isEmpty(string)) {
                speak(string);
            } else {

                speak("Error");
            }
         }
       } else {
        Log.d("SpeakService", "Could not initialize TextToSpeech.");
     }
     }

     private void speak(String string) {
        tts.speak(string, TextToSpeech.QUEUE_FLUSH, null);
     }
于 2013-03-19T17:27:36.153 に答える