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