osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.67k stars 1.02k forks source link

AIDL showGPX not showing imported file #19217

Closed uranija closed 7 months ago

uranija commented 8 months ago

Description

I am trying to integrate OsmAnd into my app using AIDL interface and helper class OsmAndAidlHelper like it was shown in demo OsmAnd app, i get gpx file from rest and when i import it into OsmAnd using importGpxFromUri command, so file is imported into OsmAnd, i checked it, but after import nothing happens, file is not displayed and OsmAnd doesnt start. Also using showGPX doesnt do anything.

Steps to reproduce

Integrate AIDl into your app, import Gpx file from your app using AIDL command - importGpxFromUri, and try to show file using AIDl command -showGPX

Actual result

Nothing happens, logs don't show anything.

Expected result

OsmAnd should start and show imported GPX file.

Your Environment (required)

WARNING Crash-Logs MAY contain information you deem sensitive. Review this CAREFULLY before posting your issue!

OsmAnd Version: 4.6
Android/iOS version: API 33
Device model: Tablet Nexus 7 API 33
Crash-Logs: ?
vshcherb commented 8 months ago

That's strange we need to investigate.

uranija commented 8 months ago

Hi again, so I tried to display imported file using intents, and with intents Osmand starts and displays the imported gpx, but not using AIDL, maybe show=true flag isn't triggered inside function importGpxFromUri(Uri gpxUri, String fileName, String color, boolean show), but i dont know how to check it inside Osmand itself if the code is trigerred or not.

vshcherb commented 7 months ago

Yes, we hope to get it fixed in 4.7

uranija commented 7 months ago

Hi again, when do you plan to release this fix in 4.7?

0xRe1nk0 commented 7 months ago

@uranija Currently the "show" flag in the method importGpxFromUri() is not responsible for opening gpx, but for switching the visibility of gpx on the map. The showGPX() method works similar to the flag "show"=true, it just makes gpx visible on the map. There is also the opposite method - hideGpx(), which hides gpx on the map

uranija commented 7 months ago

@uranija Currently the "show" flag in the method importGpxFromUri() is not responsible for opening gpx, but for switching the visibility of gpx on the map. The showGPX() method works similar to the flag "show"=true, it just makes gpx visible on the map. There is also the opposite method - hideGpx(), which hides gpx on the map

Hi again, and thank you for the reply. I have some other questions too. Does AIDL helper class has any methods to open gpx in Osmand? I have a client app which gets gpx file through Rest and needs Osmand to open/navigate that file using AIDL interface. Only using intents seems to work for opening gpx file. i tried using navigateGpxFromUri() method after importGpxFromUri() but still Osmand wasnt starting with imported gpx file. Am i doing something wrong?

0xRe1nk0 commented 7 months ago

@uranija Currently the "show" flag in the method importGpxFromUri() is not responsible for opening gpx, but for switching the visibility of gpx on the map. The showGPX() method works similar to the flag "show"=true, it just makes gpx visible on the map. There is also the opposite method - hideGpx(), which hides gpx on the map

Hi again, and thank you for the reply. I have some other questions too. Does AIDL helper class has any methods to open gpx in Osmand? I have a client app which gets gpx file through Rest and needs Osmand to open/navigate that file using AIDL interface. Only using intents seems to work for opening gpx file. i tried using navigateGpxFromUri() method after importGpxFromUri() but still Osmand wasnt starting with imported gpx file. Am i doing something wrong?

If you want to open Osmand and navigate gpx file you can use this method in OsmAndHelper. AIDL methods, like navigateGpxFromUri(), importGpxFromUri() or others mainly work with Osmand in the background without opening it

uranija commented 7 months ago

@uranija Currently the "show" flag in the method importGpxFromUri() is not responsible for opening gpx, but for switching the visibility of gpx on the map. The showGPX() method works similar to the flag "show"=true, it just makes gpx visible on the map. There is also the opposite method - hideGpx(), which hides gpx on the map

Hi again, and thank you for the reply. I have some other questions too. Does AIDL helper class has any methods to open gpx in Osmand? I have a client app which gets gpx file through Rest and needs Osmand to open/navigate that file using AIDL interface. Only using intents seems to work for opening gpx file. i tried using navigateGpxFromUri() method after importGpxFromUri() but still Osmand wasnt starting with imported gpx file. Am i doing something wrong?

If you want to open Osmand and navigate gpx file you can use this method in OsmAndHelper. AIDL methods, like navigateGpxFromUri(), importGpxFromUri() or others mainly work with Osmand in the background without opening it

Hi again, i have another question, we have our own app and we need Osmand to send back callback when driver is out of route and we need Osmand to navigate a generated gpx route which we get from Rest. Biggest problem is when driver gets out of road, we need to get callback from Osmand to our app to generate new route gpx to send to app via Rest and to Osmand to navigate. Maybe we could combine both services: AIDL for background out of route callback to our app and simple OsmAndHelper to start Osmand to navigate generated gpx route? Is this possible MicrosoftTeams-image (6)

vshcherb commented 7 months ago

quite confusing... it's better to use Online Routing and it will recalculate and do navigation on itself using the settings.

uranija commented 7 months ago

But is there a possibility to send callback using OsmandAIDLHelper to my driver app if driver gets out of route, because we have our own server to calculate/recalculate route and using Osmand only to navigate, in this scenario Osmand would send callback to my driver app, that driver is out of route, and get new recalculated gpx and my driver app will send it to Osmand to navigate?