Help with last fixes requested by Google Play.

Google have just reviewed our app and have notified us of the following bugs:

1. On Gingerbread phone (2.3.4), if screen is turned off, when game is reopened, screen is black, but soundtrack is playing.

We don’t have any 2.3.4 devices, but we do have 2.3.5 and we didn’t see this problem happening, nor on any later versions of Android.
I noticed that build 1007 has the following bug fixes:
*Android: Ported Google’s newest OpenGL bug fixes to Corona, making the fixes available on older Android OS versions.
*Android: Fixed bug caused by build #996 where screen would sometimes turn black for landscape only apps when returning from a portrait window.
Does this sound like one of the things that would have been fixed in the OpenGL bug fixes? I think when our app was submitted it was build with build 999, though I’m not 100% sure on that.

2. On phones (running Gingerbread, ICS, and JB), if ringer volume is muted, game volume cannot be adjusted.

On my HTC Sensation this does not happen. My phone is ALWAYS on silent, yet I can always adjust the volume. Does anyone know if there is any situation when this bug could happen?
I spotted that build 1013 has this:
Android: Modified volume controls to not flip back and forth between adjusting “ringer” and “media” volumes. Now when you load/play audio at least once, volume controls always adjust “media” volume. If you never play audio, then volume controls adjusts “ringer” volume. casenum: 19689
Could that be related? It doesn’t sound like exactly the same problem, but it’s in the same territory.

3. Why does the game call the getLine1Number method via the “Read phone state and identity” permission?

Now I know this has been brought up before, but do we NEED to have this permission. The last reply I saw suggested that we can remove unnecessary permissions using apktool, but I’ve seen reports of this causing apps to break later on. If we are using Flurry presumably we need this permission anyway so it can check for unique installs etc?

4. Removing OpenFeint code now that this is no longer in service
My understanding is that this was removed in build 992?
If anyone can help address these points we would really appreciate it. Obviously I’m still looking for the answers in the meantime, but if someone from Ansca could confirm that the newer builds have fixed any of these problems that would be a big help. [import]uid: 84115 topic_id: 35634 reply_id: 335634[/import]

Just an additional point for bug 2. Although I said my phone is always on silent, it doesn’t have a hardware mute switch (like you have on iOS devices). Instead I have to set it to silent via the OS.

Has anyone had issues with devices which DO have a mute switch? [import]uid: 84115 topic_id: 35634 reply_id: 141678[/import]

Ok, to clarify 3 & 4 are minor/solved.

1 - We can’t reproduce but suggestions welcome.

