Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 45 additions & 2 deletions app/src/main/java/com/deitel/addressbook/AddEditContact.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@
import android.widget.Button;
import android.widget.EditText;

public class AddEditContact extends Activity {
import com.miyagilabs.voicer.InitListener;
import com.miyagilabs.voicer.Voicer;
import com.miyagilabs.voicer.VoicerFactory;
import com.miyagilabs.voicer.annotation.Voice;
import com.miyagilabs.voicer.tts.SpeakerException;
import com.miyagilabs.voicer.tts.VirtualAssistant;
import com.miyagilabs.voicer.widget.Toaster;

public class AddEditContact extends Activity implements InitListener {
private long rowID; // id of contact being edited, if any

// EditTexts for contact information
Expand All @@ -25,6 +33,11 @@ public class AddEditContact extends Activity {
OnClickListener saveContactButtonClicked = new OnClickListener() {
@Override
public void onClick(View v) {
save();
} // end method onClick

@Voice(commands = "save")
private void save() {
if (nameEditText.getText().length() != 0) {
AsyncTask<Object, Object, Object> saveContactTask =
new AsyncTask<Object, Object, Object>() {
Expand Down Expand Up @@ -54,8 +67,9 @@ protected void onPostExecute(Object result) {
builder.setPositiveButton(R.string.errorButton, null);
builder.show(); // display the Dialog
} // end else
} // end method onClick
}
}; // end OnClickListener saveContactButtonClicked
private Voicer mVoicer;

// called when the Activity is first started
@Override
Expand Down Expand Up @@ -87,6 +101,18 @@ public void onCreate(Bundle savedInstanceState) {
saveContactButton.setOnClickListener(saveContactButtonClicked);
} // end method onCreate

@Override
protected void onResume() {
VoicerFactory.fakeVoicer(this, this);
super.onResume();
}

@Override
protected void onPause() {
mVoicer.shutdown();
super.onPause();
}

// saves contact information to the database
private void saveContact() {
// get DatabaseConnector to interact with the SQLite database
Expand All @@ -110,6 +136,23 @@ private void saveContact() {
cityEditText.getText().toString());
} // end else
} // end class saveContact

@Override
public void onInit(Voicer voicer, int status) {
mVoicer = voicer;
runOnUiThread(new Runnable() {
@Override
public void run() {
mVoicer.addVoicerListener(new Toaster(AddEditContact.this));
}
});
try {
mVoicer.addVoicerListener(new VirtualAssistant(this));
} catch (SpeakerException | InterruptedException e) {
e.printStackTrace();
}
mVoicer.register(saveContactButtonClicked);
}
} // end class AddEditContact


Expand Down
34 changes: 31 additions & 3 deletions app/src/main/java/com/deitel/addressbook/AddressBook.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,15 @@
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class AddressBook extends ListActivity {
import com.miyagilabs.voicer.InitListener;
import com.miyagilabs.voicer.Voicer;
import com.miyagilabs.voicer.VoicerFactory;
import com.miyagilabs.voicer.annotation.Voice;
import com.miyagilabs.voicer.tts.SpeakerException;
import com.miyagilabs.voicer.tts.VirtualAssistant;
import com.miyagilabs.voicer.widget.Toaster;

public class AddressBook extends ListActivity implements InitListener {
public static final String ROW_ID = "row_id"; // Intent extra key
// event listener that responds to the user touching a contact's name
// in the ListView
Expand All @@ -36,6 +44,7 @@ public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
}; // end viewContactListener
private ListView contactListView; // the ListActivity's ListView
private CursorAdapter contactAdapter; // adapter for ListView
private Voicer mVoicer;

// called when the activity is first created
@Override
Expand All @@ -54,6 +63,7 @@ public void onCreate(Bundle savedInstanceState) {

@Override
protected void onResume() {
VoicerFactory.fakeVoicer(this, this);
super.onResume(); // call super's onResume method

// create new GetContactsTask and execute it
Expand All @@ -62,6 +72,7 @@ protected void onResume() {

@Override
protected void onStop() {
mVoicer.shutdown();
Cursor cursor = contactAdapter.getCursor(); // get current Cursor

if (cursor != null) {
Expand All @@ -84,12 +95,29 @@ public boolean onCreateOptionsMenu(Menu menu) {
// handle choice from options menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {
addContact();
return super.onOptionsItemSelected(item); // call super's method
} // end method onOptionsItemSelected

@Voice(commands = "add contact")
private void addContact() {
// create a new Intent to launch the AddEditContact Activity
Intent addNewContact =
new Intent(AddressBook.this, AddEditContact.class);
startActivity(addNewContact); // start the AddEditContact Activity
return super.onOptionsItemSelected(item); // call super's method
} // end method onOptionsItemSelected
}

@Override
public void onInit(Voicer voicer, int status) {
mVoicer = voicer;
mVoicer.addVoicerListener(new Toaster(this));
try {
mVoicer.addVoicerListener(new VirtualAssistant(this));
} catch (SpeakerException | InterruptedException e) {
e.printStackTrace();
}
mVoicer.register(this);
}

// performs database query outside GUI thread
private class GetContactsTask extends AsyncTask<Object, Object, Cursor> {
Expand Down
61 changes: 47 additions & 14 deletions app/src/main/java/com/deitel/addressbook/ViewContact.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,26 @@
import android.view.MenuItem;
import android.widget.TextView;

public class ViewContact extends Activity {
import com.miyagilabs.voicer.InitListener;
import com.miyagilabs.voicer.Voicer;
import com.miyagilabs.voicer.VoicerFactory;
import com.miyagilabs.voicer.annotation.Voice;
import com.miyagilabs.voicer.tts.SpeakerException;
import com.miyagilabs.voicer.tts.VirtualAssistant;
import com.miyagilabs.voicer.widget.Toaster;

public class ViewContact extends Activity implements InitListener {
private long rowID; // selected contact's name
private TextView nameTextView; // displays contact's name
private TextView phoneTextView; // displays contact's phone
private TextView emailTextView; // displays contact's email
private TextView streetTextView; // displays contact's street
private TextView cityTextView; // displays contact's city/state/zip
private Voicer mVoicer;

// called when the activity is first created
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.view_contact);

Expand All @@ -44,12 +52,19 @@ public void onCreate(Bundle savedInstanceState) {
// called when the activity is first created
@Override
protected void onResume() {
VoicerFactory.fakeVoicer(this, this);
super.onResume();

// create new LoadContactTask and execute it
new LoadContactTask().execute(rowID);
} // end method onResume

@Override
protected void onPause() {
mVoicer.shutdown();
super.onPause();
}

// create the Activity's menu from a menu resource XML file
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Expand All @@ -65,18 +80,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) // switch based on selected MenuItem's ID
{
case R.id.editItem:
// create an Intent to launch the AddEditContact Activity
Intent addEditContact =
new Intent(this, AddEditContact.class);

// pass the selected contact's data as extras with the Intent
addEditContact.putExtra(AddressBook.ROW_ID, rowID);
addEditContact.putExtra("name", nameTextView.getText());
addEditContact.putExtra("phone", phoneTextView.getText());
addEditContact.putExtra("email", emailTextView.getText());
addEditContact.putExtra("street", streetTextView.getText());
addEditContact.putExtra("city", cityTextView.getText());
startActivity(addEditContact); // start the Activity
editContact();
return true;
case R.id.deleteItem:
deleteContact(); // delete the displayed contact
Expand All @@ -86,7 +90,24 @@ public boolean onOptionsItemSelected(MenuItem item) {
} // end switch
} // end method onOptionsItemSelected

@Voice(commands = "edit contact")
private void editContact() {
// create an Intent to launch the AddEditContact Activity
Intent addEditContact =
new Intent(this, AddEditContact.class);

// pass the selected contact's data as extras with the Intent
addEditContact.putExtra(AddressBook.ROW_ID, rowID);
addEditContact.putExtra("name", nameTextView.getText());
addEditContact.putExtra("phone", phoneTextView.getText());
addEditContact.putExtra("email", emailTextView.getText());
addEditContact.putExtra("street", streetTextView.getText());
addEditContact.putExtra("city", cityTextView.getText());
startActivity(addEditContact); // start the Activity
}

// delete a contact
@Voice(commands = "delete")
private void deleteContact() {
// create a new AlertDialog Builder
AlertDialog.Builder builder =
Expand Down Expand Up @@ -129,6 +150,18 @@ protected void onPostExecute(Object result) {
builder.show(); // display the Dialog
} // end method deleteContact

@Override
public void onInit(Voicer voicer, int status) {
mVoicer = voicer;
mVoicer.addVoicerListener(new Toaster(this));
try {
mVoicer.addVoicerListener(new VirtualAssistant(this));
} catch (SpeakerException | InterruptedException e) {
e.printStackTrace();
}
mVoicer.register(this);
}

// performs database query outside GUI thread
private class LoadContactTask extends AsyncTask<Long, Object, Cursor> {
DatabaseConnector databaseConnector =
Expand Down