package net.osmand.core.samples.android.sample1.search; import net.osmand.IndexConstants; import net.osmand.binary.BinaryMapIndexReader; import net.osmand.core.samples.android.sample1.SampleApplication; import net.osmand.core.samples.android.sample1.SampleUtils; import net.osmand.search.SearchUICore; import net.osmand.search.SearchUICore.SearchResultCollection; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class QuickSearchHelper { private SampleApplication app; private SearchUICore core; private SearchResultCollection resultCollection; public QuickSearchHelper(SampleApplication app) { this.app = app; core = new SearchUICore(app.getPoiTypes(), SampleApplication.LANGUAGE, SampleApplication.TRANSLITERATE); } public SearchUICore getCore() { return core; } public SearchResultCollection getResultCollection() { return resultCollection; } public void setResultCollection(SearchResultCollection resultCollection) { this.resultCollection = resultCollection; } public void initSearchUICore() { setRepositoriesForSearchUICore(app); core.setPoiTypes(app.getPoiTypes()); core.init(); } public void setRepositoriesForSearchUICore(final SampleApplication app) { ArrayList<File> files = new ArrayList<File>(); File appPath = app.getAppPath(null); SampleUtils.collectFiles(appPath, IndexConstants.BINARY_MAP_INDEX_EXT, files); SampleUtils.collectFiles(app.getAppPath(IndexConstants.WIKI_INDEX_DIR), IndexConstants.BINARY_MAP_INDEX_EXT, files); List<BinaryMapIndexReader> readers = new ArrayList<>(); for (File f : files) { try { RandomAccessFile mf = new RandomAccessFile(f.getPath(), "r"); BinaryMapIndexReader reader = new BinaryMapIndexReader(mf, f); readers.add(reader); } catch (IOException e) { e.printStackTrace(); } } core.getSearchSettings().setOfflineIndexes(readers); } }