android-developers
[Arriba] [Todas las Listas]

[android-developers] Refiere a Objeto de TTS dentro de método interior

To: android-developers@xxxxxxxxxxxxxxxx
Subject: [android-developers] Refiere a Objeto de TTS dentro de método interior
From: Carlos Pereira <carlosedmar@xxxxxxxxx>
Date: Sun, 30 Oct 2011 14:58:17 -0700 (PDT)
Delivery-date: Mon, 31 Oct 2011 13:56:43 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=x-beenthere:date:from:reply-to:to:message-id:subject:mime-version :x-original-sender:precedence:mailing-list:list-id:x-google-group-id :list-post:list-help:list-archive:sender:list-subscribe :list-unsubscribe:content-type; bh=KZ88PfWT/0ViTAeA5WseJaKwS0Rtn/qbWJZgbt95C88=; b=pxdbXCdYhF+9NdZnzfW1m47F0uAmvC89AwOuMDdcyJEf0ACNk0EppsM5Hxsz2T83H5 QnpPj4IbxXJq02tPHfqSd4dkAgEsz52hOCiiWv+9JvI4PR2eRtmb21iLknGJ4ETlBCa0 hsMF0PT4Hy9LvLEhJ74Oe0w0eaSowCx/RuAEY=
Envelope-to: traductor@xxxxxxxxxxx
List-archive: <http://groups.google.com/group/android-developers?hl=en_US>
List-help: <http://groups.google.com/support/?hl=en_US>, <mailto:android-developers+help@googlegroups.com>
List-id: <android-developers.googlegroups.com>
List-post: <http://groups.google.com/group/android-developers/post?hl=en_US>, <mailto:android-developers@googlegroups.com>
List-subscribe: <http://groups.google.com/group/android-developers/subscribe?hl=en_US>, <mailto:android-developers+subscribe@googlegroups.com>
List-unsubscribe: <http://groups.google.com/group/android-developers/subscribe?hl=en_US>, <mailto:android-developers+unsubscribe@googlegroups.com>
Mailing-list: list android-developers@xxxxxxxxxxxxxxxx; contact android-developers+owners@xxxxxxxxxxxxxxxx
Reply-to: android-developers@xxxxxxxxxxxxxxxx
Sender: android-developers@xxxxxxxxxxxxxxxx
Bien... Estoy intentando crear una aplicación que utiliza el Motor de TTS. 
  
Ya lo puedo hacer, trabajo, ningún problema. Aun así necesito mis botones para 
ser *dinamic, vendrán de un *database.

**Tan lejos tú *guys me ha ayudado mucho, desde ahora lo puedo hacer gracias a los 
consejos conseguía de ti *guys.**

**Bien.. Ahora soy enganchado otra vez.**

Cada botón nuevo que creo sujeto un *OnClickListener así que puede empezar 
el TTS y hablar algo. 

Aun así es un método interior, así que, cuándo intento correr el código abajo, me da un *NullPointerException cuándo intenta hablar" utilizando el TTS. Sé el objeto de TTS es fuera de contexto, así que, **Cómo puede soluciono esto?**

Abajo el código. Es un poco grande desde entonces quise incluir todo:

COMPLACER SALTO Al "AQUÍ ES MI PROBLEMA!!!" Comentario así que tú *guys puede ver 
exactamente dónde mi problema es. Sé donde es, pero no sé cómo para 
solucionarlo =(

Cualquier ayuda es *appreciatted! =)

    Clase pública *LivoxTesteActivity extiende la Actividad implementa 
*OnInitListener
        /** #pp cuándo la actividad es primero creado. */
        Privado *int MI_CÓDIGO_de CONTROL_del DATO = 0;
        público *TextToSpeech *tts;
    
    
        @*Override
        público *void *onCreate(*Bundle *savedInstanceState)
        
        #unknown{^*super.*onCreate(*savedInstanceState);
        *requestWindowFeature(Ventana.CARACTERÍSTICA_NINGÚN_TÍTULO); 
        *getWindow().*setFlags(*WindowManager.*LayoutParams.BANDERA_*FULLSCREEN, 
                *WindowManager.*LayoutParams.BANDERA_*FULLSCREEN);  
        *setContentView(*R.*layout.Principal);
        
        
        *LinearLayout *lgeral = nuevo *LinearLayout (este);
        *lgeral.*setOrientation(*LinearLayout.VERTICAL);
        *lgeral.*setLayoutParams(Nuevo 
*LinearLayout.*LayoutParams(*LayoutParams.LLENA_PADRE, 
*LayoutParams.LLENA_PADRE, 1*f));
        
        variedad de Cadena[][]{"#adj","come", "*Eu *quero próximo", "1"},"#unknown{^*Abraço","*hug", "*Eu *quero *um *abraço", "2"},"#unknown{^*Assustado","*afraid", "*Eu *estou *com *medo", "3"},"#unknown{^*Beber","bebida", "*Eu *quero *beber", "4"}};
        *int *x = variedad.Longitud;
        
        *int *qtdeLinhas = 2;
        puesto que (*int *j = 0; *j < *qtdeLinhas; *j++)        

            #unknown{^*LinearLayout *l1 = nuevo *LinearLayout (este);
            *l1.*setOrientation(*LinearLayout.HORIZONTAL);
            *l1.*setLayoutParams(Nuevo 
*LinearLayout.*LayoutParams(*LayoutParams.LLENA_PADRE, 
*LayoutParams.LLENA_PADRE, 1*f));
            
            *FrameLayout *fl;
            puesto que (*int *i = 0; *i < variedad.Longitud; *i++)
                
                #unknown{^*fl = 
