Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for ARCore #1672

Open
rugk opened this issue Feb 15, 2022 · 14 comments
Open

Support for ARCore #1672

rugk opened this issue Feb 15, 2022 · 14 comments

Comments

@rugk
Copy link

rugk commented Feb 15, 2022

Is your feature request related to a problem? Please describe.
ARCore is an quite oldish (2017-released) already SDK for doing AR/VR related things like measuring via your camera.

Now StreetComplete is working on integrating it.

The problem is it depends on Google Play Services/a proprietary app as far as I see.

Describe the solution you'd like
Of course, it would be awesome if one could make it work:

  • if one chooses to install the proprietary ARCore app
  • or even without the ARCore and only microG installed

Describe alternatives you've considered
I know especially the second solution is very likely a huge and quite impossible task for this project (or are FLOSS AI models and tensorflow stuff already enough to implement such a thing?), so that's why I also looked into your wiki status page but could not find that feature listed there.

As such, the alternative would be to document the (intended) support status at least.

Additional context

@tuxayo
Copy link

tuxayo commented Mar 16, 2022

Best would be to have it as a separate library that microG would use and that other apps can integrate. So for example StreetComplete wouldn't need to use a non-libre dependency on any device. Regardless of Play Services installed or not.

Maybe there is already a libre library for some of the AR features needed for ARCore?

@rugk
Copy link
Author

rugk commented Mar 17, 2022

BTW, I looked into this again and had a big surprise. Because the ARCore (Play Services) app is a separate app, which I could just install. According to Exodus there are also not a lot of trackers, basically just the one you get with Google Play Services lib.
Also, you can just disallow all internet connections for the respective apps.

I tested it with the Google-developed apps "AR Elements" and "Depth Lab"… so next I am trying this with StreetComplete (it already detected that I have everything installed.)

Pixel 4 with CalyxOS 3.3.0 and microG

@rugk
Copy link
Author

rugk commented Apr 6, 2022

I tested it with the Google-developed apps "AR Elements" and "Depth Lab"… so next I am trying this with StreetComplete (it already detected that I have everything installed.)

I can confirm, this works for StreetComplete. So this is fine for me personally. 🙂

More information (to keep it in one place): streetcomplete/StreetComplete#2093 (comment)

@spodermenpls
Copy link

spodermenpls commented May 24, 2022

I use a Sony Xperia XA2 (running Sailfish OS, which uses an emulator for AOSP-Android 10), which is unfortunately not among the supported devices cited on https://developers.google.com/ar/devices, the installation aborts immediately when I try my luck with the Aurora Store (Edit: I was able to install it with help of Aurora's "device spoofing" [in this case pretending to be a Realme 5 Pro], however it unsurprisingly doesn't work beyond that).

Therefore, I would be very keen to see a possibility to make it work in conjuction with MicroG. Are those "supported devices" selected by absolute necessity (meaning, the hardware of devices not mentioned forbids ARCore to work properly), or could ARCore theoretically run on more devices (with a sufficient Android API level), e.g. a Xperia XA2?

@ale5000-git
Copy link
Member

ale5000-git commented May 24, 2022

There is probably an hard-coded list of devices inside "Google Play Services for AR" apk, so probably it need to be patched to enable support for unsupported devices.

@rugk
Copy link
Author

rugk commented May 26, 2022

…which again, likely would not help. I can totally understand that their algorithm may need some access to special sensors or so and cannot do this on any device. So it may be a hardware limitation indeed.

@ale5000-git
Copy link
Member

Not really, it doesn't work also on high-end phones that aren't certified.

@rugk
Copy link
Author

rugk commented May 26, 2022

Well I have no i idea what it needs. Google publicly only says:

OEM device manufacturers wishing to certify new devices may refer to the Google AR OEM Portal (only available to authorized OEMs) for a complete list of requirements.

So if anyone has any information, feel free to post it here…

@ale5000-git
Copy link
Member

ale5000-git commented May 26, 2022

I think it simply check "is device on my list" then ok, otherwise refuse to run.

@spodermenpls
Copy link

tomthecarrot/arcore-for-all#139 (comment) Can someone check if this method still works with recent releases? Reading the comments, it at least did into 2021.

@paolo-caroni
Copy link

tomthecarrot/arcore-for-all#139 (comment) Can someone check if this method still works with recent releases? Reading the comments, it at least did into 2021.

I will confirm, but you can use adb backup only until android 11, on 12+ you need root to push the file on the correct folder. I'm actually making a config file for my phone.

@spodermenpls
Copy link

spodermenpls commented Apr 29, 2023

@paolo-caroni

I will confirm, but you can use adb backup only until android 11, on 12+ you need root to push the file on the correct folder. I'm actually making a config file for my phone.

Thank you, but as far as I can see (11 months later), implementing "ARCore" into GmsCore might be unfeasible as a whole, unfortunately. Their license file (https://github.com/google-ar/arcore-android-sdk/blob/master/LICENSE) specifies under "Section 1" seemingly the majority of binary files being restrained by the terms laid out on this page (https://developers.google.com/ar/develop/terms), which does specify for example the requirement "Your product or service must contain substantial, independent value and features beyond the Google products or services", which GmsCore may not be able to meet.
Nevertheless, me not being able to use Android app features that rely on ARCore (popular among merchant chains, in particular) is still a bummer, which is why I still would love to see "ARCore" getting introduced to the otherwise great MicroG suite of stock Android service surrogates, if possible by legal means.

@mar-v-in Since you're the lead developer, and haven't said a word on the topic of "ARCore"-implementation so far (at least in this dedicated thread), I would like to hear your assessment on this - also since you're assumably dealing with Google's licensing fine print and requirements all the time.

@ale5000-git
Copy link
Member

How for most things the best way is "Clean-room reverse engineer".

@paolo-caroni
Copy link

paolo-caroni commented Jul 26, 2023

Nevertheless, me not being able to use Android app features that rely on ARCore (popular among merchant chains, in particular) is still a bummer, which is why I still would love to see "ARCore" getting introduced to the otherwise great MicroG suite of stock Android service surrogates, if possible by legal means.

This is not a solution, but the proprietary ARCore apk can be downloaded by AuroraStore(device spoofing), then you can add your config file (on lineageos for example uoy can root only adb) .
For pokémonGo run good on my FairPhone 3, with minor bugs (I have NOT well calibrate my sensors).
It's still proprietary, so is still wrong and immoral, but run with microg.

About clean room seems very difficult, it's difficult to calibrate without documentations so reimplementation would be hard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants