get Walking route - Android - java

I used the method used on that link to show a route between two GeoPoints :
Why retrieving Google Directions for Android using KML data is not working anymore?
I would like to know if there's a way to get a walking route instead of the driving route.

You require mode parameter value in your URL.
Check out here, different parameters which can be append to URL.
For providing Mode value in URL your have only 4 mode supported.
driving (by default)
walking
bicycling
transit
Supported mode value documented here.
Sample URL :
http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=false&mode=walking

Related

Limit Android Google Places API to search only given area

I`m using Android Google Places API to autocomplete streets and addresses. The problem is that it gives all streets from a whole country. Of course I added bounds to limit place for search, but it doesnt work correctly - it gives only priority, so in other words best results will be higher in list, nothing more
So code:
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_ADDRESS)
.setCountry("RU")
.build();
Intent intent =
new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY)
.zzih(searchString) //that is for passing search string from toolbar
.setFilter(typeFilter)
.setBoundsBias(city.getBounds())
.build(this);
In short the problem is:
When I type in search something like "Lenina Street" I see a lot of useless results out of bounds set in .setBoundsBias(city.getBounds()). Just imagine that something like "Lenina Street" exists in almost every locality!
How can I fix the problem and limit search results?
P.S.
I know I can use Google Places Web API or by GeoDataApi.getAutocompletePredictions() and filter results manually,
but that means I have to write UI manually too, what I dont want to
do.
Thats even worse than I thought. Even if I get results from Web API or through GeoDataApi I have only predictions which doesnt contain coordinates, only placeId. So if I want to filter predictions by coordinates I have to do request for each placeId. In other words if I got 20 places I will have to do 20 more requests to find out coordinates.
Also I can add city name in searchString, that makes results better (but not at all) but it makes writing of address unclear and city name takes place, so its not good solution too.
I'm afraid Places API for Android doesn't support strict bounds yet. There is a feature request in Google Issue tracker to implement this:
https://issuetracker.google.com/issues/38188994
Feel free to star this feature request to add your vote and subscribe to notifications from Google.
In the meantime the workaround might be using Places API web service that supports strict bounds and implement the UI manually.
UPDATE
The feature request was marked as Fixed by Google. Have a look at https://stackoverflow.com/a/50134855/5140781 that shows how to apply strict bounds in Places API for Android.

Get notification in my client code

I want to get the notifications about any change in any issues in my jira server.
I have basic code for connecting jira from java code using jira-rest-java-client library that they have provided.
I searched their javadocs and also went through some classes in that API library but I could not find any methods/classes which would be helpful to me.
Does anyone know if it is possible to get notification events from changes in jira to my java code (may be via polling or something like that).
What do you want to achieve?
You want to have push notifications? There isn't any, IMHO.
UPDATE: However, there is this WebHook thingy: https://confluence.atlassian.com/display/JIRA/Managing+Webhooks.
I have no expertise with it, but it is promising, please read this short introduction also: http://blogs.atlassian.com/2012/10/jira-5-2-remote-integration-webhooks/.
You are looking for something that gives you back what changed in the last N minutes, something like the Activity Stream? You can get the RSS feed of Activity Streams for Projects and for Users.
How
The base URL is https://jira.contoso.com/activity. Then you can append querystring parameters, like maxResults for paginating.
Selecting the data source is through the filters you provide in the streams parameter. It looks like it is JQL, but it's not.
Examples:
List a project's activites: ?streams=key+IS+SOMEPROJ.
List a user's activites: ?streams=user+IS+foobar.
List event between two dates: ?streams=update-date+BETWEEN+1425300236000+1425300264999. (Note: the epoch is the millisecond precision epoch.)
List user activities in one project: ?streams=user+IS+JohnDoe&streams=key+IS+PROJECTKEY.
More complex ones: ?streams=user+IS+JohnDoe&streams=key+IS+PROJECTKEY&streams=activity+IS+issue:close
Watch out, it is case sensitive, on my JIRA 6.1.9, if I write Is instead of IS, I get an error page (but not if AFTER is not all uppercase o.O).
Also note, that spaces should be encoded as plus signs (+), not URL encoded (%20 for spaces).
If you go to your JIRA, and fetch the following URL: https://jira.yourserver.com/rest/activity-stream/1.0/config, it will list all the combinations it accepts.
What
The call returns a standard Atom feed. You can then process it with XML query tools, or with other Java-based RSS/ATOM reader libraries.
Noteworthy document about this topic: https://developer.atlassian.com/docs/atlassian-platform-common-components/activity-streams/consuming-an-activity-streams-feed

Get route points on Android using mapquest

I'm using mapquest java library for Android. Actualy I have simple android application with map and I can determine route between two locations. The thing I need to do is to get geopoints of this route. The code below is from samples of mapquest.
routeManager.setRouteCallback(new RouteManager.RouteCallback() {
public void onSuccess(RouteResponse routeResponse) {
clearButton.setVisibility(View.VISIBLE);
if (showItineraryButton.getVisibility() == View.GONE &&
showMapButton.getVisibility() == View.GONE) {
showItineraryButton.setVisibility(View.VISIBLE);
}
createRouteButton.setEnabled(true);
}
});
The routeResponse object has a serviceResponse field of jsonObject type. One of the elements of this jsonObject is field called "shapePoints". The documentation of the RouteResponse sais that routeResponse field should have an array of geopoints pairs. I'm not getting this array, but some kind of hashed string :/ :
"shapePoints":"gvxpjAfxthgEkF?cQ]yQ?umA?qMOog#Oej#?u|Ak#qv#OcLOoHiBcGwD_IoHiCkAoCOmFN_DjAyBhBaBhC}JpR??gToS_b#}_#oIaHee#{`#k_#c[eo#se#ce#q\\iHsEgh#q\\}m#__#_i#uY_IeEyWgNav#}_#cjAum#s~#sf#{[eOc[kLiMeE{JwCgTsFmd#oIuwAkVwiHqoAux#wNgh#oIuYuEqMiBuJ{AyLyB}JyB_SeEmPeEuSsFka#{Lse#wMsPeFcLwCqjAm^ey#mUuiD{_Akp#aReTaGoSuE{[sGm_#uDku#sFyL}#eJ{#eJkAgJkA{J{BwIgCyGyBoNcGaNaHkd#iWgT{KyQ}JmUkKwX{KmqBcp#a_B}h#cVaIab#wMiRcGgc#uNa`Ae[_d#uNu^{L}JwCsZ}JyRaGwXsGe^oHgc#qHuaC{`#{nAmT}w#wMykAaSchBiWoqAqQq`AwNqv#{KyyA_Tia#cGiMgCmF}#mE{#kPiCmUuE}c#kKeo#ePmn#uO{OgDcQwC{QiCqQiBe`#wCsZ{Awr#}#}TMm_#Ogr#N_]O{`#]se#O{y#]yH?sKL_NzAmPxC{JhB}OhBmP|#wNl#{O\\ka#xBiRjA}^hCmd#xBoXz#wb#?uhA]iW{#qRiCiWcGcVoH}EkBeTaHeJyBaNkA{Jm#aS{#_S?iWl#cQxAaXfEuY|Ic[hMsP~HgO~IiWnRmd#~^yLlIi\\zVir#ng#{TfOiR|J{Q`GiMvDsPfCoIlA}JjA??_I]kK\\mOhBuOhCyg#fNc`#lUcQzJkP`I{j#bZ_hAhl#y`#nSwc#jVmYhMyWhMyLpGab#|ToqArp#ip#p[ej#r[}^lTuOlKqMjKeOfNiMlK_DtDyLtOoIzLuPdYaQtYee#hv#cQdZuT`]yQlUmUxV_InI_s#fw#_XfYeEtEag#xk#kFrF}OpQmUvYmOzT}i#~|#cQlUw]fc#}T|T_XxViRvNkFdE{GdE{J`IaIrF_IrEoN`Is_#pQiR~Hwr#~SwNfDo{Az`#et#pQcLtEc[pGob#pHw]hBiRzAaX?_X{#oXgDmKkAsKyBeTuF}OeEcVoI??cVoSoIsFcGeE_SyLuUoIkPsFcL{AcQuDwSyByf#oJwSsE}OqH{O{KoNwNgJ_IsFeEiMcGkKkA_N]??cLeEqCwD{#_Il#ku#z#ofANag#Tud#Ns[|#ux#pAikAbB}}#NiLhBkiA?m~#?mhA?cp#?ag#?mJ?kiA?cQ?iM?iM?sZ?ee#Nia#?}gA?afATud#?kV?wM?qoANoqAe#qR}#}JeE{K_IkKiCeF_DaGsAgEe#eEOgD?gD?iBNyB|#wCxBcGjAwD~CsFxGoHbByCzEwMd#cG?cP?gc#?yk#{#kLcBcGVkK?kK?{`#??kB?"
Please help me with the funny shapePoints string, to get geopoints of the route. Maybe there is a different way to get those points. I was trying to google it for few days but without any bigger results ;/
The shapePoints string that you are seeing is actually a compressed format, so it is showing the shapePoints, but just not in a regular, readable raw format. The Android Maps API uses the MapQuest Directions Web Service for routing functions. The default routeResponse format in the Android API is cmp6, which is the compressed format that you are seeing, because it is generally more efficient to use the compressed format in an application.
You can tell the Directions Web Service to send the response back in a raw format by setting the shapeFormat parameter, which is included in the Directions Web Service documentation under the Advanced Routing Options section. Check out the Android Maps API Reference Guide for more specific information about setting the route options from within the Android Maps API -- look for the setOptions method on this page.
Also, just want to add that there is a Android Maps API forum on the MapQuest Developer Network and it is also a good resource to check when you have questions about the Android or other MapQuest APIs, like Flash, iOS, etc.
Please don't hesitate to ask if you need more assistance!

