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

Respuesta
 
Herramientas
  #1  
Viejo 03/04/15, 05:00:03
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Ú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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:15:40 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /