0

我正在尝试将我的工作 TTS 服务代码从应用程序代码复制到穿戴代码但不起作用。

public class VoiceService extends Service implements 
TextToSpeech.OnInitListener, TextToSpeech.OnUtteranceCompletedListener {

private final String TAG = "VoiceService";

private final int LONG_DURATION = 5000;
private final int SHORT_DURATION = 1200;

private TextToSpeech mTts;
private String messageTitle;
private String messageContext;

@Override
public void onCreate() {
    Log.i(TAG, "onCreate");
    try{
        mTts = new TextToSpeech(this, this);
        mTts.setOnUtteranceCompletedListener(this);
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

@Override
public int onStartCommand(Intent intent, int flags, int startId){
    Log.i(TAG, "onStartCommand");
    messageTitle = ...
    messageContext = ...
    return super.onStartCommand(intent, flags, startId);

}

@Override
public void onInit(int status) {
    Log.i(TAG, "onInit & status = " + status);
    if (status == TextToSpeech.SUCCESS) {
        int result = mTts.setLanguage(Locale.getDefault());
        Log.i(TAG, "TextToSpeech.SUCCESS");
        if (result != TextToSpeech.LANG_MISSING_DATA
                && result != TextToSpeech.LANG_NOT_SUPPORTED
                && messageTitle.length() > 0
                ) {
            Log.i(TAG, "messageTitle.length() > 0");
            ...
        }
    }
}

@Override
public void onUtteranceCompleted(String uttId) {
    Log.i(TAG, "onUtteranceCompleted");
    messageTitle = "";
    messageContext = "";
    stopSelf();
}

@Override
public void onDestroy() {
    Log.i(TAG, "onDestroy");
    // Text to Speech engine was attached
    if (mTts != null) {
        mTts.stop();
        mTts.shutdown();
        mTts = null;
    }
    super.onDestroy();
}

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

...
}

日志简单如下:

I/VoiceService: onCreate
I/VoiceService: onInit & status = -1
I/VoiceService: onStartCommand

我不明白为什么 onInit 在 onStartCommand 之前出现,并且失败了,并且服务永远卡在那里......

我关注了一些线程并在 mainactivity 中运行以下代码:

PackageManager pm = getPackageManager();
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
ResolveInfo resolveInfo = pm.resolveActivity( installIntent, PackageManager.MATCH_DEFAULT_ONLY );

if( resolveInfo == null ) {
    // Not able to find he activity which should be started for this intent
    Log.i(TAG, "Not able to find the activity which should be started for this intent");
} else {
    Log.i(TAG, "try to install...");
    startActivity( installIntent );
}

日志如下,我不知道要修复它:

无法找到应为此意图启动的活动

我正在使用 Android Wear 模拟器,但在设置 -> 辅助功能菜单中找不到 TTS 启用按钮。但是在菜单下,我找到了TalkBack(experimental),不知道是什么。

我在这呆了几天。今晚有点累。请给我一些关于如何使 TTS 在模拟器中工作的指导。

4

0 回答 0