@Override public void onDialogPositiveClick(DialogFragment dialog) { Dialog dialogView = dialog.getDialog(); String stringName = ((EditText) dialogView.findViewById(R.id.dialog_store_name)).getText().toString(); if (editIndex == -1) { if (!stringName.isEmpty()) { Store store = new Store(stringName); long rowId = mStoreDbAdapter.insertStore(store); store.setId(rowId); mStoreList.add(store); } } else { mStoreList.get(editIndex).setName(stringName); mStoreDbAdapter.updateStore(mStoreList.get(editIndex)); editIndex = -1; } if (!stringName.isEmpty()) { mStoreAdaptor.notifyDataSetChanged(); } }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String stringName; super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case Constants.RESULT_SPEECH_OUTPUT: if (resultCode == RESULT_OK && data != null) { ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); stringName = text.get(0); if (stringName != null && !stringName.isEmpty()) { Store store = new Store(stringName); long rowId = mStoreDbAdapter.insertStore(store); Log.d(LOG_TAG, "Insert ret val: " + rowId); store.setId(rowId); mStoreList.add(store); mStoreAdaptor.notifyDataSetChanged(); } } break; default: Log.w(LOG_TAG, "Not handled speech resultCode"); break; } }
@Override public void run() { Log.v(Program.LOG, "DatabaseSearcher.run()"); double radius = PreferenceManager.getDefaultSharedPreferences(context) .getInt(context.getResources().getString(R.string.radius), 20); Location l = StoreFinderApplication.getLastKnownLocation(); double lat = l.getLatitude(); double lon = l.getLongitude(); database = database.open(); db = database.getDatabase(); Cursor c = db.query( "store", new String[] { "_id", "name", "address", "city", "state", "zip", "phone", "latitude", "longitude" }, "latitude > " + (lat - radius / MILES_PER_LATLONG) + " AND latitude < " + (lat + radius / MILES_PER_LATLONG) + " AND longitude > " + (lon - radius / MILES_PER_LATLONG) + " AND longitude < " + (lon + radius / MILES_PER_LATLONG), null, null, null, null); double latitude, longitude; c.moveToFirst(); if (c.getCount() > 0) { do { latitude = c.getDouble(7); longitude = c.getDouble(8); float[] results = new float[3]; Location.distanceBetween(lat, lon, latitude, longitude, results); double distance = results[0] * Program.MILES_PER_METER; if (distance > radius) // Make user customizable search distance continue; Store store = new Store(); store.setId(c.getInt(0)); store.setName(c.getString(1)); store.setAddress(c.getString(2)); store.setCitystate(c.getString(3) + ", " + c.getString(4) + " " + c.getString(5)); store.setPhone(c.getString(6)); store.setDistance(distance); Location loc = new Location(""); loc.setLatitude(latitude); loc.setLongitude(longitude); store.setLocation(loc); Message msg = new Message(); Bundle b = new Bundle(); b.putSerializable("store", store); msg.setData(b); msg.what = WHAT_SEARCHDB; handler.sendMessage(msg); } while (c.moveToNext()); } c.close(); database.close(); Message finish = new Message(); finish.what = WHAT_FINISHEDSEARCH; handler.sendMessage(finish); }