Is RECORD_AUDIO permission mandatory for speech recognition on contemporary Android TV? - permissions

We are making a weather app.
The app looks beautiful on large screens.
So we target Android TV as well as phone and tablet.
Recently, we have noticed that the search feature stopped working, unless RECORD_AUDIO permission declared in the app manifest.
We are testing TV search feature on Chrome Cast with Android 12.
App build target is Android 13.
Our search fragment is a descendant of SearchSupportFragment.
SearchSupportFragment.setSpeechRecognitionCallback() comment says
"#deprecated Launching voice recognition activity is no longer supported. App should declare android.permission.RECORD_AUDIO in AndroidManifest file."
So we declared RECORD_AUDIO permission to keep supporting voice search (location search in a case of weather app).
After this modification we received the following warning from Google Play.
"Your app is requesting permissions which are used by less than 1% of functionally similar apps:"
android.permission.RECORD_AUDIO
... requesting unnecessary permissions
can affect your app's visibility on the Play Store."
Obviously, RECORD_AUDIO is a strange permission for a weather app.
However, it is required to let the users voice-search on Android TV.
Keeping RECORD_AUDIO permission may reduce our app visibility on Google Play. Bad.
Dropping RECORD_AUDIO permission will block the users from voice search. Bad as well.
I wonder how to solve this puzzle?

Related

How to Handle iOS Settings if App Uses the Network?

I have an app, in which the user can initiate a short, asynchronous download to access data on the internet, and then the app displays that data. The app is not yet released, but I have tested it on both simulator and several physical devices. On none of them, however, I can locate the app inside the settings menu where I could, for instance, restrict its network access to WiFi only, etc.
I assumed that if my app accesses the internet, it would automatically appear in the settings menu, but apparently it is not so. Am I doing something wrong? What is the process to allow the user to access such basic settings?
I use XCode 10.3, and probram in Objective-C.
If the problem is that there's not a settings entry for your app, please keep in mind that sometimes, in order for an app to be registered, you may need to close your app and the settings app and try opening it again.
If the problem is that you don't see the standard settings for location services, cellular data etc, then you may find maddy's answer here to be helpful: Why is my iOS app forcing a Settings Bundle might be helpful.
Copying the relevant part from this answer:
The iOS 8+ settings page appears […] if the app does any of the
following:
Attempts to access data via a cellular network
Various privacy data
Camera
Microphone
Photo library
Contacts
Location
Notifications
Background data fetch
A settings page may not appear for an app if none of these conditions
have yet been met.

Do mobile operating systems access smartphone sensors?

Do iOS and Android collect any sensor data (e.g. accelerometer, microphone) from smartphones?
If yes, do they have to ask for user permission like third-party apps?
Yes, of course they do - those functions would not work otherwise - it's the OS that collects the data before passing it on to apps. In iOS for example, you can turn off location services system-wide, as well as per-app.
The OS also needs to ask for permission to do so, but that's usually done on a per-app basis, and may only be temporary. Generally this is much more transparent on iOS than Android - Google's own apps get very greedy before they will work, and there is a long history of privacy abuse in Android apps.

Proximity Beacon Api project for Android is not scanning for devices

I am trying to implement Proximity Beacon Api for Android.
I downloaded the project from
https://github.com/google/beacon-platform/tree/master/samples/android
I can successfully run the project and after clicking on SCAN button in app nothing gets displayed.
I converted one of my Android device into EDDYSTONE beacon by installing app from
https://github.com/google/eddystone/tree/master/eddystone-uid.
But still did not find any luck in scanning beacons.
I also had a doubt that, where should I use clientID generated in google developer console.
Please help.
Did you try Nearby Messages API?
https://developers.google.com/nearby/messages/android/get-beacon-messages

React Native app is recognized as a game on Samsung Note8

I wrote react native application. The application is simple, more informational, it is used by Redux, Saga, several linked npm packages. The app runs in normal mode, not full-screen. The structure of the application was built on the basis of Ignite.
The problem is that on the phone (Samsung Note8) the application is recognized as a game. E.g. while app is running there is a message "The game is running" on the lock screen. Also there are additional buttons for the gamepad or something like that. In additional, app has a paddings on the top and on the bottom when it's working on real device (Samsung Note8). This effect real exists when some games running. When app is running on another device (e.g. ZTE Blade 610) it's running as usual and without any side effects.
The main version is the cause of all is Game Tools that's existed on Samsung Note8 but others apps have no similar effects and running as expected.
Is there a possibility to make a react native app as a real app but not a game? Why Game Tools recognizes my app as a game? Or what is the reason and how can it be affected?
Thanks.
I think there are few possibilities.
you (or one of your dependencies) have included the google play service API which inside of play service API has a module named games that samsung will automatically treat it as game.
You could find which of your dependency is loading google play service API and create a exclude like:
compile (project ('your.dependency')){
exclude group: 'com.google.android.gms', module:'play-services-game'
}
Your application id (can see on build.gradle) is registered on samsung game database. You could check by going into playstore and search for your application id
this is something that can happen on samsung phones due to the package name of your app.
we cant change this after the initial release, you must contact samsung developer support and they can fix it on the fly.
i wrote a gist on github about it:
https://gist.github.com/Adnan-Bacic/718eb3b4e70380696c91dc21c4804112

Is there a testing phase for iTunes and Android Market?

I have a small app I've made that I intend to make available on both iTunes and on Android Market (AM).
I have purchased the developer certifications for both, built my app with the Android SDK and the iOS Xcode SDK. So I think I'm most of the way along.
I'm a little fuzzy on the steps after this, though. When I launch my app, I'd like it to be available on each market on more or less the same time. I'd also like to do a little testing to try and download each app to different people's devices for a beta phase. Also, my understanding is that iTunes requires some sort of approval before it goes live (does Android require the same?).
So, what I'd like to do is be able to put my app on both AM and iTunes, but have it not be publicly available. A sort of private phase, where I can test it, have selected testers download it, make sure it is working fine, and maybe even get Apple (and Android) approval.
Then, when I'm ready to go live, then mark my apps as public.
Is there anything like that on either market? If I upload my app to either market, is it from that moment publicly available?
If there isn't any such "private" phase, what is the usual process for testing the app on different devices before making it available for sale?
The android developer site confirms that you can upload your app without publishing to allow for final testing. See more information here: Publishing on Android Market (under "Configuring options and uploading assets" header). When you actually publish the app it should be up within minutes. See this answer as well Just uploaded Android App: How long before app shows in Android Market search?
Apple has a different approval which can take hours or weeks depending on how lucky you are :) I personally have not submitted an app for approval though so I don't know if there's a way to get approval and then delay the release. I don't have a dev account with Apple so I can't log in to see their app approval guidelines apparently, but maybe this has some useful info: iOS App Store Approval Guidelines