CEP: source for real-time events or data feeds?

I am searching for free event sources that I can use within my java-application.
I am looking for something similar to YahooFinance, where one can query a bunch of stock info and retrieve the result as csv.
Ideally, an API or a URL with some query string would be perfect.
How about SuperFeedr?
You could also run some SPARQL-query on some SPARQL-Endpoint and "feed" the result back to your application. Here is a list of some endpoints (here including uptime and availability stats).
Twitter also offers an Streaming-API, where one can listen for status changes etc. Another way could be to implement some HTML-crawler that extracts interesting facts from webpages, but that's probably not what you are looking for...
Kind of related:
Flickr API - observe activities on flickr
SO - Cricket API
for this you can use Rss4j api which provide both read feed and also create you own feed.
hope this will help you

Java Bing Image Search

I have a small application in java which searches images using bing image search. The problem I am facing is that, its getting only first 20 images. May be because when we search on bing.com it populates first 20 images first and then its an infinite scrolling feature.
Is there any way to search more than 20 images using bing?
Cheers :)
I'm guessing this is because this site uses ajax to populate the "infinite" scrolling list as you call it.
You probably send an http request and get the initial page (btw on my browser I got 6 images accross x 4 down, i.e. 24 not 20; thinking about it maybe my client also got 20 only at first and got the last 4 w/ ajax...), and you'd need to do the paging trough by way of ajax requests.
At a glance, the xhtml and associated javascript of the page is very dense and somewhat obfuscated, It would take a while to get oriented... An alternative to analyzing this page is to instead use a packet sniffer (such as wireshark) and to capture the requests which take place when you scroll down.
Essentially this will likely expose some form of ajax request, which you can then easily emulate with java. Typically the ajax response is easy to parse whatever its nature (xml, jason, gzip...).
A possible snags to this well laid out plan is if the returned data in the ajax response is encrypted, for example where the extra images are bundled in some sort of envelope for which you'll then need to discover the format.
Depending on the actual task at hand, you may try alternatives such as automations within GreaseMonkey (on Firefox) or similar tools.
What of Bing API ?
Note that all the above approaches are akin to screen-scraping and hence quite sensitive to even minute changes in the Bing application, and, depending on effective usage and context, this could put the project in a legal grey area... A better approach may be to register and obtain a proper application ID with MS/Bing and to use the Bing API.
You are simulating a browser? Doesn't the Bing engine have an entry point for programs instead - a web service or so - which would make your task much easier.
EDIT: SDK appears to be here: http://msdn.microsoft.com/en-us/library/cc980922.aspx
Just wanted to post a direct answer to the question:
Bing uses Ajax (of course) for the infinite scroll. Each "tick" is based on a simple ajax get request, which accuires new images.
For instance, this url returns 30 results (121-151) in a "htmlraw" format based on the query "max payne".
http://www.bing.com/images/async?q=max+payne&format=htmlraw&first=121
Edit:
It works with the original url too, just add &first=NUMBER to the querystring. Example:
www.bing.com/images/search?q=payne&go=&form=QBLH&scope=images&filt=all&first=10
I am building my own bulk image collector (for a "learning project" for myself) and I found out that it is paginated like this.
FYI, Google and Bing are easy, Yahoo and Altavista (redundant, since their results are from Yahoo) are far more problematic - they don't post the directlink to the original image.
Have fun! :)
This can be done by using count parameter. For example, I tried GET "https://api.cognitive.microsoft.com/bing/v7.0/images/search?q=shoes&mkt=en-us&count=30" call and it returns 30 images.

Categories

Resources