android - 如何在 GPS LocationListener 中将 Android 文本转语音?

标签 android gps text-to-speech

是否可以在 LocatioListener 类中打开文本到语音功能??

我正在尝试让 Android 应用程序检测您移动了多远。我能够打开 GPS,并监控位置移动。我想让它说“你已经移动了 300 米”。将它放在 OnLocation 方法中会非常方便,但是当我尝试实例化 texttospeech 时它会提示??

这就是我正在尝试的:

public class Location implements LocationListener {
    static TextToSpeech talk;
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub

//This 在下一行对我大喊大叫,不让我使用“this”作为上下文? (也尝试了 Location.this)

        talk = new TextToSpeech(this, new extToSpeech.OnInitListener() {
        public void onInit(int status) {
            // TODO Auto-generated method stub

            talk.setLanguage(Locale.UK);
            Location aloc = new Location("aloc");
            Location bloc = new Location("bloc");
            aloc.setLatitude(alat);
            aloc.setLongitude(alon);
            bloc.setLatitude(blat);
            bloc.setLongitude(blon);

            float distance = aloc.distanceTo(bloc);
            talk.speak("You Moved..", TextToSpeech.QUEUE_FLUSH, null);
            }
    });     


}

public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

最佳答案

为了初始化 TTS 引擎,您需要引用一个 Context。因此它不适用于 thisLocation.this,因为它们都引用了 Location 类的运行实例,这显然是 不是 Context(或其子类)。

也就是说,有多种选择。

  1. 如果您将 Location 类用作匿名内部类或非静态内部类,例如Activity(或您可以获取对 Context 对象的引用的任何其他类),您可以使用对外部类的引用来初始化 TTS 引擎。
  2. 与其尝试直接在Location 类中初始化 TTS 引擎,不如在您确实Context 引用的地方初始化它;例如您请求 LocationManager 的同一位置(您已经需要一个 Context 引用)。
  3. 创建 TTS 引擎的集中实例。您可以将其设置为单例,但也可以将 Application 子类化并将其保留在那里。初始化后,您可以在任何地方或多或少地获取和使用它。

关于android - 如何在 GPS LocationListener 中将 Android 文本转语音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508945/

相关文章:

android - 如何在 Android 中编辑和保存大位图?目前将其写成图 block ,但将它们重新组合在一起的速度很慢

android - Gradle | Jacoco 任务 |测试报告

android - 使用融合位置获取卫星数量

ios - iPhone Xcode PDF map 位置 GPS

java - 如何为运行最新操作系统 Sierra 的 iMac 安装和设置 Java 语音 (jsapi)?

android - RecognitionListener 中 onRmsChanged 的​​最大值是多少

Android HCE 响应 6A82

android - 在内部存储上的应用程序包中创建目录

android - 通过短信发送我的当前位置 - Android

c# - 在 C# 中更改输出语音