From 7ed1ce9e4b687708b9402c3fc2f635da3243c3b9 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Mon, 12 Jul 2010 20:05:23 +0000 Subject: [PATCH] add voice engine git-svn-id: https://osmand.googlecode.com/svn/trunk@320 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8 --- .../src/com/osmand/ToDoConstants.java | 6 +- .../osmand/data/index/IndexBatchCreator.java | 27 +- OsmAnd/.classpath | 1 + OsmAnd/lib/tuprolog.jar | Bin 0 -> 115572 bytes OsmAnd/res/values-ru-rRU/strings.xml | 9 +- OsmAnd/res/values/strings.xml | 9 +- OsmAnd/res/xml/settings_pref.xml | 1 + OsmAnd/src/com/osmand/OsmandSettings.java | 24 ++ .../osmand/activities/MainMenuActivity.java | 12 +- .../osmand/activities/SettingsActivity.java | 44 ++- .../activities/ShowRouteInfoActivity.java | 6 + OsmAnd/src/com/osmand/views/OsmBugsLayer.java | 73 ++-- .../com/osmand/views/OsmandMapTileView.java | 7 +- OsmAnd/src/com/osmand/views/POIMapLayer.java | 6 +- .../com/osmand/views/TransportStopsLayer.java | 6 +- .../src/com/osmand/voice/CommandPlayer.java | 312 ++++++++++++++++++ 16 files changed, 475 insertions(+), 68 deletions(-) create mode 100644 OsmAnd/lib/tuprolog.jar create mode 100644 OsmAnd/src/com/osmand/voice/CommandPlayer.java diff --git a/DataExtractionOSM/src/com/osmand/ToDoConstants.java b/DataExtractionOSM/src/com/osmand/ToDoConstants.java index c91d0247a7..1ab9f8390d 100644 --- a/DataExtractionOSM/src/com/osmand/ToDoConstants.java +++ b/DataExtractionOSM/src/com/osmand/ToDoConstants.java @@ -20,9 +20,11 @@ public class ToDoConstants { // 68. Implement service to app work with screen offline // (introduce special settings how often update location to monitoring & audio guidance) // Improvement : Show stops in the transport route on the map + // Improvement : redesign poi selecting (show on map ) + // 69. Add phone information to POI // Not clear if it is really needed - // 43. Enable poi filter by name + // 43. Enable poi filter by name (find lake by name or shop) - case sensitive search DB! // 45. Get clear settings. Move that setting on top settings screen. // That setting should rule all activities that use internet. It should ask whenever internet is used // (would you like to use internet for that operation - if using internet is not checked). @@ -31,7 +33,7 @@ public class ToDoConstants { // Unscheduled (complex) // 66. Transport routing (show next stop, total distance, show stop get out) (?). // 64. Traffic information (?) - // 65. Intermediate points - for better control routing, to avoid traffic jam ...(?) + // 65. Intermediate points - for better control routing, to avoid traffic jams ...(?) // 40. Support simple vector road rendering (require new index file) (?) // 63. Support simple offline routing(require new index file) (?) diff --git a/DataExtractionOSM/src/com/osmand/data/index/IndexBatchCreator.java b/DataExtractionOSM/src/com/osmand/data/index/IndexBatchCreator.java index c43a4d86ba..22453df53b 100644 --- a/DataExtractionOSM/src/com/osmand/data/index/IndexBatchCreator.java +++ b/DataExtractionOSM/src/com/osmand/data/index/IndexBatchCreator.java @@ -26,7 +26,7 @@ import com.osmand.impl.ConsoleProgressImplementation; public class IndexBatchCreator { // config params private static final boolean indexPOI = true; - private static final boolean indexAddress = true; + private static final boolean indexAddress = false; private static final boolean indexTransport = true; private static final boolean writeWayNodes = true; @@ -52,30 +52,27 @@ public class IndexBatchCreator { // "czech_republic", "netherlands", // 168, 375, // "great_britain", "italy", // 281, 246, // ADD TO TOTAL : 2449 MB - // TODO transport, poi : "czech_republic", "netherlands", "great_britain", "italy" - // address : "great_britain", "italy" - out of memory + // TODO "great_britain", "italy" (address out of memory, poi, transport) + netherlands }; - // TODO all protected static final String[] franceProvinces = new String[] { - "alsace","aquitaine", "auvergne", "basse-normandie", "bourgogne", "bretagne", "centre", - "champagne-ardenne", "corse", "franche-comte", "haute-normandie", "ile-de-france", - "languedoc-roussillon", "limousin", "lorraine", "midi-pyrenees", "nord-pas-de-calais", - "pays-de-la-loire", "picardie","poitou-charentes", "provence-alpes-cote-d-azur", "rhone-alpes" +// "alsace","aquitaine", "auvergne", "basse-normandie", "bourgogne", "bretagne", "centre", +// "champagne-ardenne", "corse", "franche-comte", "haute-normandie", "ile-de-france", +// "languedoc-roussillon", "limousin", "lorraine", "midi-pyrenees", "nord-pas-de-calais", +// "pays-de-la-loire", "picardie","poitou-charentes", "provence-alpes-cote-d-azur", "rhone-alpes" }; - // TODO all protected static final String[] germanyLands = new String[] { - "baden-wuerttemberg","bayern", "berlin", "brandenburg", "bremen", "hamburg", "hessen", - "mecklenburg-vorpommern", "niedersachsen", "nordrhein-westfalen", "rheinland-pfalz", "saarland", - "sachsen-anhalt", "sachsen", "schleswig-holstein", "thueringen", +// "baden-wuerttemberg","bayern", "berlin", "brandenburg", "bremen", "hamburg", "hessen", +// "mecklenburg-vorpommern", "niedersachsen", "nordrhein-westfalen", "rheinland-pfalz", "saarland", +// "sachsen-anhalt", "sachsen", "schleswig-holstein", "thueringen", }; protected static final String SITE_TO_DOWNLOAD2 = "http://downloads.cloudmade.com/"; //$NON-NLS-1$ // us states - // TODO address + // Address (out of memory) : California ? , Florida ?, Georgia ? protected static final String[] usStates = new String[] { // "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", // "Delaware", "District_of_Columbia", "Florida", "Georgia", "Guantanamo_Bay", "Hawaii", @@ -255,7 +252,7 @@ public class IndexBatchCreator { uploadIndex(new File(indexDirFiles, fName), alreadyUploadedFiles); } } catch (Exception e) { - log.error("Exception generating indexes for " + f.getName()); //$NON-NLS-1$ + log.error("Exception generating indexes for " + f.getName(), e); //$NON-NLS-1$ } } catch (OutOfMemoryError e) { System.gc(); @@ -323,7 +320,7 @@ public class IndexBatchCreator { is.close(); zout.close(); } catch (IOException e) { - log.error("Exception while zipping file"); + log.error("Exception while zipping file", e); } if(f.delete()){ log.info("Source odb file was deleted"); diff --git a/OsmAnd/.classpath b/OsmAnd/.classpath index 8f4539503f..139125b82b 100644 --- a/OsmAnd/.classpath +++ b/OsmAnd/.classpath @@ -5,5 +5,6 @@ + diff --git a/OsmAnd/lib/tuprolog.jar b/OsmAnd/lib/tuprolog.jar new file mode 100644 index 0000000000000000000000000000000000000000..529887697a38b79f105a844b79b214c554a346e8 GIT binary patch literal 115572 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�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 T7a~`WKg)XJH|bJzN8JAa@p2Q> literal 0 HcmV?d00001 diff --git a/OsmAnd/res/values-ru-rRU/strings.xml b/OsmAnd/res/values-ru-rRU/strings.xml index 6442b1ff6e..e4f0a0c5d8 100644 --- a/OsmAnd/res/values-ru-rRU/strings.xml +++ b/OsmAnd/res/values-ru-rRU/strings.xml @@ -1,6 +1,13 @@ - Stop routing + Не использовать + Выберите голос для маршрутизации + Голосовые данные + Инициализируются голосовые данные... + Голосовые данные не поддерживаются текущей версией приложения + Выбранные голосовые данные не правильного формата + Выбранные голосовые данные не доступны + Отменить маршрут Карточка SD недоступна. \nВы не сможете работать с картой. Карточка SD доступна только для чтения. \nВы не сможете загружать карты из интернета. Файл распаковывается diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 9b09b3db26..fba6f048df 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -1,6 +1,13 @@ - Отменить маршрут + Not use + Choose voice data for routing + Voice data + Initializing voice data... + Voice data has different version that application supports + Specified voice data is corrupted + Current voice data is not available + Stop routing SD card is not accessible. \nYou can\'t see map and find anything. SD card is read-only accessible. \nYou can see only preloaded map and can\'t download from internet. File is unzipping diff --git a/OsmAnd/res/xml/settings_pref.xml b/OsmAnd/res/xml/settings_pref.xml index b0c7c875ab..00cffea30a 100644 --- a/OsmAnd/res/xml/settings_pref.xml +++ b/OsmAnd/res/xml/settings_pref.xml @@ -22,6 +22,7 @@ + diff --git a/OsmAnd/src/com/osmand/OsmandSettings.java b/OsmAnd/src/com/osmand/OsmandSettings.java index a92fd4d306..6bbb5def34 100644 --- a/OsmAnd/src/com/osmand/OsmandSettings.java +++ b/OsmAnd/src/com/osmand/OsmandSettings.java @@ -495,4 +495,28 @@ public class OsmandSettings { } return new PoiFilter(null); } + + + // this value string is synchronized with settings_pref.xml preference name + public static final String VOICE_PROVIDER = "voice_provider"; //$NON-NLS-1$ + + public static String getVoiceProvider(Context ctx){ + SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); + return prefs.getString(VOICE_PROVIDER, null); + } + + public static final String VOICE_MUTE = "voice_mute"; //$NON-NLS-1$ + public static final boolean VOICE_MUTE_DEF = false; + + public static boolean isVoiceMute(Context ctx){ + SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); + return prefs.getBoolean(VOICE_MUTE, VOICE_MUTE_DEF); + } + + public static boolean setVoiceMute(Context ctx, boolean mute){ + SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE); + return prefs.edit().putBoolean(VOICE_MUTE, mute).commit(); + } + + } diff --git a/OsmAnd/src/com/osmand/activities/MainMenuActivity.java b/OsmAnd/src/com/osmand/activities/MainMenuActivity.java index b4d1e5e897..6952b743f5 100644 --- a/OsmAnd/src/com/osmand/activities/MainMenuActivity.java +++ b/OsmAnd/src/com/osmand/activities/MainMenuActivity.java @@ -32,6 +32,7 @@ import com.osmand.ProgressDialogImplementation; import com.osmand.R; import com.osmand.ResourceManager; import com.osmand.activities.search.SearchActivity; +import com.osmand.voice.CommandPlayer; public class MainMenuActivity extends Activity { @@ -57,7 +58,14 @@ public class MainMenuActivity extends Activity { @Override public void run() { try { + // initializing voice prolog subsystem + List warnings = ResourceManager.getResourceManager().reloadIndexes(impl); + impl.startTask(getString(R.string.voice_data_initializing), -1); + String w = CommandPlayer.init(MainMenuActivity.this); + if(w != null){ + warnings.add(w); + } SavingTrackHelper helper = new SavingTrackHelper(MainMenuActivity.this); if (helper.hasDataToSave()) { impl.startTask(getString(R.string.saving_gpx_tracks), -1); @@ -100,9 +108,6 @@ public class MainMenuActivity extends Activity { requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.menu); - - - showMap = (Button) findViewById(R.id.MapButton); showMap.setOnClickListener(new OnClickListener() { @@ -110,7 +115,6 @@ public class MainMenuActivity extends Activity { public void onClick(View v) { final Intent mapIndent = new Intent(MainMenuActivity.this, MapActivity.class); startActivityForResult(mapIndent, 0); - } }); settingsButton = (Button) findViewById(R.id.SettingsButton); diff --git a/OsmAnd/src/com/osmand/activities/SettingsActivity.java b/OsmAnd/src/com/osmand/activities/SettingsActivity.java index 30696d0a44..55220a611e 100644 --- a/OsmAnd/src/com/osmand/activities/SettingsActivity.java +++ b/OsmAnd/src/com/osmand/activities/SettingsActivity.java @@ -1,6 +1,9 @@ package com.osmand.activities; +import java.io.File; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import android.app.ProgressDialog; import android.content.Context; @@ -9,6 +12,7 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.pm.ActivityInfo; import android.content.res.Resources; +import android.os.Environment; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; @@ -29,6 +33,7 @@ import com.osmand.OsmandSettings.ApplicationMode; import com.osmand.activities.RouteProvider.RouteService; import com.osmand.map.TileSourceManager; import com.osmand.map.TileSourceManager.TileSourceTemplate; +import com.osmand.voice.CommandPlayer; public class SettingsActivity extends PreferenceActivity implements OnPreferenceChangeListener, OnPreferenceClickListener { @@ -72,7 +77,7 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference private ListPreference routerPreference; private ListPreference maxLevelToDownload; private ListPreference mapScreenOrientation; - + private ListPreference voicePreference; private BooleanPreference[] booleanPreferences = new BooleanPreference[]{ @@ -87,6 +92,7 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference new BooleanPreference(OsmandSettings.SAVE_TRACK_TO_GPX, OsmandSettings.SAVE_TRACK_TO_GPX_DEF), }; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -127,6 +133,8 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference tileSourcePreference.setOnPreferenceChangeListener(this); routerPreference =(ListPreference) screen.findPreference(OsmandSettings.ROUTER_SERVICE); routerPreference.setOnPreferenceChangeListener(this); + voicePreference =(ListPreference) screen.findPreference(OsmandSettings.VOICE_PROVIDER); + voicePreference.setOnPreferenceChangeListener(this); } @@ -194,6 +202,31 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference routerPreference.setEntries(entries); routerPreference.setEntryValues(entries); routerPreference.setValue(entry); + + // read available voice data + File extStorage = new File(Environment.getExternalStorageDirectory(), CommandPlayer.VOICE_DIR); + Set setFiles = new LinkedHashSet(); + if (extStorage.exists()) { + for (File f : extStorage.listFiles()) { + if (f.isDirectory()) { + setFiles.add(f.getName()); + } + } + } + String provider = OsmandSettings.getVoiceProvider(this); + entries = new String[setFiles.size() + 1]; + int k = 0; + entries[k++] = getString(R.string.voice_not_use); + for(String s : setFiles){ + entries[k++] = s; + } + voicePreference.setEntries(entries); + voicePreference.setEntryValues(entries); + if(setFiles.contains(provider)){ + voicePreference.setValue(provider); + } else { + voicePreference.setValueIndex(0); + } int startZoom = 12; int endZoom = 19; @@ -280,6 +313,15 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference edit.putInt(OsmandSettings.ROUTER_SERVICE, s.ordinal()); } edit.commit(); + } else if (preference == voicePreference) { + int i = voicePreference.findIndexOfValue((String) newValue); + if(i==0){ + edit.putString(OsmandSettings.VOICE_PROVIDER, null); + } else { + edit.putString(OsmandSettings.VOICE_PROVIDER, (String) newValue); + } + edit.commit(); + CommandPlayer.init(this); } else if (preference == tileSourcePreference) { edit.putString(OsmandSettings.MAP_TILE_SOURCES, (String) newValue); edit.commit(); diff --git a/OsmAnd/src/com/osmand/activities/ShowRouteInfoActivity.java b/OsmAnd/src/com/osmand/activities/ShowRouteInfoActivity.java index 26a886eaf1..c69251beaf 100644 --- a/OsmAnd/src/com/osmand/activities/ShowRouteInfoActivity.java +++ b/OsmAnd/src/com/osmand/activities/ShowRouteInfoActivity.java @@ -34,6 +34,7 @@ import com.osmand.activities.RoutingHelper.RouteDirectionInfo; import com.osmand.activities.RoutingHelper.TurnType; import com.osmand.osm.MapUtils; import com.osmand.views.MapInfoLayer; +import com.osmand.voice.CommandPlayer; /** * @@ -62,6 +63,11 @@ public class ShowRouteInfoActivity extends ListActivity { RouteDirectionInfo item = ((RouteInfoAdapter)getListAdapter()).getItem(position - 1); RoutingHelper inst = RoutingHelper.getInstance(this); Location loc = inst.getLocationFromRouteDirection(item); + CommandPlayer player = CommandPlayer.getInstance(this); + if(player != null){ + // TODO temp solution + player.newCommandBuilder().prepareTurnLeft(300).play(); + } if(loc != null){ OsmandSettings.setMapLocationToShow(this, loc.getLatitude(),loc.getLongitude()); startActivity(new Intent(this, MapActivity.class)); diff --git a/OsmAnd/src/com/osmand/views/OsmBugsLayer.java b/OsmAnd/src/com/osmand/views/OsmBugsLayer.java index ce5fb62be4..173eb26148 100644 --- a/OsmAnd/src/com/osmand/views/OsmBugsLayer.java +++ b/OsmAnd/src/com/osmand/views/OsmBugsLayer.java @@ -190,60 +190,59 @@ public class OsmBugsLayer implements OsmandMapLayer { @Override public boolean onLongPressEvent(PointF point) { - if (objects != null && !objects.isEmpty()) { + final OpenStreetBug bug = getBugFromPoint(point); + if(bug != null){ + Builder builder = new AlertDialog.Builder(view.getContext()); + Resources resources = view.getContext().getResources(); + builder.setItems(new String[]{ + resources.getString(R.string.osb_comment_menu_item), + resources.getString(R.string.osb_close_menu_item) + }, new DialogInterface.OnClickListener(){ + @Override + public void onClick(DialogInterface dialog, int which) { + if(which == 0){ + commentBug(view.getContext(), activity.getLayoutInflater(), bug); + } else if(which == 1){ + closeBug(view.getContext(), activity.getLayoutInflater(), bug); + } + } + }); + builder.create().show(); + return true; + } + return false; + } + + public OpenStreetBug getBugFromPoint(PointF point){ + OpenStreetBug result = null; + if (objects != null) { int ex = (int) point.x; int ey = (int) point.y; int radius = getRadiusBug(view.getZoom()) * 3 / 2; try { - for (final OpenStreetBug n : objects) { + for (int i = 0; i < objects.size(); i++) { + OpenStreetBug n = objects.get(i); int x = view.getRotatedMapXForPoint(n.getLatitude(), n.getLongitude()); int y = view.getRotatedMapYForPoint(n.getLatitude(), n.getLongitude()); if (Math.abs(x - ex) <= radius && Math.abs(y - ey) <= radius) { - Builder builder = new AlertDialog.Builder(view.getContext()); - Resources resources = view.getContext().getResources(); - builder.setItems(new String[]{ - resources.getString(R.string.osb_comment_menu_item), - resources.getString(R.string.osb_close_menu_item) - }, new DialogInterface.OnClickListener(){ - @Override - public void onClick(DialogInterface dialog, int which) { - if(which == 0){ - commentBug(view.getContext(), activity.getLayoutInflater(), n); - } else if(which == 1){ - closeBug(view.getContext(), activity.getLayoutInflater(), n); - } - } - }); - builder.create().show(); - return true; + radius = Math.max(Math.abs(x - ex), Math.abs(y - ey)); + result = n; } } } catch (IndexOutOfBoundsException e) { // that's really rare case, but is much efficient than introduce synchronized block } } - return false; + return result; } @Override public boolean onTouchEvent(PointF point) { - if (objects != null && !objects.isEmpty()) { - int ex = (int) point.x; - int ey = (int) point.y; - int radius = getRadiusBug(view.getZoom()) * 3 / 2; - try { - for (OpenStreetBug n : objects) { - int x = view.getRotatedMapXForPoint(n.getLatitude(), n.getLongitude()); - int y = view.getRotatedMapYForPoint(n.getLatitude(), n.getLongitude()); - if (Math.abs(x - ex) <= radius && Math.abs(y - ey) <= radius) { - String format = "Bug : " + n.getName(); //$NON-NLS-1$ - Toast.makeText(view.getContext(), format, Toast.LENGTH_LONG).show(); - return true; - } - } - } catch (IndexOutOfBoundsException e) { - // that's really rare case, but is much efficient than introduce synchronized block - } + OpenStreetBug bug = getBugFromPoint(point); + if(bug != null){ + String format = "Bug : " + bug.getName(); //$NON-NLS-1$ + Toast.makeText(view.getContext(), format, Toast.LENGTH_LONG).show(); + return true; } return false; } diff --git a/OsmAnd/src/com/osmand/views/OsmandMapTileView.java b/OsmAnd/src/com/osmand/views/OsmandMapTileView.java index 2549c13c46..0ece57d6a0 100644 --- a/OsmAnd/src/com/osmand/views/OsmandMapTileView.java +++ b/OsmAnd/src/com/osmand/views/OsmandMapTileView.java @@ -694,7 +694,8 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall @Override public boolean onDown(MotionEvent e) { - animatedDraggingThread.stopAnimating(); + // enable double tap animation +// animatedDraggingThread.stopAnimating(); return false; } @@ -792,8 +793,8 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall @Override public boolean onDoubleTap(MotionEvent e) { LatLon l = getLatLonFromScreenPoint(e.getX(), e.getY()); - setLatLon(l.getLatitude(), l.getLongitude()); - setZoom(zoom + 1); + getAnimatedDraggingThread().startMoving(getLatitude(), getLongitude(), + l.getLatitude(), l.getLongitude(), getZoom(), getZoom() + 1, getSourceTileSize(), getRotate(), true); return true; } diff --git a/OsmAnd/src/com/osmand/views/POIMapLayer.java b/OsmAnd/src/com/osmand/views/POIMapLayer.java index 8d7605a825..2464e7195a 100644 --- a/OsmAnd/src/com/osmand/views/POIMapLayer.java +++ b/OsmAnd/src/com/osmand/views/POIMapLayer.java @@ -74,6 +74,7 @@ public class POIMapLayer implements OsmandMapLayer { } public Amenity getAmenityFromPoint(PointF point){ + Amenity result = null; if (objects != null) { int ex = (int) point.x; int ey = (int) point.y; @@ -84,14 +85,15 @@ public class POIMapLayer implements OsmandMapLayer { int x = view.getRotatedMapXForPoint(n.getLocation().getLatitude(), n.getLocation().getLongitude()); int y = view.getRotatedMapYForPoint(n.getLocation().getLatitude(), n.getLocation().getLongitude()); if (Math.abs(x - ex) <= radius && Math.abs(y - ey) <= radius) { - return n; + radius = Math.max(Math.abs(x - ex), Math.abs(y - ey)); + result = n; } } } catch (IndexOutOfBoundsException e) { // that's really rare case, but is much efficient than introduce synchronized block } } - return null; + return result; } diff --git a/OsmAnd/src/com/osmand/views/TransportStopsLayer.java b/OsmAnd/src/com/osmand/views/TransportStopsLayer.java index 7a4a2beb75..92b0bd0581 100644 --- a/OsmAnd/src/com/osmand/views/TransportStopsLayer.java +++ b/OsmAnd/src/com/osmand/views/TransportStopsLayer.java @@ -44,6 +44,7 @@ public class TransportStopsLayer implements OsmandMapLayer { } public TransportStop getFromPoint(PointF point){ + TransportStop result = null; if (objects != null) { int ex = (int) point.x; int ey = (int) point.y; @@ -54,14 +55,15 @@ public class TransportStopsLayer implements OsmandMapLayer { int x = view.getRotatedMapXForPoint(n.getLocation().getLatitude(), n.getLocation().getLongitude()); int y = view.getRotatedMapYForPoint(n.getLocation().getLatitude(), n.getLocation().getLongitude()); if (Math.abs(x - ex) <= radius && Math.abs(y - ey) <= radius) { - return n; + radius = Math.max(Math.abs(x - ex), Math.abs(y - ey)); + result = n; } } } catch (IndexOutOfBoundsException e) { // that's really rare case, but is much efficient than introduce synchronized block } } - return null; + return result; } diff --git a/OsmAnd/src/com/osmand/voice/CommandPlayer.java b/OsmAnd/src/com/osmand/voice/CommandPlayer.java new file mode 100644 index 0000000000..1b63d27bcf --- /dev/null +++ b/OsmAnd/src/com/osmand/voice/CommandPlayer.java @@ -0,0 +1,312 @@ +package com.osmand.voice; + + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.logging.Log; + +import alice.tuprolog.InvalidLibraryException; +import alice.tuprolog.InvalidTheoryException; +import alice.tuprolog.NoSolutionException; +import alice.tuprolog.Number; +import alice.tuprolog.Prolog; +import alice.tuprolog.SolveInfo; +import alice.tuprolog.Struct; +import alice.tuprolog.Term; +import alice.tuprolog.Theory; +import alice.tuprolog.Var; +import android.content.Context; +import android.media.MediaPlayer; +import android.os.Environment; + +import com.osmand.Algoritms; +import com.osmand.LogUtil; +import com.osmand.OsmandSettings; +import com.osmand.R; +import com.osmand.ResourceManager; + +public class CommandPlayer { + + public static final String VOICE_DIR = ResourceManager.APP_DIR + "/voice"; //$NON-NLS-1$ + public static final int VOICE_VERSION = 0; + private static final Log log = LogUtil.getLog(CommandPlayer.class); + + private static CommandPlayer instance = null; + + protected Context ctx; + private File voiceDir; + + // resolving commands to play + private Prolog prologSystem; + + // playing media + private MediaPlayer mediaPlayer; + private List filesToPlay = new ArrayList(); + + /** + * @param ctx + * @return null could be returned it means there is no available voice config + */ + public static CommandPlayer getInstance(Context ctx) { + init(ctx); + return instance; + } + + + public static String init(Context ctx){ + if(OsmandSettings.getVoiceProvider(ctx) == null && instance == null){ + return null; + } + if(instance == null){ + long time = System.currentTimeMillis(); + instance = new CommandPlayer(ctx); + if (log.isInfoEnabled()) { + log.info("Initializing prolog system : " + (System.currentTimeMillis() - time)); //$NON-NLS-1$ + } + } + instance.ctx = ctx; + if(!Algoritms.objectEquals(OsmandSettings.getVoiceProvider(ctx), instance.getCurrentVoice())){ + return instance.init(); + } + + return null; + } + + protected CommandPlayer(Context ctx){ + try { + this.ctx = ctx; + prologSystem = new Prolog(new String[]{"alice.tuprolog.lib.BasicLibrary"}); //$NON-NLS-1$ + } catch (InvalidLibraryException e) { + log.error("Initializing error", e); //$NON-NLS-1$ + throw new RuntimeException(e); + } + mediaPlayer = new MediaPlayer(); + } + + public String getCurrentVoice(){ + if(voiceDir == null){ + return null; + } + return voiceDir.getName(); + } + + protected String init(){ + String voiceProvider = OsmandSettings.getVoiceProvider(ctx); + prologSystem.clearTheory(); + voiceDir = null; + if(voiceProvider != null){ + File parent = new File(Environment.getExternalStorageDirectory(), VOICE_DIR); + voiceDir = new File(parent, voiceProvider); + if(!voiceDir.exists()){ + voiceDir = null; + return ctx.getString(R.string.voice_data_unavailable); + } + } + if(voiceDir != null) { + long time = System.currentTimeMillis(); + File config = new File(voiceDir, "_config.p"); //$NON-NLS-1$ + boolean wrong = !config.exists(); + + if (!wrong) { + + try { + prologSystem.setTheory(new Theory(new FileInputStream(config))); + } catch (InvalidTheoryException e) { + log.error("Loading voice config exception " + voiceProvider, e); //$NON-NLS-1$ + } catch (IOException e) { + log.error("Loading voice config exception " + voiceProvider, e); //$NON-NLS-1$ + } + } + if(wrong){ + return ctx.getString(R.string.voice_data_corrupted); + } else { + boolean versionSupported = false; + Var v = new Var("VERSION"); //$NON-NLS-1$ + SolveInfo s = prologSystem.solve(new Struct(P_VERSION, v)); + if(s.isSuccess()){ + prologSystem.solveEnd(); + try { + Term val = s.getVarValue(v.getName()); + if(val instanceof Number){ + versionSupported = ((Number) val).intValue() == VOICE_VERSION; + } + } catch (NoSolutionException e) { + } + } + if(!versionSupported){ + return ctx.getString(R.string.voice_data_not_supported); + } + } + + if (log.isInfoEnabled()) { + log.info("Initializing voice subsystem " + voiceProvider + " : " + (System.currentTimeMillis() - time)); //$NON-NLS-1$ //$NON-NLS-2$ + } + + } + return null; + } + + public CommandBuilder newCommandBuilder(){ + return new CommandBuilder(); + } + + protected static final String P_VERSION = "version"; //$NON-NLS-1$ + protected static final String P_RESOLVE = "resolve"; //$NON-NLS-1$ + + protected static final String С_PREPARE_TURN_LEFT = "prepare_turn_left"; //$NON-NLS-1$ + protected static final String С_PREPARE_TURN_RIGHT = "prepare_turn_right"; //$NON-NLS-1$ + protected static final String С_PREAMBLE = "preamble"; //$NON-NLS-1$ + + protected static final String DELAY_CONST = "delay_"; //$NON-NLS-1$ + + public class CommandBuilder { + + + private boolean alreadyExecuted = false; + private List listStruct = new ArrayList(); + + public CommandBuilder(){ + this(true); + } + + public CommandBuilder(boolean preamble) { + if (preamble) { + addCommand(С_PREAMBLE); + } + } + + private void checkState(){ + if(alreadyExecuted){ + throw new IllegalArgumentException(); + } + } + + private CommandBuilder addCommand(String name, Object... args){ + checkState(); + Term[] list = new Term[args.length]; + for (int i = 0; i < args.length; i++) { + Object o = args[i]; + if(o instanceof java.lang.Number){ + if(o instanceof java.lang.Double){ + list[i] = new alice.tuprolog.Double((Double) o); + } else if(o instanceof java.lang.Float){ + list[i] = new alice.tuprolog.Float((Float) o); + } else if(o instanceof java.lang.Long){ + list[i] = new alice.tuprolog.Long((Long) o); + } else { + list[i] = new alice.tuprolog.Int(((java.lang.Number)o).intValue()); + } + } else if(o instanceof String){ + list[i] = new Struct((String) o); + } + if(list[i]== null){ + throw new NullPointerException(name +" " + o); //$NON-NLS-1$ + } + } + Struct struct = new Struct(name, list); + listStruct.add(struct); + return this; + } + + public CommandBuilder prepareTurnLeft(double dist){ + return addCommand(С_PREPARE_TURN_LEFT, dist); + } + + public CommandBuilder prepareTurnRight(double dist){ + return addCommand(С_PREPARE_TURN_LEFT, dist); + } + + public void play(){ + CommandPlayer.this.playCommands(this); + } + + protected List execute(){ + alreadyExecuted = true; + return CommandPlayer.this.execute(listStruct); + } + + } + + protected List execute(List listCmd){ + Struct list = new Struct(listCmd.toArray(new Term[listCmd.size()])); + Var result = new Var("RESULT"); //$NON-NLS-1$ + List files = new ArrayList(); + SolveInfo res = prologSystem.solve(new Struct(P_RESOLVE, list, result)); + + if (res.isSuccess()) { + try { + prologSystem.solveEnd(); + Term solution = res.getVarValue(result.getName()); + + Iterator listIterator = ((Struct) solution).listIterator(); + while(listIterator.hasNext()){ + Object term = listIterator.next(); + if(term instanceof Struct){ + files.add(((Struct) term).getName()); + } + } + + } catch (NoSolutionException e) { + } + } + return files; + } + + public void playCommands(CommandBuilder builder){ + filesToPlay.addAll(builder.execute()); + playQueue(); + } + + private void playQueue() { + boolean playNext = true; + while (!filesToPlay.isEmpty() && playNext) { + String f = filesToPlay.remove(0); + if (f != null && voiceDir != null) { + File file = new File(voiceDir, f); + if (file.exists()) { + try { + mediaPlayer.setDataSource(file.getAbsolutePath()); + mediaPlayer.prepare(); + mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + public void onCompletion(MediaPlayer mp) { + mediaPlayer = new MediaPlayer(); + int sleep = 60; + boolean delay = true; + while (!filesToPlay.isEmpty() && delay) { + delay = filesToPlay.get(0).startsWith(DELAY_CONST); + if (delay) { + String s = filesToPlay.remove(0).substring(DELAY_CONST.length()); + try { + sleep += Integer.parseInt(s); + } catch (NumberFormatException e) { + } + } + } + try { + Thread.sleep(sleep); + } catch (InterruptedException e) { + } + playQueue(); + } + }); + playNext = false; + mediaPlayer.start(); + } catch (Exception e) { + log.error("Error while playing voice command", e); //$NON-NLS-1$ + playNext = true; + + } + } + } + } + } + +} + + +