我正在尝试将我的工作 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 在模拟器中工作的指导。