private VoiceResultProcessor(Context context) { mContext = context; // Bin types, litter types and brands all pulled from cloud mBrands = new ArrayList<>(); mLitterTypes = new ArrayList<>(); mBinTypes = new ArrayList<>(); populateBrandList(); populateLitterTypes(); populateBinTypes(); ArrayList<LocalEntity> menuCommands = new ArrayList<>(); LocalEntity brand = new LocalEntity("brand"); brand.setName(context.getString(R.string.brand_command)); brand.addSearchTerms(new String[] {"friends", "ground", "run", "front", "round"}); menuCommands.add(brand); LocalEntity litterType = new LocalEntity("type"); litterType.setName(mContext.getString(R.string.type_command)); litterType.addSearchTerms(new String[] {"typ", "types", "tight", "tired"}); menuCommands.add(litterType); LocalEntity bin = new LocalEntity("bin"); bin.addSearchTerms(new String[] {"pin", "binh", "spin", "Ben", "friend", "pen", "fin"}); menuCommands.add(bin); ArrayList<LocalEntity> confirmation = new ArrayList<>(); LocalEntity confirmationTerms = new LocalEntity("yes"); confirmationTerms.addSearchTerms(CONFIRMATION_TERMS); confirmation.add(confirmationTerms); // Populate Search objects for use in logic and UI menuSearch = new Search("menu", menuCommands, mContext.getString(R.string.menu_caption)); binSearch = new Search( mContext.getString(R.string.bin_command), mBinTypes, mContext.getString(R.string.bin_caption)); typeSearch = new Search( mContext.getString(R.string.type_command), mLitterTypes, mContext.getString(R.string.type_caption)); brandSearch = new Search( mContext.getString(R.string.brand_command), mBrands, mContext.getString(R.string.brand_caption)); yesNoSearch = new ConfirmationSearch("yesno", confirmation, mContext.getString(R.string.yes_no_caption)); yesNoSearch.setYesTerms(YES_TERMS); yesNoSearch.setNoTerms(NO_TERMS); mActionHandler = new ActionHandler(); mOutingManager = OutingManager.get(context); }