2 - We MUST fix this but we think it might be a Corona issue. We think it’s very minor but Google don’t like it :-(.

Thanks,
Ian [import]uid: 29093 topic_id: 35634 reply_id: 141875[/import]

Regarding Issue #1: Screen turning black
That was an issue that we accidentally introduced in build #996. We fixed this issue in build #1007.

Regarding Issue #2: Silent/Vibrate mode
As of daily build #977, we modified Corona to automatically mute audio output if the ringer was put into silent/vibrate mode.
http://developer.coronalabs.com/release-ent/2012/977

We implemented it this way on purpose because Corona apps were getting rejected from the Samsung App store because their app reviewers think apps should respect the ringer mode. Have a look at section “Sound is Audible in Silent Mode” in the link below…
http://developer.samsung.com/android/technical-docs/Android-Media-Issues

And here is one forum thread (there are others) that brings up this silent mode issue where they think it should be muted:
https://developer.coronalabs.com/forum/2012/11/13/build-947-app-rejected-samsung-app-store-sound-played-during-silent-mode

So, I can understand why you wouldn’t want it to mute the audio because some Android devices clearly indicate that this is a “Ringer Mode” and only silents the ringer. But there are popular Android devices such as the Samsung Galaxy SII and SIII which refer to the ringer’s silent mode as “Audio Off” instead and we have received bug reports asking why “Audio Off” does not mute audio. Its clearly confusing developers and end-users. Especially for those who are used to using an iPhone where silent mode does mute all audio output. In fact, Google search this issue and you’ll notice that this is a hotly debated item.

But that said, we’ve recently received feedback that Google Play’s app reviewers do not want audio to be muted when silent/vibrate mode is enabled, which is the opposite of what Samsung wants. So, we recognize that we need to come to some kind of compromise to satisfy both marketplaces. We’re currently thinking that instead of automatically muting audio, we need to provide new APIs to let the Corona app developer manage it the way he/she sees fit. We just haven’t decided what that API should be just yet… and how to make it cross-platform with iOS.

We did have a look at how Angry Birds handles this issue and noticed that this app polls the ringer mode on app startup. If the ringer mode is set to silent/vibrate, then Angry Birds automatically mutes audio, but allows the end-user to unmute audio via their onscreen menu. Angry Birds ignores all ringer mode changes afterwards. So, if the Google Play and Samsung app stores think this behavior is acceptable (and provided that Angry Birds does not get special privileges), then this may be they way to go.

In any case, that’s my 2 cents. It’s definitely not a simple issue.
I personally consider it a design issue on Google’s part.

Regarding Issue #3: READ_PHONE_STATE permission
All Corona Android builds include the following 3 permissions:

  • INTERNET
  • READ_PHONE_STATE
  • ACCESS_NETWORK_STATE

Due to popular demand, we plan on removing the above permissions from all Android builds by the end of this week. This way, you have to opt-in to using them depending on what features you use. The newest daily build #1021 had all of its API documentation and sample projects updated to indicate what features need the above permissions. I recommend that you have a quick look at the documentation.

Regarding Issue #4: OpenFeint
The OpenFeint library is completely removed from the newest daily build. All traces of it are gone. We’ve also removed the SuperRewards library from the newest daily build as well.
[import]uid: 32256 topic_id: 35634 reply_id: 141888[/import]

Joshua,

Thanks for the fantastic reply!

Is there any temporary fix that we you/we can do to make Google happy in the meantime? We really can’t miss an opportunity to be featured.

Thanks again,
Ian [import]uid: 29093 topic_id: 35634 reply_id: 141891[/import]

>> Is there any temporary fix that you/we can do to make Google happy in the meantime?

There’s no way to work-around this at the moment. There is nothing a Corona Enterprise developer can do either.

The only quick solution that I can think of is to back out our code change, which hopefully won’t upset any Corona developers that are depending on it because it means being rejected by the Samsung App Store. That said, I believe Google Play is the most popular app store amongst Corona developers. At least compared to the Samsung App Store. So, this might be the way to go until we come up with a new API that satisfies both app stores.

If anyone wants to post their ideas on this issue, then please feel free to do so. I’m open to suggestions. [import]uid: 32256 topic_id: 35634 reply_id: 141900[/import]

Is this something new that Google is reviewing submitted apps? we have submitted 8 apps up till now and we have never went through any kind of review by Google… Am I missing something here? [import]uid: 80469 topic_id: 35634 reply_id: 141903[/import]

My understanding is that Google only reviews apps that are to be “featured” on Google Play.
http://developer.android.com/distribute/googleplay/about/visibility.html

So, the silent/vibrate mode issue won’t stop your app from being published onto Google Play. It prevents your app from being featured, which is definitely something you’ll want. [import]uid: 32256 topic_id: 35634 reply_id: 141911[/import]

It’s clearly not a good predicament: a choice between Samsung build approval and Google featuring approval.

Would a solution be to have a special build command for Samsung like you have for NOOK and Kindle? It would be good to keep the Android build as ‘pure’ as possible.

We really need a solution urgently though, any chance of a daily build for Google Play?

Thanks a lot for the support.

Ian
[import]uid: 29093 topic_id: 35634 reply_id: 141960[/import]

Can I just get some confirmation regarding the removal of default permissions?

Although they won’t be included by default any more, is there any reason we would still need to have READ_PHONE_STATE in order for a Corona app to work. We use Flurry for our analytics, and as far as I can tell that only requires the INTERNET permission - which is fine because we need that for our leaderboards etc.

There shouldn’t be anything in our app that requires any of the info returned by the READ_PHONE_STATE permission, so would it be safe for us to leave it out entirely once the daily build has removed them? [import]uid: 84115 topic_id: 35634 reply_id: 142072[/import]

Regarding a quick solution to the ringer mode issue, I’ll talk to the rest of the team this coming Monday on what the best course of action should be on our end. It’s not a small decision and the rest of the team here at Corona Labs needs to be sold on it. Sorry about the delay. [import]uid: 32256 topic_id: 35634 reply_id: 142119[/import]

Alan,

We’ve updated our API documentation to indicate which APIs require the INTERNET, READ_PHONE_STATE, and ACCESS_NETWORK_STATE permissions. You can download the newest API documentation from our daily build page here…
http://developer.coronalabs.com/downloads/daily-builds

Flurry only requires the INTERNET permission and it optionally supports the ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION permissions.

Only ads (inneractive and InMobi) require the 3 permissions that you’ve mentioned.

OpenFeint used to require those 3 permissions as well, not that it matters anymore.

The function [lua]system.getInfo(“deviceID”)[/lua] will return the phone ID that was assigned by the cellular service if the READ_PHONE_STATE permission is set. If not set, then it returns the ID assigned by the operating system upon installation, which is the same ID returned by tablets (ie: devices that are not phones). We’ve documented this in our newest API documentation as well.

I hope this helps! [import]uid: 32256 topic_id: 35634 reply_id: 142120[/import]

Brilliant. Thanks Joshua for the thorough responses. We await the team’s decision with bated breath. [import]uid: 29093 topic_id: 35634 reply_id: 142141[/import]

Just an additional point for bug 2. Although I said my phone is always on silent, it doesn’t have a hardware mute switch (like you have on iOS devices). Instead I have to set it to silent via the OS.

Has anyone had issues with devices which DO have a mute switch? [import]uid: 84115 topic_id: 35634 reply_id: 141678[/import]

Ok, to clarify 3 & 4 are minor/solved.

1 - We can’t reproduce but suggestions welcome.

2 - We MUST fix this but we think it might be a Corona issue. We think it’s very minor but Google don’t like it :-(.

Thanks,
Ian [import]uid: 29093 topic_id: 35634 reply_id: 141875[/import]

Regarding Issue #1: Screen turning black
That was an issue that we accidentally introduced in build #996. We fixed this issue in build #1007.

Regarding Issue #2: Silent/Vibrate mode
As of daily build #977, we modified Corona to automatically mute audio output if the ringer was put into silent/vibrate mode.
http://developer.coronalabs.com/release-ent/2012/977

We implemented it this way on purpose because Corona apps were getting rejected from the Samsung App store because their app reviewers think apps should respect the ringer mode. Have a look at section “Sound is Audible in Silent Mode” in the link below…
http://developer.samsung.com/android/technical-docs/Android-Media-Issues

And here is one forum thread (there are others) that brings up this silent mode issue where they think it should be muted:
https://developer.coronalabs.com/forum/2012/11/13/build-947-app-rejected-samsung-app-store-sound-played-during-silent-mode

So, I can understand why you wouldn’t want it to mute the audio because some Android devices clearly indicate that this is a “Ringer Mode” and only silents the ringer. But there are popular Android devices such as the Samsung Galaxy SII and SIII which refer to the ringer’s silent mode as “Audio Off” instead and we have received bug reports asking why “Audio Off” does not mute audio. Its clearly confusing developers and end-users. Especially for those who are used to using an iPhone where silent mode does mute all audio output. In fact, Google search this issue and you’ll notice that this is a hotly debated item.

But that said, we’ve recently received feedback that Google Play’s app reviewers do not want audio to be muted when silent/vibrate mode is enabled, which is the opposite of what Samsung wants. So, we recognize that we need to come to some kind of compromise to satisfy both marketplaces. We’re currently thinking that instead of automatically muting audio, we need to provide new APIs to let the Corona app developer manage it the way he/she sees fit. We just haven’t decided what that API should be just yet… and how to make it cross-platform with iOS.

We did have a look at how Angry Birds handles this issue and noticed that this app polls the ringer mode on app startup. If the ringer mode is set to silent/vibrate, then Angry Birds automatically mutes audio, but allows the end-user to unmute audio via their onscreen menu. Angry Birds ignores all ringer mode changes afterwards. So, if the Google Play and Samsung app stores think this behavior is acceptable (and provided that Angry Birds does not get special privileges), then this may be they way to go.

In any case, that’s my 2 cents. It’s definitely not a simple issue.
I personally consider it a design issue on Google’s part.

Regarding Issue #3: READ_PHONE_STATE permission
All Corona Android builds include the following 3 permissions:

  • INTERNET
  • READ_PHONE_STATE
  • ACCESS_NETWORK_STATE

Due to popular demand, we plan on removing the above permissions from all Android builds by the end of this week. This way, you have to opt-in to using them depending on what features you use. The newest daily build #1021 had all of its API documentation and sample projects updated to indicate what features need the above permissions. I recommend that you have a quick look at the documentation.

Regarding Issue #4: OpenFeint
The OpenFeint library is completely removed from the newest daily build. All traces of it are gone. We’ve also removed the SuperRewards library from the newest daily build as well.
[import]uid: 32256 topic_id: 35634 reply_id: 141888[/import]

Joshua,

Thanks for the fantastic reply!

Is there any temporary fix that we you/we can do to make Google happy in the meantime? We really can’t miss an opportunity to be featured.

Thanks again,
Ian [import]uid: 29093 topic_id: 35634 reply_id: 141891[/import]

>> Is there any temporary fix that you/we can do to make Google happy in the meantime?

There’s no way to work-around this at the moment. There is nothing a Corona Enterprise developer can do either.

The only quick solution that I can think of is to back out our code change, which hopefully won’t upset any Corona developers that are depending on it because it means being rejected by the Samsung App Store. That said, I believe Google Play is the most popular app store amongst Corona developers. At least compared to the Samsung App Store. So, this might be the way to go until we come up with a new API that satisfies both app stores.

If anyone wants to post their ideas on this issue, then please feel free to do so. I’m open to suggestions. [import]uid: 32256 topic_id: 35634 reply_id: 141900[/import]

Is this something new that Google is reviewing submitted apps? we have submitted 8 apps up till now and we have never went through any kind of review by Google… Am I missing something here? [import]uid: 80469 topic_id: 35634 reply_id: 141903[/import]

My understanding is that Google only reviews apps that are to be “featured” on Google Play.
http://developer.android.com/distribute/googleplay/about/visibility.html

So, the silent/vibrate mode issue won’t stop your app from being published onto Google Play. It prevents your app from being featured, which is definitely something you’ll want. [import]uid: 32256 topic_id: 35634 reply_id: 141911[/import]