gpt4 book ai didi

android - 文字转语音在 android 中不起作用

转载 作者:行者123 更新时间:2023-11-29 00:29:21 25 4
gpt4 key购买 nike

我向大师们问好。我目前正在开发类似于“待办事项列表”的应用程序。我已成功实现获取 Notifications。我尝试实现文本转语音,让我的 Sony Xperia Tipo Dual ST21i2 在预先指定的时间说出我添加的任务。但我没有从我的电话中听到任何声音。

public class NotifyService extends Service implements OnInitListener{

private TextToSpeech tts;
int task_id;
private static final int NOTIFICATION = 123;
public static final String INTENT_NOTIFY = "com.blundell.tut.service.INTENT_NOTIFY";
private NotificationManager mNM;
SQLiteDatabase database;
String tmp_task_brief = null;

public class ServiceBinder extends Binder
{
NotifyService getService()
{
return NotifyService.this;
}
}

@Override
public void onCreate() {

mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
tts = new TextToSpeech(getApplicationContext(), this);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

task_id = intent.getIntExtra("task_id", 0);

loadDatabase();
Cursor cursor = database.query("task_info", new String[]{"task_brief"}, "task_id=?", new String[]{task_id+""}, null, null, null);
while(cursor.moveToNext())
{
tmp_task_brief = cursor.getString(0);
}
cursor.close();
database.close();

if(intent.getBooleanExtra(INTENT_NOTIFY, false))
showNotification(tmp_task_brief);

return START_NOT_STICKY;
}

@Override
public IBinder onBind(Intent intent) {

return mBinder;
}

private final IBinder mBinder = new ServiceBinder();

private void showNotification(String tmp_task_brief) {

CharSequence title = "To Do Task Notification!!";
int icon = R.drawable.ic_menu_notifications;
CharSequence text = tmp_task_brief;
long time = System.currentTimeMillis();

Notification notification = new Notification(icon, text, time);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TaskDetails.class), 0);

notification.setLatestEventInfo(this, title, text, contentIntent);

notification.flags |= Notification.FLAG_AUTO_CANCEL;

mNM.notify(NOTIFICATION, notification);

//---------vibrate on notification-----------

Vibrator vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

int dot = 200;
int dash = 500;
int short_gap = 200;
int medium_gap = 500;
int long_gap = 1000;
long[] pattern = {
0, // Start immediately
dot, short_gap, dot, short_gap, dot, // s
medium_gap,
dash, short_gap, dash, short_gap, dash, // o
medium_gap,
dot, short_gap, dot, short_gap, dot, // s
long_gap
};

// Only perform this pattern one time (-1 means "do not repeat")
vibrate.vibrate(pattern, -1);

speakOut(tmp_task_brief);

stopSelf();
}

void loadDatabase()
{
database = openOrCreateDatabase("ToDoDatabase.db",
SQLiteDatabase.OPEN_READWRITE, null);
}

@Override
public void onInit(int status) {
// TODO Auto-generated method stub

if (status == TextToSpeech.SUCCESS) {

int result = tts.setLanguage(Locale.US);

if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.i("TTS", "This Language is not supported");
Toast.makeText(getApplicationContext(), "This Language is not supported", Toast.LENGTH_SHORT).show();
} else {
speakOut(tmp_task_brief);
}

} else {
Log.i("TTS", "Initilization Failed!");
}
}

@Override
public void onDestroy() {
// Don't forget to shutdown tts!
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}

private void speakOut(String task) {

tts.speak(task, TextToSpeech.QUEUE_FLUSH, null);
}
}

我记录的输出错误如下:

05-31 11:49:00.450: I/TextToSpeech(11621): Sucessfully bound to com.google.android.tts
05-31 11:49:00.490: W/TextToSpeech(11621): speak failed: not bound to TTS engine
05-31 11:49:00.490: I/TextToSpeech(11621): Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.GoogleTTSService}

请帮我解决这个错误。

最佳答案

在 speak 方法有机会说话之前调用 stopSelf()。您应该实现 OnUtteranceCompletedListener 并在 onUtteranceCompleted 中调用 stopSelf()
此外,speakOut(tmp_task_brief); 不应在 showNotification 方法中调用,因为 speak 方法仅在 onInit 之后有效打电话。

关于android - 文字转语音在 android 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16850966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com