Third-party apps allowed in Android Automotive - android-automotive

The official documentation describes two kind of applications that can be implemented for Android Automotive, Media applications and Messaging applications. Also when creating a new project in Android Studio, the IDE prompts to select a template from those options.
My question is specific to third-party apps. Is Android Automotive limited to build one of these flavors? That is, interact with the user only through the native media UI of the vehicle or the messaging/notifications mechanism. Or as a third-party application developer I can build any other kind of applications (like generic phone/tablet android apps) with custom activities/screens? In case that any kind of applications are allowed, are they limited to run when the vehicle is parked?

Android Automotive is Android so you could build whatever android app you like and run it on Automotive. The catch is that Google is, as per now, only allowing Media/Messaging apps into Play Store and has quite specific design guidelines that developers need to follow.
When your app follows Googles Driver Distraction Guidelines then it can run when a vehicle is moving.

Related

How do you setup automated-tests for Capacitor native apps?

Capacitor allows us to code once then generate web, Android and iOS applications. Most people using Capacitor will generate native Android and iOS applications.
But strange enough, I can't find any documentation about how to create automated-tests for the two native applications. I can easily test the web application using protractor, jasmine or whatever. But when it comes to native apps, I can't hardly rely on native tooling (Android Studio and XCode) as there are other issues preventing me from testing it easily (ex: no possibility to set Accessibility ID through the views markup, etc).
Where are we at with Capacitor native apps automated-tests ?
I believe this is what you are looking for Ionic/capacitor Integrations for Testing
As far as the community/forums and official docs go there are only 3 ways you can test your apks
Native [Andriod Studio / Xcode] [Emulated versions]
Real Devices
3rd party Integration listed in the link above..
Even on google there very less info on this topic.. most of the blogs/ articles only say that Ionic/Capacitors can be tested just like a normal WEB App

Is Android Automotives Car API only meant for OEMs?

