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; ArrayListlista; @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