JavascriptProva

domenica 6 novembre 2016

Feedback vocale e conferma

Adesso inserisco un feedback.
Quando parlo, potrei non essere stato capito bene. E' bene che ci sia una risposta che mi permetta di verificare se il mio comando è stato ben capito.
Organizzo una risposta vocale...

Inizializzo il tts:
    TextToSpeech tts;

.....

        tts=new TextToSpeech(getApplicationContext(),new TextToSpeech.OnInitListener(){

            @Override
            public void onInit(int status) {
                if(status==TextToSpeech.SUCCESS){
                    tts.setLanguage(Locale.ITALIAN);
                }
            }
        });
Ora, quando ho parlato, arrivo a OnActivityResult.
E' qui che devo inserire il feedback.
Devo inserire un button "Annulla", però...

O meglio un button "Conferma".
Ecco tutto ciò che ho realizzato:


MainActivity:
public class MainActivity extends AppCompatActivity {

    Button bttConferma;
    TextToSpeech tts;
    Helper helper;
    Button bottone;
    ArrayList lista;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bttConferma=(Button)findViewById(R.id.bttConferma);
        bttConferma.setEnabled(false);
        bttConferma.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {

                helper.save(lista.get(0));
                bttConferma.setEnabled(false);
                Intent i=new Intent(getApplicationContext(),Lista.class);
                startActivity(i);
            }
        });

        tts=new TextToSpeech(getApplicationContext(),new TextToSpeech.OnInitListener(){

            @Override
            public void onInit(int status) {
                if(status==TextToSpeech.SUCCESS){
                    tts.setLanguage(Locale.ITALIAN);
                }
            }
        });

        helper=new Helper(this);

        bottone=(Button)findViewById(R.id.button);
        bottone.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View v) {
                bttConferma.setEnabled(false);
                cancellaTimer();
                Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.ITALIAN);
                intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Parla ora");
                startActivityForResult(intent,0);

            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK){
            lista=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            tts.speak(lista.get(0),TextToSpeech.QUEUE_FLUSH,null);
            bttConferma.setEnabled(true);

        }else{
            Intent i=new Intent(getApplicationContext(),Lista.class);
            startActivity(i);
        }



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater=this.getMenuInflater();
        inflater.inflate(R.menu.miomenu,menu);
        return true;
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem){
        switch(menuItem.getItemId()){
            case R.id.stopTimer:
                cancellaTimer();
                break;
        }
        return true;
    }

    private void cancellaTimer(){
        Intent intent=new Intent(getApplicationContext(),
                Lista.class);
        PendingIntent pendingIntent=PendingIntent.getActivity(getApplicationContext(),
                0,
                intent,
                0);
        AlarmManager alarmManager=(AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
        if(pendingIntent!=null)pendingIntent.cancel();
    }

    private void avviaTimer(int secondi){
        //stabilisce il ciclo
        Intent intent=new Intent(getApplicationContext(),Lista.class);
        PendingIntent pendingIntent=PendingIntent.getActivity(getApplicationContext(),0,intent,0);
        AlarmManager alarmManager=(AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+Const.secondi*1000,pendingIntent);

    }

}


Lista:
public class Lista extends AppCompatActivity {

    Button bttChiudi;
    Helper helper;
    MyCursorAdapter myCursorAdapter;
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista);

        bttChiudi=(Button)findViewById(R.id.bttChiudi);
        bttChiudi.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                finish();
            }
        });
        helper=new Helper(this);
        Cursor crs=helper.query();
        myCursorAdapter=new MyCursorAdapter(this,crs);
        listView=(ListView)findViewById(R.id.listView);
        listView.setAdapter(myCursorAdapter);





    }

    @Override
    protected void onDestroy(){
        super.onDestroy();
        Cursor crs=helper.query();
        if(crs.getCount()!=0) {

            Intent intent = new Intent(Lista.this, Lista.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
            AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + Const.secondi * 1000, pendingIntent);
        }

    }

    class MyCursorAdapter extends CursorAdapter {

        Context context;
        public MyCursorAdapter(Context context, Cursor c) {
            super(context, c);
            this.context=context;
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
            return layoutInflater.inflate(R.layout.row,null);
        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {

            TextView textView=(TextView)view.findViewById(R.id.textView);
            final TextView textView2=(TextView)view.findViewById(R.id.textView2);
            Button button=(Button)view.findViewById(R.id.button2);
            textView.setText(cursor.getString(cursor.getColumnIndexOrThrow("voce")));
            textView2.setText(""+cursor.getInt(cursor.getColumnIndexOrThrow("_id")));
            button.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View v) {
                    helper.cancella(Integer.parseInt(textView2.getText().toString()));
                    myCursorAdapter.getCursor().requery();
                }
            });
        }
    }



}

Nessun commento:

Posta un commento