The AOSP Automotive documentation states that third party apps should use the Car API("VehicleNetworkService. Controls vehicle HAL with built-in security. Access restricted to system components only (non-system components such as third party apps should use car API instead)",https://source.android.com/devices/automotive).
That is quite confusing because the android developer documentations state, that the only supported type of app is a media app which does not even draw its own UI except sign in and settings(https://developer.android.com/training/cars/media/automotive-os).
So is there a possibility to write other apps than media ones that may even use the car api to read the vehicle speed for example?
Car SDK is now released to developers and many Car APIs can be reached by third party apps, however privileged apps i.e. apps that are part of android system image and designed as privileged, can access more functionality that 3rd party apps. The access is gated by Android permissions.
See How to utilize Android Car API inside an app for my answer.
Of course you can develop any app running in Android Automotive Enviroment (i dont want to called it Android Automotive OS because it simply Android )
Google only given some advice/rules how to design your app in the way it good for Automotive product. Login, Car status check , Driver distraction limit...vv.
For 3rd developer sure you have to use Car API what car OEM offer and might require OEM's SDK also..
Goolge as of now only provide some kind of permisison that you can add to your app manifest. Then hopefully it can get correct information if OEM supported in thier IVI.
adb shell pm list permissions | grep car

Creating a single SmartTV app for multiple platforms?

I want to develop a SmartTV application for the GoogleTV platform and i've been browsing trough the GoogleTV Guidelines (https://developers.google.com/tv/android/).
However, i don't want GoogleTV to be my only platform. I also want the same app to work on devices like Samsung SmartTV and/or LG SmartTV.
But do the guidelines from Google conflict with Samsung guidelines and does the code of my application need a lot of rework to work on other devices?
I'm editing my answer. I just checked the Samsung website and, I'm happy to say, they threw out all the junk.
They use to have a number of different, non-interchangeable, coding languages. And none of them really worked on the TV's of the other manufacturers either. This is most likely the reason why few applications were ever developed for those platforms.
Now they are supporting basic javascript. So, you have the opportunity to build yourself a TV web page and load it up as an application on Samsung and potentially run it from the Google-TV browser. However, I would verify whether your application requires specific HTML5 features (such as offline support) that may not be implemented in the Android-like browser version running on Google-TV. Having said that, you can always build an app that loads locally on Samsung and runs from a remote server on Google-TV?
... for some historical perspective on how we go to where we're at you can continue reading....
The implication of each manufacturer having their own unique OS creating developer fragmentation was probably predictable to them but they were likely working in a panic. After they became aware of the Apple TV when the first patents were make public in 2008 they understood the longer term impact if Apple provided hundred of thousand of applications worth of content and they had nothing to compete. So they got together and decided on a standard they would implement that would provide a non-fragmented solution allowing any app to run on the TV's of any supporting manufacturer. AKA: they got it right.
In 2009 a good number of them announced support for the Yahoo Connected TV standard. However, by 2010 the development framework, app store, etc that was promised had not materialized. This is likely when they all went in their own direction (although you can still buy Yahoo Connected TV sets from Samsung, Sony, LG, Vizio, and Panasonic today).
With the implementation of the Google-TV Market and the ability of developers to transition existing apps to Google-TV apps with only 20% or so of the effort of creating new (thus lowering the cost and supporting the business case for a TV version) that they have a solution that meets their original requirements.
Now, there's certainly going to be a little 'bitten once twice shy' coupled with revenue sharing discussions and perhaps the impact of Google being a hardware manufacturer (Motorola Mobility) but, at the end of the day, the inevitable is inevitable. They either take Google-TV or create their own, very close, must run existing applications, version of Android.
PS: I didn't look at the other manufacturers site.
For my understanding core components like the Player and Remote Control Management are platform specific.
You would need to use a configuration file and implements these components independently for each platform.
Alternatively you can use some cross platform SDK.
Searching on Google for "smart tv app development" I found out:
Joshfire Smart TV SDK
http://www.joshfire.com/products/
Works on Google TV and Samsung
But not on LG
Mautilus Smart TV SDK
http://www.mautilus.com/knowhow/smart-tv-application-development/
As written in their website it covers
LG Netcast 2012
Samsung 2012 / 2013 models.
I hope it can helps.
orangeejs is a new open source project aims to ease the pain of cross platform smart tv app development. The target platforms are latest model of samsung/lg/android/ios.
There is a framework developed by BBC and called TAL. It aims to help you with cross-platform development. All their Smart TV apps were developed using this library so take a look.
First of all if you consider to develop for many TV platforms see the:
https://developers.google.com/tv/web/lib/jquery/
It's jQuery library for Google TV, so you can develop application in HTML/JavaScript just like in Samsung and LG.
Of course there are the differences in key handling, video player, event handling so you will need to develop the framework which cover all this differences.
There are few open source frameworks out there but not mature enough to use it "out of the box".
for example: http://framework.joshfire.com/
You might want to take a look at cloudee-couch which is open-sourced by Boxee. This example/framework is built on top of Spine.js. Base classes take care of key handling, focus, and oauth authentication.
It's not a big deal to make an application for the smart tv platform that supports across the devices. Now the industry is filled with a lot of smart tv app development companies with their unique functionalities and features to offer the customized app as per the business models. FYI I'd suggest you choose the best smart tv app builder from the list. Hope it will be helpful for the video content creators & business owners to stream across the tv.
VPlayed
Zype
Uscreen
Explore the complete list here Ref: https://dev.to/dwarak17/5-smart-tv-app-development-companies-to-develop-tv-apps-in-2021-1584
While both Samsung and LG have proprietary Smart TV systems, they also both support Google TV. If you create an app for Google TV, you'll only have to write it once and it will run on Samsung's Google TV's, LG's Google TV's, Vizio's Google TV's, and Sony's Google TV's.

CrossPaltform Mobile Application

I want to do the following:
1- mobile friendly Portal - accessed through different Mobile Phones.
2- A mobile Applications that does the same functionality of the portal to different Platforms:
iOS(iPhone,iPad), BlackberryOS(Blackberry mobiles and Playbooks),Android OS (Android mobiles and Tabs), WindowsOS, Symbian OS (Smartphones).
I am mainly a web Developer and an iOS programmer using Objective-C, and I have resources that can develop on android, blackberry and other platforms using native languages.
the Application mainly present data from internal database and deals with different types of web services, and write data to the file system of the device itself.
what is the best practice for the mobile applications, do each one alone with its native language, or using HTML,CSS,JS and produce them to all platforms using PhoneGap or something else???
Thanks a lot.
Also check this thread : best cross-mobile framework
With a javascript solution, your app will be available on stores but also directly on the web !

How to develop products on mobile phones

Recently we are going to develop some products on mobile phone (specially for 3g). There are many platforms about mobile phones: iPhone OS, Symbian, Blackberry's. If I want to develop a product, should I use Java or write every program for the main platforms?
Particular one question for iPhone development: are there many Java programs on iPhone? Most iphone app I've seen are developed by their own xCode.
I need some guidance on how to do coding for mobiles correctly.
All these platforms are completely different beasts as in the old days. About symbian, (which I am most familiar with) you can use Qt for quality native applications. Native api is confusing so avoid it where possible. If your application is simple, you can even get away with python.
In short, use the language which you are most productive available for each platform. Their apis are wildly different anyway. Language choice doesn't matter as much as the choice of platforms you are supporting.
Java is not available for use on the iPhone; you can use Objective-C, C and C++ to develop iPhone applications.
There is currently no Java for iPhone, so you need to develop separately for iPhone in objective C.
Alternatively you can create application which runs in web browser, it'll be available on all platforms, but not every application is suitable for web.
Have you considered you using web technologies?
There are a couple of cross platform tool kits for iPhone and Android. They work in the same fashion as Adobe Air. Allowing you to make HTML/JS based web app and run it as native code in the browser.
Titanium Mobile (Android & iPhone) HTML/CSS/JS
Corona iPhone Only via Lua
Palm's Web OS is also based on web technologies.
Finally the old guard, Symbian Provides a Web Widgets system, that works in on all handsets with 9.2 fp 2 installed (n95,e72, n97 etc.) The api supports some hardware functionality.
The only one left out in the cold is Windows Mobile. There is some 3rd party support in the form of Web Widgets by torch mobile
It's currently limited to iPhone, BlackBerry, and Android (and possibly WinMo) but you may want to check out the open source project called PhoneGap. I think it is basically just a native wrapper around the built in web browser for each device, but it does expose some functionality not normally available in that environment such as geolocation, accelerometer, sound, etc.