(*FrameLayout)*LayoutInflater.De(*getBaseContext()).*inflate(*R.*layout.*framelayoutstyle, 
*l1, falso);
                
                *TextView *textoEscrito;
                *textoEscrito = 
(*TextView)*LayoutInflater.De(*getBaseContext()).*inflate(*R.*layout.*textviewstyle, 
*fl, falso);
            
                *textoEscrito.*setText(Variedad[*i][0]);
                
                Cadena final *texto = 
*textoEscrito.*getText().*toString();        
                Cadena final *textoFalar = variedad[*i][2];
                
                *ImageButton *btn;
                *btn = 
(*ImageButton)*LayoutInflater.De(*getBaseContext()).*inflate(*R.*layout.*imagebuttonstyle, 
*fl, falso);
                
                
*btn.*setImageResource(Esto.*getResources().*getIdentifier("*drawable/" + 
Variedad[*i][1], *null, esto.*getPackageName()));
                

                *btn.*setOnClickListener(Botón nuevo.*OnClickListener()
                    #Nom *void *onClick (Vista *v)
                        

                        #nom.*makeText(*getBaseContext(), *texto, 
Tostada.La LONGITUD_CORTA).Espectáculo();
                        //*******************************
                        //AQUÍ ES MI PROBLEMA!!!
                        //*******************************
                        *tts.Habla(*txtFl, *TextToSpeech.*QUEUE_ADD, *null);
                        //*******************************
                        //CUÁNDO PRUEBO CORRER EL ENCIMA LO DA Un 
*NULLPOINTEREXCEPTION!!!
                        //*******************************


                        
                    }
    
                });
                
    
                *fl.*addView(*btn);
                *fl.*addView(*textoEscrito);
    
                *l1.*addView(*fl);
            }
            
            *lgeral.*addView(*l1);
        }
        
        *setContentView(*lgeral);        

    }

        
    protegido *void *onActivityResult(*int *requestCode, *int *resultCode, *Intent 
dato)
        #cnj (*requestCode == MI_CÓDIGO_de CONTROL_del DATO)
            #cnj (*resultCode == *TextToSpeech.Motor.PASE_de DATO_de VOZ_de CONTROL)
                // #nom, crear el caso de TTS
                *tts = nuevo *TextToSpeech(esto, este);
            }
            más
                // #ger dato, lo instala
                *Intent *installIntent = nuevo *Intent();
                
*installIntent.*setAction(*TextToSpeech.Motor.La ACCIÓN_INSTALA_DATO_de TTS);
                *startActivity(*installIntent);
            }
        }
 
    }
    @*Override
    público *void *onInit(*int estado)       
        #cnj (estado == *TextToSpeech.ÉXITO) {
        }
        más si (estado == *TextToSpeech.ERROR) {
        }
    }


    @*Override
    público *void *onDestroy()
    #cnj (*tts != *null)
    #unknown{^*tts.Parón();
    *tts.*shutdown();
    }
    *super.*onDestroy();
    } 

    }

Por la manera... La Tostada de método.*makeText(*getBaseContext(), *texto, 
Tostada.La LONGITUD_CORTA).Espectáculo(); trabajos bien. Creo que aquello es porque la Tostada 
es un *static clase.

Tan, quizás la solución es para crear un *static clase con el método para 
hablar? Ideas? Cómo puede yo  él?


-- 
Recibiste este mensaje porque eres *subscribed al *Google
Grupos "*Android *Developers" grupo.
A correo a este grupo, envía *email a *android-developers@xxxxxxxxxxxxxxxx
A *unsubscribe de este grupo, envía *email a *android-*developers+unsubscribe@xxxxxxxxxxxxxxxx

Puesto que más opciones, visita este grupo en
*http://grupos.*google.*com/Grupo/*android-*developers?*hl=*en
Well... I am trying to create an application using the TTS Engine. 
  
I can already make it, work, no problem. However I need my buttons to be 
dinamic, they will come from a database.

