Google Earth within custom C++ Linux application - c++

I am exploring using Google Earth within a C++ application I am writing for Linux. This application would be operating at a very high resolution (approx. 6000 x 3000 pixels). I am confident about the graphics performance of Google Earth in the high resolution and the Linux environment. My question is: What is the best way to integrate Google Earth into my Linux C++ application? I have read about the Google Earth COM API (and that it's outdated now). What would be the preferred method to integrate Google Earth into my application?
Specifics for integration: I am hoping to have the Google Earth in the "background" covering the entire 6000 x 3000 resolution with a small "control box" overlay that will interact with the earth.
Thanks for your responses!
kf

As far as I can tell there are only two APIs to access Google Earth content - the Javascript API, and the Windows based C# API (which seem to just be wrapper classes that call the Javascript API.) I don't know but I believe the Google Maps API to also be in Javascript.
Given that you are in Linux and using C++ my suggestion would be to embed a browser in your app and create C++ wrappers to make the Javascript calls that you need (like the Windows C# API.)
If you start an open source project other people may be willing to help you create C++ wrappers.

As far as I know you can't use a Google Earth Api in Linux. The only API Google Earth offers is the Javascript API (only works in MacOs or Windows, but no Linux) and COM API (seems death now)
It doesn't work even in ChromeOS

Related

Upload data from Linux in C++ to Firebase service

I'm working on an IoT application on top of embedded Linux, and I want to collect log data (mostly text files) of the devices.
The language I use is C++. I went through the documentation/tutorials of Firebase, however, it looks like only iOS, Android and Web (JS) are best supported, even the C++ part is assuming the carrier device is iOS/Android.
Is it's a good choice to use Firebase for my requirement? Should I just go ahead with C++ SDK or use REST API instead (that I can do with libcurl)
Thanks.
Depending on the complexity of what you want to do, you might just want to use the REST API.
Your biggest hurdle there is likely going to be the authentication part, once you get that out of the way, using the API itself is extremely simple.
Since you're talking about embedded Linux, your resources might be limited, which for me personally would be a reason to go use the REST API approach.
It comes down to ease of use (SDK), or lightweight (REST API). That's my 2 cts anyway...

Is there an easy way to supply data to Application Insights from normal win32 C++ code?

I'd like to know if there's something like a dll or lib (with headers, and possibly documentation) that can be linked into a normal* win32 C++ solution so it can (by function call) notify Application Insights of page views and send metric values.
This seems like it should exist and be simple to find, but I'm just going round in circles on Google, finding documentation for reading values back out via a web API, or using C#, or projects that other people tried in the past but now have no source available.
This is for updating a diagnostic tool which I'm trying to avoid having to completely re-architect because the logging now needs to go to a slightly different service.
*ie. not Winforms, C++/CX, Xamarin or UWP. Straight, command-line c++.
Currently there is no Application Insights client library for native applications (c/c++). Though it's in backlog I don't think it will be prioritized higher than java/node.js. So, I would not rely on its release anytime soon.
Customers who wanted to send telemetry from native applications usually picked one of the following options:
Using REST API directly. If application is going to use only couple of telemetry documents then it should be straightforward. With the most complexity coming from own requirements such as persistent channel.
Host CLR + use .NET Application Insights SDK
Have .NET service running on a box and implement communication channel between native app and this service.
Depending on environment (for instance, #2 makes sense if app already hosts .NET; #3 makes sense if there is already installed .NET service in addition to native app) you can check whether on of these options will work for you.

Does Microsoft SAPI support speech recognition on offline mode just like system.speech api?

I have read official documentation of Microsoft SAPI but I couldn't find about whether the api can be used on offline mode or not.
in there, they said that Microsoft SAPI is server based speech recognition api. So It seems like it doesn't support but I have to make sure.
Can I use Microsoft SAPI on offline just like system.speech ?
That link does not say what you think it says. Both Microsoft.Speech.Recognition (server engine) and System.Speech.Recognition (desktop engine) run entirely on the host CPU. The underlying SR engines are different, however.
The reason why the Microsoft.Speech.Recognition engine is called "Server SR" is that it was designed to run as part of Microsoft Speech Server, which ran on an on-premises server.
If you want online (network) SR, you would need to use Windows.Media.Speech.Recognition, which has both online and offline recognition.
I've developed with SAPI using MS's stock recognizer and synthesizers for 2+ years now. I don't think I've ever needed to have a network connection for my projects to work.
According to Microsoft's Speech API Overview it states directly that:
"The SAPI application programming interface (API) dramatically reduces the code overhead required for an application to use speech recognition and text-to-speech, making speech technology more accessible and robust for a wide range of applications."
So, between my personal experience, and the overview, it's safe it say you can recognize/synthesize speech in an offline mode.

Local version of Google Maps API

Do you guys know if there is a version of the Google Maps API for C++ which works using local maps rather than having to connect to a Google server?
The application is the plotting of GPS positions in an area with no internet coverage.
Thanks in advance.
As an alternative for Google Maps, you might want to have a look at OpenStreetMap.
(See also the usage and software sections on Wikipedia)
You can download and store map tiles (png files) using the google maps static API, and then reread those once stored images without reconnecting to the server. You'll have to write the whole download and management stuff yourself (i.e. using boost::asio for download etc. - i don't know of such a library), and you probably need to acquire a Google premier license, as google strongly restricts the anonymous usage of the static api. But technically thats possible.

Speech recognition (web) services?

I have a buffer of audio and I'd like to perform speech recognition/transcription on it. I have limited CPU and RAM locally so I want to perform recognition on a server.
Are there any (web) services that allow me to do this?
My searches so far have led nowhere...
Google has just introduced browser-based access to its speech engine through HTML5.
http://slides.html5rocks.com/#speech-input
To get this page to work, I launched the Chromium browser as follows in Ubuntu:
$ chromium-browser --enable-speech-input
I believe that the idea is to be able to build applications that use Google's speech recognizer, but I haven't had a chance to look deeply into it.
Another interesting project is WAMI from MIT:
http://wami.csail.mit.edu
Lumenvox offers such a service but seems expensive for your needs.