Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 03/04/15, 05:00:03
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
Probema con TextToSpeech heredado

Hola, amigos una duda de nuevo.
Mi problema recide en que no puedo crear una clase heredada, si es que esta bien dicho. es que uso la clase textToSpeech demasiadas veces y traté de ponerlo en una clase pero siempre me da un error en una linea les dejo el codigo, gracias de antemano

[PHP]package com.Ena.Education.c;

import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;

public class TextToSpeechEnuma extends TextToSpeech{

public TextToSpeechEnuma(Context context, OnInitListener listener) {
super(context, listener);
// TODO Auto-generated constructor stub
}
public TextToSpeech TTS;

public void Habla(String str) {
TTS.speak( str, TextToSpeech.QUEUE_FLUSH, null ); // esta linea es la que me da el error
TTS.setSpeechRate( -2.0f );
TTS.setPitch( 0.0f );
}

}[/PHP]

[PHP] TextToSpeechEnuma TTS = new TextToSpeechEnuma(getActivity(), new OnInitListener() { //tambien esta linea me da error

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

}
});
TTS.Habla("Prueba"); [/PHP]
Responder Con Cita


  #2  
Viejo 03/04/15, 12:14:18
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Te da error porque la variable TTS de la clase TexToSpeechEnuma es null ya que nunca le has asignado valor, ni al declararla, ni en el constructor ni antes de usarla en Habla.

Por otro lado, la iniciliaización del TextToSpeech y la asignación de parámetros deberías hacerla solo una vez porque es un proceso lento, no cada vez que quieras decir algo. Vamos, que tampoco te hace falta heredar nada (no estás extendiendo la funcionalidad de la clase), simplemente tener un método que inicialice y establezca el speechRate y el pitch. Como solo hay que hacerlo una vez, te basta con llamar al método desde el onCreate.

Luego cuando quieras decir algo solo tienes que hacer una llamada al método speak.

Última edición por mocelet Día 03/04/15 a las 13:08:31
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 03/04/15, 15:39:26
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Exacto, es lo que dice mocelet, estás heredando TextToSpeech para luego usar a TextToSpeech como cliente.

Si realmente quieres usar la herencia lo que tienes que hacer es quitar la variable TTS y los métodos que usas sobre TTS usarlos sobre this, ya que tu propia clase es una clase TextToSpeech.

Como también ha dicho mocelet setSpeechRate y setPitch sólo necesitas ejecutarlos 1 vez, por tanto puedes ponerlos a continuación de la llamada "super" en el constructor. Y también haciéndolo sobre this.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 03/04/15, 22:05:55
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
Te da error porque la variable TTS de la clase TexToSpeechEnuma es null ya que nunca le has asignado valor, ni al declararla, ni en el constructor ni antes de usarla en Habla. Por otro lado, la iniciliaización del TextToSpeech y la asignación de parámetros deberías hacerla solo una vez porque es un proceso lento, no cada vez que quieras decir algo. Vamos, que tampoco te hace falta heredar nada (no estás extendiendo la funcionalidad de la clase), simplemente tener un método que inicialice y establezca el speechRate y el pitch. Como solo hay que hacerlo una vez, te basta con llamar al método desde el onCreate. Luego cuando quieras decir algo solo tienes que hacer una llamada al método speak.
Perdón pero no entiendo mucho de lo que dice, como es que tengo que declarar un valor al TTS, ¿Que es exactamente lo que estoy haciendo mal?

Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Exacto, es lo que dice mocelet, estás heredando TextToSpeech para luego usar a TextToSpeech como cliente. Si realmente quieres usar la herencia lo que tienes que hacer es quitar la variable TTS y los métodos que usas sobre TTS usarlos sobre this, ya que tu propia clase es una clase TextToSpeech. Como también ha dicho mocelet setSpeechRate y setPitch sólo necesitas ejecutarlos 1 vez, por tanto puedes ponerlos a continuación de la llamada "super" en el constructor. Y también haciéndolo sobre this.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 14:44:48 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007