**So far you guys have helped me a lot, since now I can do it thanks to the 
tips I got from you guys.**

**Well.. now I am stuck again.**

Every new button that I create I attach an OnClickListener so it can start 
the TTS and speak something. 

However it's an inner method, so, when I try to run the code below, it 
gives me a NullPointerException when it tries to "speak" using the TTS. I 
know the TTS object is out of context, so, **How can I solve this?**

Below the code. It's a little big since I wanted to include everything:

PLEASE JUMP TO THE "HERE IS MY PROBLEM!!!" comment so you guys can see 
exactly where my problem is. I know where it is, but I don't know how to 
solve it =(

Any help is appreciatted! =)

    public class LivoxTesteActivity extends Activity implements 
OnInitListener{
        /** Called when the activity is first created. */
        private int MY_DATA_CHECK_CODE = 0;
        public TextToSpeech tts;
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); 
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);  
        setContentView(R.layout.main);
        
        
        LinearLayout lgeral = new LinearLayout (this);
        lgeral.setOrientation(LinearLayout.VERTICAL);
        lgeral.setLayoutParams(new 
LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
LayoutParams.FILL_PARENT, 1f));
        
        String array[][] = {{"Comer","eat", "Eu quero comer", "1"},
                {"Abraço","hug", "Eu quero um abraço", "2"},
                {"Assustado","afraid", "Eu estou com medo", "3"},
                {"Beber","drink", "Eu quero beber", "4"}};
        int x = array.length;
        
        int qtdeLinhas = 2;
        for (int j = 0; j < qtdeLinhas; j++) {        

            LinearLayout l1 = new LinearLayout (this);
            l1.setOrientation(LinearLayout.HORIZONTAL);
            l1.setLayoutParams(new 
LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
LayoutParams.FILL_PARENT, 1f));
            
            FrameLayout fl;
            for (int i = 0; i < array.length; i++) {
                
                fl = 
(FrameLayout)LayoutInflater.from(getBaseContext()).inflate(R.layout.framelayoutstyle, 
l1, false);
                
                TextView textoEscrito;
                textoEscrito = 
(TextView)LayoutInflater.from(getBaseContext()).inflate(R.layout.textviewstyle, 
fl, false);
            
                textoEscrito.setText(array[i][0]);
                
                final String texto = 
textoEscrito.getText().toString();        
                final String textoFalar = array[i][2];
                
                ImageButton btn;
                btn = 
(ImageButton)LayoutInflater.from(getBaseContext()).inflate(R.layout.imagebuttonstyle, 
fl, false);
                
                
btn.setImageResource(this.getResources().getIdentifier("drawable/" + 
array[i][1], null, this.getPackageName()));
                

                btn.setOnClickListener(new Button.OnClickListener(){
                    public void onClick (View v){
                        

                        Toast.makeText(getBaseContext(), texto, 
Toast.LENGTH_SHORT).show();
                        //*******************************
                        //HERE IS MY PROBLEM!!!
                        //*******************************
                        tts.speak(txtFl, TextToSpeech.QUEUE_ADD, null);
                        //*******************************
                        //WHEN I TRY TO RUN THE ABOVE IT GIVES A 
NULLPOINTEREXCEPTION!!!
                        //*******************************


                        
                    }
    
                });
                
    
                fl.addView(btn);
                fl.addView(textoEscrito);
    
                l1.addView(fl);
            }
            
            lgeral.addView(l1);
        }
        
        setContentView(lgeral);        

    }

        
    protected void onActivityResult(int requestCode, int resultCode, Intent 
data) {
        if (requestCode == MY_DATA_CHECK_CODE) {
            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // success, create the TTS instance
                tts = new TextToSpeech(this, this);
            }
            else {
                // missing data, install it
                Intent installIntent = new Intent();
                
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installIntent);
            }
        }
 
    }
    @Override
    public void onInit(int status) {       
        if (status == TextToSpeech.SUCCESS) {
        }
        else if (status == TextToSpeech.ERROR) {
        }
    }


    @Override
    public void onDestroy() {
    if (tts != null) {
    tts.stop();
    tts.shutdown();
    }
    super.onDestroy();
    } 

    }

By the way... the method Toast.makeText(getBaseContext(), texto, 
Toast.LENGTH_SHORT).show(); works fine. I believe that's because the Toast 
is a static class.

So, maybe the solution is to create a static class with the method to 
speak? Ideas? How can I do it?


-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@xxxxxxxxxxxxxxxx
To unsubscribe from this group, send email to
android-developers+unsubscribe@xxxxxxxxxxxxxxxx
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
<Anterior por Tema] Tema Actual [Siguiente por Tema>
  • [android-developers] Refiere a Objeto de TTS dentro de método interior, Carlos Pereira <=