Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-31 Thread Omer Gilad
No problem - you want practical examples, I have literally an endless 
amount... 
I will try not to collapse Google servers or something, so I'll post just a 
few.

By the way - read the original post - I am NOT talking about official 
fragmentation. 
Not screen sizes, API levels features and so on.
I'm talking about BUGS.

All the issues below were tested with a device in front of me, these are 
not just assumptions.
Ok, let's go:

1. On Samsung Galaxy S and most of its variants, when you use this simple 
and documented intent: 
http://developer.android.com/guide/topics/media/camera.html#intent-image

The camera app behaves completely differently, and will sometimes ignore 
MediaStore.EXTRA_OUTPUT.
If you run the same code that would work on any other device, most likely 
you'll crash on a NullPointer, unless you workaround for Samsung.
Tested with the device in 

2. The API AudioManager.setMicrophoneMute 
(http://developer.android.com/reference/android/media/AudioManager.html#setMicrophoneMute(boolean))
 
 doesn't work at all on some Motorola devices (Milestone variants).
It will literally do nothing, not mute the mic and even tell that you DID 
mute the mic (isMicrophoneMute will return true after that).

3. Using a GLSL shader with 4x3 matrix multiplication containing some 0's 
on Galaxy S4 will miscalculate the result, and produce artifacts because of 
that.
Every other device does the same calculation fine, except S4.

4. Using camera preview on some Sony Xperia variants 
(http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallback(android.hardware.Camera.PreviewCallback))
 
will give you flipped or even cut preview frames - so it's completely 
useless for implementing video calling on these devices.

5. Reading from the proximity sensor on Motorola Milestone variants 
(http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_PROXIMITY)
 
will give you completely unrelated values, different from every other 
device and ignoring the sensor specification (getMaximumRange() and so on).

6. Running a GLSL shader with 8 varying vectors (the minimum of available 
varying vectors according to the spec., that should be available on every 
device), will cause some Galaxy S variants to reboot instantly.

7. Using an Intent to pick an image from the gallery 
(http://stackoverflow.com/questions/5309190/android-pick-images-from-gallery) 
on some Galaxy S variants will cause the Gallery app to crash.


That's just the ones that came to my mind right now.
I'm sure this can turn into a whole book when other people contribute.

On Wednesday, July 31, 2013 1:40:14 PM UTC+3, Daniele Segato wrote:

 On 07/26/2013 12:39 AM, Omer Gilad wrote: 
  .I am wondering how developers here are dealing with the fact that there 
  are 1000's of devices out there, some of them running your applications 
  in very broken ways 
  .I keep running into these kind of issues again and again for the past 3 
  years, and to be honest, I'm fed up with it 
  .I've decided to move to iOS development, and the only way to convince 
  me otherwise is to give me a decent, reliable way of dealing with 
  fragmentation 
  
 [snip] 
  
  To make it clear, I'm not talking about official fragmentation. 
  I don't talk about different screen sizes, densities, features, OS 
  versions and so on. 
  I talk about the unofficial fragmentation. The fact that most devices, 
  even the popular ones from the big companies like Samsung, HTC, 
  Motorola, LG and so on, contain tons of implementation bugs that prevent 
  apps from working correctly. 
  I'm talking about the fact that you can call a certain simple API, test 
  it on a stock Android ROM (like on Nexus 4), and then have your 
  application crash on some Samsung, that decided to break the 
  implementation because of some customization. 
  
  How can people stand that? 
  How is it possible to write code, when the machine that executes it is 
  completely broken in unexpected ways? 
  
 [snip] 

 I feel a little put off by this. 

 Never had issues like the one you describe when doing the things are 
 they are supposed to be done (following the docs and guide lines). 

 When someone talk about fragmentation in Android I laugh. Seriously. 
 in iOS if you want to support different device you literary has to 
 develop twice. True, they do not have has many devices. But Android is 
 designed from the ground to support the fragmentation: 
 - you can address different API with just an if in your browser or using 
 -v14 in your resources/layouts/values 
 - You have fragment and the support library bring backs most of the 
 features you need for supporting old devices 

 Reading your message and the replies you get it seems like everybody is 
 experiencing bug in how the API is implemented. 

 I don't trust you. 
 What I think is that either I am be always very lucky either you did 
 something wrong. 

 I'm open to change my mind, but I'd like to have some practical

Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-31 Thread Omer Gilad
Flaming is not the purpose of this discussion - the purpose is to:
1. Share and find some practical solutions, if there are any.
2. Bring the seriousness and span of this issue to Google's attention - as 
there seems to be complete ignorance and self-delusion regarding it.
So far I haven't seen any official Google source admit that this issue even 
exists, or provide any practical way of dealing with it.

Of course, there's an inevitable element of being completely pissed-off 
about it.


Regarding an issue database - that's a partial solution that can certainly 
cut off the amount of work that developers spend on device bugs.
If I could look up issues related to a specific device or API and prepare 
myself before publishing to users using already made workarounds, maybe my 
job would be easier.
It will also bring the issue to Google's attention, because at some point 
they'll have to confront a constantly growing device issue database.

But it's only partial - I'm trying to point out the the problem is more in 
the attitude, than in specific device vendors.
Bugs will always happen in any product, and Google can't put surveillance 
in Samsung's factories and tell them what to do.
However, Google can be very strict about regulations, and demand high 
standards from anyone who wishes to use the Android brand and use the 
Google Play service.

Some practical steps that Google can take to eliminate the problem that 
developers face when distributing apps:

1. Automatically monitor app ratings in Google Play, and identify spikes 
where a certain device gives a considerably low rating for an app than the 
other devices.
Chances are that there's a device specific bug.
Actively inquire the situation ( that will usually apply to lots of apps 
using the same API), and when Google verifies there's indeed a bug in the 
device - demand an on-the-air update from the vendor in 2 weeks.
If the vendor won't fix the bug on all of its device that can access Google 
Play, ban the device from the store until they fix it.

2. Set up a special contact email for developer reports, so you can get 
reports about specific device issues that developers encounter.
Do the same procedure like in #1 - ask the vendor to fix it. If they don't 
fix it, remove their Google Play certification until they do.

All that is being asked from Google is to be assertive and strict about who 
they give Google Play certification to.
I don't expect Google to fix vendor bugs, that's impossible - but I expect 
Google to demand high quality without compromise.

On Wednesday, July 31, 2013 3:32:41 PM UTC+3, Daniele Segato wrote:

 On 07/31/2013 01:47 PM, Omer Gilad wrote: 
  No problem - you want practical examples, I have literally an endless 
  amount... 
  I will try not to collapse Google servers or something, so I'll post 
  just a few. 

 Thanks for that. 

  
  By the way - read the original post - I am NOT talking about official 
  fragmentation. 
  Not screen sizes, API levels features and so on. 
  I'm talking about BUGS. 

 I got it. 
 I'm just saying I never hit one. 
 I wrote that message with the specific intent of moving this discussion 
 on facts in opposition to my opinion VS your opinion 

 I never said the API are flawless (as Piren pointed out in the other 
 response to my message). It's their implementation that may be buggy. 

 I said my perceiving of the issue is not so bad as you pictured it. 
 Maybe 20% of the time for a project may go for fragmentation (both bugs 
 and handling API changes, screen sizes etc.). 
 I do not often write with native code, Graphics, Bluetooth, Sensors etc. 
 Sure, my user bay may not be so big too, sure. 

 But you know what? I think it's more constructive to list issues and 
 try, together as a community, to route them out instead of just wining 
 about fragmentation. 
 Complaining with Google doesn't help either, because they can't do 
 anything about a bug created by someone else. 

 The only thing you, and all the other hitting this kind of issues can do 
 is find a way to list them out. If you really care about the issue you 
 should discuss that and put facts (as this list) in front of claims 
 (fragmentation sucks). 


  All the issues below were tested with a device in front of me, these are 
  not just assumptions. 
  Ok, let's go: 
  
  1. On Samsung Galaxy S and most of its variants, when you use this 
  simple and documented intent: 
  http://developer.android.com/guide/topics/media/camera.html#intent-image 
  
  The camera app behaves completely differently, and will sometimes ignore 
  MediaStore.EXTRA_OUTPUT. 
  If you run the same code that would work on any other device, most 
  likely you'll crash on a NullPointer, unless you workaround for Samsung. 
  Tested with the device in 
  
  2. The API AudioManager.setMicrophoneMute 
  (
 http://developer.android.com/reference/android/media/AudioManager.html#setMicrophoneMute(boolean))
  

doesn't work at all on some Motorola devices

[android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-31 Thread Omer Gilad
I just came upon this by accident
http://officialandroid.blogspot.co.il/2012/09/the-benefits-importance-of-compatibility.html

This seems like the right approach, but my own experience is that the 
Android reality is very far from this ideal.

I've heard about the CTS.
The question is - are vendors actually forced to pass the CTS with their 
customizations?

On Friday, July 26, 2013 1:39:14 AM UTC+3, Omer Gilad wrote:

 .I am wondering how developers here are dealing with the fact that there 
 are 1000's of devices out there, some of them running your applications in 
 very broken ways
 .I keep running into these kind of issues again and again for the past 3 
 years, and to be honest, I'm fed up with it
 .I've decided to move to iOS development, and the only way to convince me 
 otherwise is to give me a decent, reliable way of dealing with fragmentation

 So what do you do when you develop a game, for example, and try to create 
 a high-quality user experience on Google Play?
 Do you do your QA on 50 different devices? 100? 1000?
 Or do you just shoot blindly and hope that it works, or wait for users to 
 send you bug reports?

 To make it clear, I'm not talking about official fragmentation.
 I don't talk about different screen sizes, densities, features, OS 
 versions and so on.
 I talk about the unofficial fragmentation. The fact that most devices, 
 even the popular ones from the big companies like Samsung, HTC, Motorola, 
 LG and so on, contain tons of implementation bugs that prevent apps from 
 working correctly.
 I'm talking about the fact that you can call a certain simple API, test it 
 on a stock Android ROM (like on Nexus 4), and then have your application 
 crash on some Samsung, that decided to break the implementation because of 
 some customization.

 How can people stand that?
 How is it possible to write code, when the machine that executes it is 
 completely broken in unexpected ways?

 I'm really fed up with it.
 About 50% of my Android development time is wasted on babysitting broken 
 devices.
 I'm waiting for an official Google response about this, and what have you 
 been doing in all those years to fix that.
 I've heard about things like conformance tests for devices and so on, 
 but the reality is far from acceptable in this area.

 ,Looking forward for helpful responses
 Omer


-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-31 Thread Omer Gilad
I am missing the point of this post.
Are you saying that there is no solution?
If so, what do you suggest? Just stop developing for Android?

When I say not aware of that, I mean that it doesn't show up as a 
practical solution from the eyes of developers.
Maybe they're aware of that and do internal meetings and discussions about 
it, but it's not something that I know of.

On Wednesday, July 31, 2013 5:43:42 PM UTC+3, a1 wrote:

 1. Share and find some practical solutions, if there are any.

 There isn't any, for some specific use cases (games) best solution is to 
 use higher level API (game engine).

 2. Bring the seriousness and span of this issue to Google's attention - as 
 there seems to be complete ignorance and self-delusion regarding it.

 And you are saying that because of what exactly?
  

 So far I haven't seen any official Google source admit that this issue 
 even exists, or provide any practical way of dealing with it.

 There is no practical way of dealing with it (except of on device basis 
 which, according to you, isn't practical), if you search this group and 
 stackoverflow you will find several examples where Android team engineers 
 talk about device bugs so I really have no idea why you think they aren't 
 aware of that, moreover anyone who has ever work with J2ME is more than 
 aware that avoiding this is impossible (and J2ME was few orders of 
 magnitude worse due to differences in underlying OSes, drivers, CPU 
 architectures etc).

 --
 Bart


-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-31 Thread Omer Gilad
I would certainly support by adding known issues if there was such a system.
I'm not familiar with any free website that can easily create such a 
database - anyone?

On Wednesday, July 31, 2013 4:59:19 PM UTC+3, Daniele Segato wrote:

 On 07/31/2013 03:36 PM, οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½-οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ 
 οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ wrote: 
  I really dont get any of your points Daniele! 

 I can see that ;) 

  Every developer that till 
  now sent an email in this discussion has already stated his/her opinion 
  in order to answer at Omer's first question... 

 I'm asking you all to think and propose what can be done BY US (not 
 Google) to ease up the issue. 
 That's it. 

 And I made a proposal. 

  
  We can bring Google's attetntion at this problem but we should be 
  focused on it! If you don't create any workarounds for the buggy devices 
  and just ban them from your app, imagine what could happen for those 
  devices..They would only be able to download 4-5 apps (just 
 saying...)... 
  

 That would be absolutely perfect. 
 What do you think an user able to download 4-5 apps of that device? 
 -- This device sucks 
 What will the reviews say about it? 
 -- don't buy it 
 What will the vendor producing that device do with next devices? 
 -- be more complain to the standards. 

 But hey, that's was just a suggestion on what one can do knowing the 
 devices causing more issues. 

 The main proposal was to put up a bug database for this kind of issues. 


-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




[android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-30 Thread Omer Gilad
Hey Mike I still didn't get answers to my questions about this service...
What are the remote devices that the code is running on? Do I need to 
instruct a user to install this on his own device?

On Monday, July 29, 2013 8:56:12 PM UTC+3, Mike wrote:

 Use my App, you can run code on remote device, not just read logs:
 https://cloudshellapp.appspot.com/
 https://play.google.com/store/apps/details?id=com.cloudshell

 The App will allow you to run code on remote Android phones, 
 so you can fix the bug on the phone you do not have physical access to.

 On Monday, July 29, 2013 2:57:18 AM UTC-4, Piren wrote:

 Well, after i started encountering such issues i just LOADED my app with 
 debugging information, like, seriously redonkulous amounts of logging. 
 There's nothing the app didn't log, sorted with tags and extra information 
 to say exactly what is doing on and why. It was easier to fix bugs of even 
 things i did not have in my hand... heck, most of the bugs i solved were of 
 devices i never even held. (all the logs were surrounded by a constant 
 variable that was set during compilation, so that code never made it to 
 release versions, it makes it easier to manage app versions).

 I guess that will not be as easy to do with a game, but it should still 
 be better than what you have now. You can make it a feature of the app, 
 let the user community engage with you (the developer) and actively 
 participate in the creation of the game and what not... you'll solve bugs, 
 they'll feel as a contributer and get their apps running better.
 If your game is a paid game, make sure the debug versions are limited in 
 capability and will only be good for debugging.




 On Monday, July 29, 2013 12:29:25 AM UTC+3, Omer Gilad wrote:

 What you wrote is the obvious part of what I do - test with beta users. 
 I agree that this is a must.

 The problem is, sometimes it's impossible to debug what you find.
 When the issue is not a simple crash stack trace - but rather some 
 behavior, or display issue, you can't just keep ping-ponging versions with 
 a user without wasting whole days on that... You need the device in your 
 hand.
 And as an indie developer, it's practically impossible to get a hold of 
 many different devices.


 On Sunday, July 28, 2013 12:47:30 PM UTC+3, Piren wrote:

 Wrote a lengthy response but my browser decided not to post it, so 
 here's the short version:

 - That's a known problem with android development, it was obvious about 
 a couple of months after it came out. when the premise of the system is to 
 be open and as varied as possible, this kind of issues are a given.
 - Under your limitations, the best approach is to release the app only 
 to a small subset of devices it was tested on and expand that subset as 
 time goes on. Use an open beta group for devices you do not have access 
 to. 
 Even Netflix was released on only 5 devices.
 - iOS development might not have this issue (it has fragmentation, but 
 it isn't the same as android's), but over all i believe android has a more 
 developer friendly ecosystem... instead of being frustrated with this, 
 you'll find more than enough other iOS specific issues that will frustrate 
 you.. especially since you're used to how Android is.



 On Friday, July 26, 2013 1:39:14 AM UTC+3, Omer Gilad wrote:

 .I am wondering how developers here are dealing with the fact that 
 there are 1000's of devices out there, some of them running your 
 applications in very broken ways
 .I keep running into these kind of issues again and again for the past 
 3 years, and to be honest, I'm fed up with it
 .I've decided to move to iOS development, and the only way to convince 
 me otherwise is to give me a decent, reliable way of dealing with 
 fragmentation

 So what do you do when you develop a game, for example, and try to 
 create a high-quality user experience on Google Play?
 Do you do your QA on 50 different devices? 100? 1000?
 Or do you just shoot blindly and hope that it works, or wait for users 
 to send you bug reports?

 To make it clear, I'm not talking about official fragmentation.
 I don't talk about different screen sizes, densities, features, OS 
 versions and so on.
 I talk about the unofficial fragmentation. The fact that most 
 devices, even the popular ones from the big companies like Samsung, HTC, 
 Motorola, LG and so on, contain tons of implementation bugs that prevent 
 apps from working correctly.
 I'm talking about the fact that you can call a certain simple API, 
 test it on a stock Android ROM (like on Nexus 4), and then have your 
 application crash on some Samsung, that decided to break the 
 implementation 
 because of some customization.

 How can people stand that?
 How is it possible to write code, when the machine that executes it is 
 completely broken in unexpected ways?

 I'm really fed up with it.
 About 50% of my Android development time is wasted on babysitting 
 broken devices.
 I'm waiting for an official Google

[android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-28 Thread Omer Gilad
What you wrote is the obvious part of what I do - test with beta users. I 
agree that this is a must.

The problem is, sometimes it's impossible to debug what you find.
When the issue is not a simple crash stack trace - but rather some 
behavior, or display issue, you can't just keep ping-ponging versions with 
a user without wasting whole days on that... You need the device in your 
hand.
And as an indie developer, it's practically impossible to get a hold of 
many different devices.


On Sunday, July 28, 2013 12:47:30 PM UTC+3, Piren wrote:

 Wrote a lengthy response but my browser decided not to post it, so here's 
 the short version:

 - That's a known problem with android development, it was obvious about a 
 couple of months after it came out. when the premise of the system is to be 
 open and as varied as possible, this kind of issues are a given.
 - Under your limitations, the best approach is to release the app only to 
 a small subset of devices it was tested on and expand that subset as time 
 goes on. Use an open beta group for devices you do not have access to. Even 
 Netflix was released on only 5 devices.
 - iOS development might not have this issue (it has fragmentation, but it 
 isn't the same as android's), but over all i believe android has a more 
 developer friendly ecosystem... instead of being frustrated with this, 
 you'll find more than enough other iOS specific issues that will frustrate 
 you.. especially since you're used to how Android is.



 On Friday, July 26, 2013 1:39:14 AM UTC+3, Omer Gilad wrote:

 .I am wondering how developers here are dealing with the fact that there 
 are 1000's of devices out there, some of them running your applications in 
 very broken ways
 .I keep running into these kind of issues again and again for the past 3 
 years, and to be honest, I'm fed up with it
 .I've decided to move to iOS development, and the only way to convince me 
 otherwise is to give me a decent, reliable way of dealing with fragmentation

 So what do you do when you develop a game, for example, and try to create 
 a high-quality user experience on Google Play?
 Do you do your QA on 50 different devices? 100? 1000?
 Or do you just shoot blindly and hope that it works, or wait for users to 
 send you bug reports?

 To make it clear, I'm not talking about official fragmentation.
 I don't talk about different screen sizes, densities, features, OS 
 versions and so on.
 I talk about the unofficial fragmentation. The fact that most devices, 
 even the popular ones from the big companies like Samsung, HTC, Motorola, 
 LG and so on, contain tons of implementation bugs that prevent apps from 
 working correctly.
 I'm talking about the fact that you can call a certain simple API, test 
 it on a stock Android ROM (like on Nexus 4), and then have your application 
 crash on some Samsung, that decided to break the implementation because of 
 some customization.

 How can people stand that?
 How is it possible to write code, when the machine that executes it is 
 completely broken in unexpected ways?

 I'm really fed up with it.
 About 50% of my Android development time is wasted on babysitting broken 
 devices.
 I'm waiting for an official Google response about this, and what have you 
 been doing in all those years to fix that.
 I've heard about things like conformance tests for devices and so on, 
 but the reality is far from acceptable in this area.

 ,Looking forward for helpful responses
 Omer



-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




[android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-28 Thread Omer Gilad
That looks innovative, I'll definitely dig into this...

How versatile is this solution? Can you run only a select part of Android 
APIs, wrapped by your script?
How is the distribution being done (like, where are all those devices that 
run the test code)?

On Sunday, July 28, 2013 10:05:54 PM UTC+3, Mike wrote:

 I wrote an free App and web site to help myself on the Android 
 fragmentation problem:
 https://cloudshellapp.appspot.com/
 https://play.google.com/store/apps/details?id=com.cloudshell

 The App will allow you to run code on remote Android phones, 
 so you can fix the bug on the phone you do not have physical access to.

 I asked my friend in cell phone store to test on the different Android 
 phones,
 then I will remote read the log and test the code.

 On Thursday, July 25, 2013 6:39:14 PM UTC-4, Omer Gilad wrote:

 .I am wondering how developers here are dealing with the fact that there 
 are 1000's of devices out there, some of them running your applications in 
 very broken ways
 .I keep running into these kind of issues again and again for the past 3 
 years, and to be honest, I'm fed up with it
 .I've decided to move to iOS development, and the only way to convince me 
 otherwise is to give me a decent, reliable way of dealing with fragmentation

 So what do you do when you develop a game, for example, and try to create 
 a high-quality user experience on Google Play?
 Do you do your QA on 50 different devices? 100? 1000?
 Or do you just shoot blindly and hope that it works, or wait for users to 
 send you bug reports?

 To make it clear, I'm not talking about official fragmentation.
 I don't talk about different screen sizes, densities, features, OS 
 versions and so on.
 I talk about the unofficial fragmentation. The fact that most devices, 
 even the popular ones from the big companies like Samsung, HTC, Motorola, 
 LG and so on, contain tons of implementation bugs that prevent apps from 
 working correctly.
 I'm talking about the fact that you can call a certain simple API, test 
 it on a stock Android ROM (like on Nexus 4), and then have your application 
 crash on some Samsung, that decided to break the implementation because of 
 some customization.

 How can people stand that?
 How is it possible to write code, when the machine that executes it is 
 completely broken in unexpected ways?

 I'm really fed up with it.
 About 50% of my Android development time is wasted on babysitting broken 
 devices.
 I'm waiting for an official Google response about this, and what have you 
 been doing in all those years to fix that.
 I've heard about things like conformance tests for devices and so on, 
 but the reality is far from acceptable in this area.

 ,Looking forward for helpful responses
 Omer



-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




[android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-28 Thread Omer Gilad
The best workaround I know for that is to filter devices on Google Play 
console.

Yes, you lose tons of customers, but at least you don't get 1 star reviews 
like IT SHOWS BLACK SCREEN ON MY CRAPSUNG S4 CRAP EDITION, DON'T DOWNLOAD

On Sunday, July 28, 2013 11:51:32 PM UTC+3, Thomas Jakway wrote:

 Does anyone have a workaround for one of the bigger problems of this mess: 
 users will blame your app and write bad reviews?
 That sounds like a joke, but really, has anyone had success just telling 
 users sorry, Samsung's fault :(?
 Would be a shame to lose sales because of the vendor's problems.

 On Thursday, July 25, 2013 3:39:14 PM UTC-7, Omer Gilad wrote:

 .I am wondering how developers here are dealing with the fact that there 
 are 1000's of devices out there, some of them running your applications in 
 very broken ways
 .I keep running into these kind of issues again and again for the past 3 
 years, and to be honest, I'm fed up with it
 .I've decided to move to iOS development, and the only way to convince me 
 otherwise is to give me a decent, reliable way of dealing with fragmentation

 So what do you do when you develop a game, for example, and try to create 
 a high-quality user experience on Google Play?
 Do you do your QA on 50 different devices? 100? 1000?
 Or do you just shoot blindly and hope that it works, or wait for users to 
 send you bug reports?

 To make it clear, I'm not talking about official fragmentation.
 I don't talk about different screen sizes, densities, features, OS 
 versions and so on.
 I talk about the unofficial fragmentation. The fact that most devices, 
 even the popular ones from the big companies like Samsung, HTC, Motorola, 
 LG and so on, contain tons of implementation bugs that prevent apps from 
 working correctly.
 I'm talking about the fact that you can call a certain simple API, test 
 it on a stock Android ROM (like on Nexus 4), and then have your application 
 crash on some Samsung, that decided to break the implementation because of 
 some customization.

 How can people stand that?
 How is it possible to write code, when the machine that executes it is 
 completely broken in unexpected ways?

 I'm really fed up with it.
 About 50% of my Android development time is wasted on babysitting broken 
 devices.
 I'm waiting for an official Google response about this, and what have you 
 been doing in all those years to fix that.
 I've heard about things like conformance tests for devices and so on, 
 but the reality is far from acceptable in this area.

 ,Looking forward for helpful responses
 Omer



-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-28 Thread Omer Gilad
With all this talk I still haven't seen an example of a testing service 
that can actually help me...
Got any links? Anything with a reasonable price that can ease the pain (and 
that you used for yourself)?

BTW, I have worked in the past with some of those remote device providers 
(like http://www.keynotedeviceanywhere.com/).
It's very expensive to get a few hours with a device, especially if this is 
something you have to do constantly with different devices each time 
there's an issue.
And the deal-breaker part - it's so slow, you'll actually have to waste a 
whole hour just on installing your app and seeing LogCat.

On Monday, July 29, 2013 12:48:16 AM UTC+3, Kristopher Micinski wrote:

 So in this case, how does a subscription based test service not help 
 you?  I'm not saying that a concrete one exists, but I think this kind 
 of debugging service (or coop, essentially) would be a good tool.  You 
 include a time metric, do some tasks to help other developers', and 
 they do some work of doing yours.  One of the problems here is the 
 heterogenous distribution of devices, but I don't think that's an 
 inherent limitation. 

 I've thought about starting up one of these services for a while, but 
 don't really have the resources to do so. 

 (I think in my previous posts you thought I was advocating a 
 pushbutton testing service: I wasn't.  But the point still stands: if 
 you want to test on greater devices, do it with a service and possibly 
 humans in the loop.  Big testing services should integrate this work 
 cycle too, for when pushbutton tests don't work...) 

 Kris 


 On Sun, Jul 28, 2013 at 5:29 PM, Omer Gilad omer@gmail.comjavascript: 
 wrote: 
  What you wrote is the obvious part of what I do - test with beta users. 
 I 
  agree that this is a must. 
  
  The problem is, sometimes it's impossible to debug what you find. 
  When the issue is not a simple crash stack trace - but rather some 
 behavior, 
  or display issue, you can't just keep ping-ponging versions with a user 
  without wasting whole days on that... You need the device in your hand. 
  And as an indie developer, it's practically impossible to get a hold of 
 many 
  different devices. 
  
  
  On Sunday, July 28, 2013 12:47:30 PM UTC+3, Piren wrote: 
  
  Wrote a lengthy response but my browser decided not to post it, so 
 here's 
  the short version: 
  
  - That's a known problem with android development, it was obvious about 
 a 
  couple of months after it came out. when the premise of the system is 
 to be 
  open and as varied as possible, this kind of issues are a given. 
  - Under your limitations, the best approach is to release the app only 
 to 
  a small subset of devices it was tested on and expand that subset as 
 time 
  goes on. Use an open beta group for devices you do not have access to. 
 Even 
  Netflix was released on only 5 devices. 
  - iOS development might not have this issue (it has fragmentation, but 
 it 
  isn't the same as android's), but over all i believe android has a more 
  developer friendly ecosystem... instead of being frustrated with this, 
  you'll find more than enough other iOS specific issues that will 
 frustrate 
  you.. especially since you're used to how Android is. 
  
  
  
  On Friday, July 26, 2013 1:39:14 AM UTC+3, Omer Gilad wrote: 
  
  .I am wondering how developers here are dealing with the fact that 
 there 
  are 1000's of devices out there, some of them running your 
 applications in 
  very broken ways 
  .I keep running into these kind of issues again and again for the past 
 3 
  years, and to be honest, I'm fed up with it 
  .I've decided to move to iOS development, and the only way to convince 
 me 
  otherwise is to give me a decent, reliable way of dealing with 
 fragmentation 
  
  So what do you do when you develop a game, for example, and try to 
 create 
  a high-quality user experience on Google Play? 
  Do you do your QA on 50 different devices? 100? 1000? 
  Or do you just shoot blindly and hope that it works, or wait for users 
 to 
  send you bug reports? 
  
  To make it clear, I'm not talking about official fragmentation. 
  I don't talk about different screen sizes, densities, features, OS 
  versions and so on. 
  I talk about the unofficial fragmentation. The fact that most 
 devices, 
  even the popular ones from the big companies like Samsung, HTC, 
 Motorola, LG 
  and so on, contain tons of implementation bugs that prevent apps from 
  working correctly. 
  I'm talking about the fact that you can call a certain simple API, 
 test 
  it on a stock Android ROM (like on Nexus 4), and then have your 
 application 
  crash on some Samsung, that decided to break the implementation 
 because of 
  some customization. 
  
  How can people stand that? 
  How is it possible to write code, when the machine that executes it is 
  completely broken in unexpected ways? 
  
  I'm really fed up with it. 
  About 50% of my Android development time

Re: [android-developers] Re: Dealing with 1000's of different devices, each one with its own bugs

2013-07-28 Thread Omer Gilad
I'm amused by what came to my mind because of what you wrote - I thought of 
having a website like that for mutual testing between Android developers.

We can call it DroidSurfing (like CouchSurfing), and the point is simple 
- registered like-minded Android developers let your code surf on their 
devices, and in exchange you provide the same luxury for other developers.
Of course, some minimal reputation monitoring is required, just to prevent 
malicious developers from spreading false results or from distributing 
someone's paid app for free...

On Monday, July 29, 2013 1:14:48 AM UTC+3, Kristopher Micinski wrote:

 I didn't posit that there were concrete things you could go out and 
 buy right now, so apologies if I misphrased.  I know a group who works 
 on a research project which does basically this, but there's no word 
 on whether it will be open source any time soon.  I think the idea is 
 what I just mentioned, collaborative crowd based testing services that 
 allow you to test on a wide range and variety of devices with very 
 expressive test scripts and possible end user testing when applicable. 

 Kris 

 On Sun, Jul 28, 2013 at 6:05 PM, Omer Gilad omer@gmail.comjavascript: 
 wrote: 
  With all this talk I still haven't seen an example of a testing service 
 that 
  can actually help me... 
  Got any links? Anything with a reasonable price that can ease the pain 
 (and 
  that you used for yourself)? 
  
  BTW, I have worked in the past with some of those remote device 
 providers 
  (like http://www.keynotedeviceanywhere.com/). 
  It's very expensive to get a few hours with a device, especially if this 
 is 
  something you have to do constantly with different devices each time 
 there's 
  an issue. 
  And the deal-breaker part - it's so slow, you'll actually have to waste 
 a 
  whole hour just on installing your app and seeing LogCat. 
  
  
  On Monday, July 29, 2013 12:48:16 AM UTC+3, Kristopher Micinski wrote: 
  
  So in this case, how does a subscription based test service not help 
  you?  I'm not saying that a concrete one exists, but I think this kind 
  of debugging service (or coop, essentially) would be a good tool.  You 
  include a time metric, do some tasks to help other developers', and 
  they do some work of doing yours.  One of the problems here is the 
  heterogenous distribution of devices, but I don't think that's an 
  inherent limitation. 
  
  I've thought about starting up one of these services for a while, but 
  don't really have the resources to do so. 
  
  (I think in my previous posts you thought I was advocating a 
  pushbutton testing service: I wasn't.  But the point still stands: if 
  you want to test on greater devices, do it with a service and possibly 
  humans in the loop.  Big testing services should integrate this work 
  cycle too, for when pushbutton tests don't work...) 
  
  Kris 
  
  
  On Sun, Jul 28, 2013 at 5:29 PM, Omer Gilad omer@gmail.com 
 wrote: 
   What you wrote is the obvious part of what I do - test with beta 
 users. 
   I 
   agree that this is a must. 
   
   The problem is, sometimes it's impossible to debug what you find. 
   When the issue is not a simple crash stack trace - but rather some 
   behavior, 
   or display issue, you can't just keep ping-ponging versions with a 
 user 
   without wasting whole days on that... You need the device in your 
 hand. 
   And as an indie developer, it's practically impossible to get a hold 
 of 
   many 
   different devices. 
   
   
   On Sunday, July 28, 2013 12:47:30 PM UTC+3, Piren wrote: 
   
   Wrote a lengthy response but my browser decided not to post it, so 
   here's 
   the short version: 
   
   - That's a known problem with android development, it was obvious 
 about 
   a 
   couple of months after it came out. when the premise of the system 
 is 
   to be 
   open and as varied as possible, this kind of issues are a given. 
   - Under your limitations, the best approach is to release the app 
 only 
   to 
   a small subset of devices it was tested on and expand that subset as 
   time 
   goes on. Use an open beta group for devices you do not have access 
 to. 
   Even 
   Netflix was released on only 5 devices. 
   - iOS development might not have this issue (it has fragmentation, 
 but 
   it 
   isn't the same as android's), but over all i believe android has a 
 more 
   developer friendly ecosystem... instead of being frustrated with 
 this, 
   you'll find more than enough other iOS specific issues that will 
   frustrate 
   you.. especially since you're used to how Android is. 
   
   
   
   On Friday, July 26, 2013 1:39:14 AM UTC+3, Omer Gilad wrote: 
   
   .I am wondering how developers here are dealing with the fact that 
   there 
   are 1000's of devices out there, some of them running your 
   applications in 
   very broken ways 
   .I keep running into these kind of issues again and again for the 
 past 
   3 
   years, and to be honest, I'm

Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-26 Thread Omer Gilad
The point of the original post (the concrete question) was beyond just rant 
and rave - the question asked is How to deal with it.
To put in other words - What do you suggest as a practical solution to the 
problem, beyond just dumping Android and developing for iOS.
To filter out some possible answers:

1. Buying 50+ devices and doing QA on each one of them is NOT an option. It 
shouldn't ever be.
2. Paying constantly to remote testing services just to know what bugs we 
have (without even the ability to debug and resolve them) is NOT an option.
3. Chasing after devices (borrowing from friends, getting debug logs from 
users, etc.) and writing ugly code for workarounds time after time is what 
I've been doing for some time, but that is NOT an option.
3. Filtering many devices on Google Play console is our current solution, 
which is far from ideal as you can imagine.

Currently, I don't have an effective way to deal with it, to the point that 
I've decided to move to another platform - the current state is impossible 
to cope with.
I'm an independent developer, working in cooperation with some people, and 
we fail to address the fragmentation issue.
All our efforts invested in creating a quality product are in vain when 
it's being run on countless broken devices that we can't keep track of.
Just to back myself up - I've been developing for Android for more than 3 
years, and have been constantly chasing after devices since the beginning.
I experienced that in multiple types of projects (apps and games), as a 
hired or freelance developer and as an entrepreneur. 
It applies to every aspect of developing for Android, so this issue can't 
be evaded.
To me, this is far more important than answering the questions on API 
usage, etc.

On Friday, July 26, 2013 2:03:28 PM UTC+3, Kristopher Micinski wrote:

 I guess I'm trying to ascertain: is there a concrete question you 
 have, or just a bunch of bad points about how the Android ecosystem 
 sucks right now? 

 If it's the second, everyone agrees it sucks, there's not a good solution. 

 I suppose one thing that Android could have done better from the start 
 was to offer UI modes that would be guaranteed to homogenous across 
 all certified devices. 

 I don't think that I said statistics were a solution to the issue 
 (though apologies if I gave that impression): I meant to merely give 
 the idea that because of Android's fragmentation a good way to get a 
 handle on what you're facing would be to use device install 
 statistics.  I never meant to imply that it was in any way a solution. 

 But everyone agrees that fragmentation sucks.  Everyone has agreed it 
 sucks since the beginning (even Android 2.0), and people knew it would 
 get *worse*.  You have to worry about API levels, screen 
 configurations, hardware configurations, etc... 

 I know of a few groups developing open source test services, that 
 could presumably end up making a co op or something: that would 
 definitely give more leeway than traditional expensive test services. 
 (If people would be interested, this would be possible to do in the 
 community right now: just buy a server, write some code to distribute 
 the APKs with a feedback / review system, etc..) 

 Kris 

 On Thu, Jul 25, 2013 at 10:01 PM, Omer Gilad 
 omer@gmail.comjavascript: 
 wrote: 
  I agree that it's better than nothing. But, since it's a paid service 
 that 
  has nothing to do with the official SDK, it doesn't come in the SDK's 
 favor 
  at all. 
  
  The problem appears in much more obvious parts of the SDK than the one I 
  presented. I can give countless examples on demand and I'm sure others 
 can 
  too. 
  
  Also, I never even bothered to fix custom ROMs and such - this is really 
  beyond my scope. 
  I'm having constant issues with stock, popular devices from Samsung, 
 HTC, 
  etc. - the ones that get shipped in the millions and dominate the Google 
  Play statistics. 
  
  As you said, statistics are also a temporary solution to the issue - 
 just 
  focus on workarounds for the most popular buggy devices - mainly the 
 Samsung 
  Galaxy series and its endless variations. 
  
  On Friday, July 26, 2013 4:33:52 AM UTC+3, Kristopher Micinski wrote: 
  
  Your last paragraph is *exactly* what the CTS is all about, but 
  obviously if you don't work for google you can't mandate what goes in 
  and what does not :-). 
  
  I'm not recommending that these services are the solution to 
  everyone's problems: but I do contend they get you farther than you 
  would be otherwise.  Games are particularly hard to test, since GPUs 
  vary more widely across devices and aren't part of the most common 
  pieces of the SDK. 
  
  The fact of the matter is, there are always going to be hacked up ROMs 
  running on the market: that's the design decision made by Android. 
  The CTS helps get you farther to a holistic / cohesive platform, but 
  in the end it's a numbers game: knowing which devices, API levels, 
  user

Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-26 Thread Omer Gilad
That doesn't justify.
An open source project can be maintained with strict regulations and 
high-quality standards.

Google can allow anyone to create his own Android device and sell however 
they want - but don't allow it to run Google Play and rate apps!

I don't recall problems in this massive scope on Linux for example. As far 
as I can tell, if I run a Linux program it's going to work 99% of the time.

On Friday, July 26, 2013 3:31:26 PM UTC+3, Paul-Peter Tournaris wrote:

 Can't agree more with everything that has already been said here, but let 
 me remind you something guys: WE chose the Android way, they didn't force 
 us! Android is an Open Source Project and therefore it was more than 100% 
 sure that problems like the ones mentioned above, would appear by the time. 
 There is nothing we can do when almost every brand (Samsung, LG, Sony) uses 
 it's own custom ROM. 

 This should have been handled at the beggining of Android's carreer! It's 
 kind of difficult to deal with it at this moment with this huge penetration 
 of Android on numerous devices!


 On Fri, Jul 26, 2013 at 3:19 PM, Kostya Vasilyev 
 kman...@gmail.comjavascript:
  wrote:

 The conversation so far, and app testing services, assume that there are 
 certain broken device models / firmwares and they are broken in a 
 deterministic way.

 This implies that those bad devices can be discovered and excluded or 
 workarounds implemented, again, in a deterministic way.

 From my experience, it's worse than that.

 I can get a user bug report that makes my jaw drop to the floor, and have 
 a an exact or similar device on my desk that does not exhibit the issue.

 Basic things get broken: the app not being able to connect to well known 
 servers, a toast notification getting stuck on the screen, the system 
 ActionBar overflow button not showing on a device without a Menu button, 
 etc.

 Reinstaling or clearing the Dalvik cache (or some other magic) often 
 resolves these.

 That itself is a bad sign -- meaning that system level things can 
 randomly break and randomly heal themselves, in a non-deterministic way.

 Here is a video I made of Galaxy Nexus with 4.0.2 rebooting when trying 
 to start Google Maps, happened every time out of 10 or so I tried:

 http://www.youtube.com/watch?v=mC4EegjeWZA

 I fixed it by resetting the device back to factory settings and 
 reinstalling Google Maps, but the question remains: why did this help? Did 
 Google Maps get corrupted during installation? Can it happen to other apps 
 too? I'm not even asking why a modern, preemptively multitasking operating 
 system can enter a reboot triggered by application code.

 I don't have an answer for this situation either. It's just something I 
 have to deal with every day, costing me a lot of wasted time and a 
 depressed mood.

 The irony is, users always assume it's the app which must be doing 
 something weird, unlike Windows, where they're quick to blame MS and Bill 
 Gates personally. Must be some kind of Google magic.
  
 -- K



 2013/7/26 Omer Gilad omer@gmail.com javascript:

 The point of the original post (the concrete question) was beyond just 
 rant and rave - the question asked is How to deal with it.
 To put in other words - What do you suggest as a practical solution to 
 the problem, beyond just dumping Android and developing for iOS.
 To filter out some possible answers:

 1. Buying 50+ devices and doing QA on each one of them is NOT an option. 
 It shouldn't ever be.
 2. Paying constantly to remote testing services just to know what bugs 
 we have (without even the ability to debug and resolve them) is NOT an 
 option.
 3. Chasing after devices (borrowing from friends, getting debug logs 
 from users, etc.) and writing ugly code for workarounds time after time is 
 what I've been doing for some time, but that is NOT an option.
 3. Filtering many devices on Google Play console is our current 
 solution, which is far from ideal as you can imagine.

 Currently, I don't have an effective way to deal with it, to the point 
 that I've decided to move to another platform - the current state is 
 impossible to cope with.
 I'm an independent developer, working in cooperation with some people, 
 and we fail to address the fragmentation issue.
 All our efforts invested in creating a quality product are in vain when 
 it's being run on countless broken devices that we can't keep track of.
 Just to back myself up - I've been developing for Android for more than 
 3 years, and have been constantly chasing after devices since the beginning.
 I experienced that in multiple types of projects (apps and games), as a 
 hired or freelance developer and as an entrepreneur. 
 It applies to every aspect of developing for Android, so this issue 
 can't be evaded.
 To me, this is far more important than answering the questions on API 
 usage, etc.


 On Friday, July 26, 2013 2:03:28 PM UTC+3, Kristopher Micinski wrote:

 I guess I'm trying to ascertain

[android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-25 Thread Omer Gilad
.I am wondering how developers here are dealing with the fact that there 
are 1000's of devices out there, some of them running your applications in 
very broken ways
.I keep running into these kind of issues again and again for the past 3 
years, and to be honest, I'm fed up with it
.I've decided to move to iOS development, and the only way to convince me 
otherwise is to give me a decent, reliable way of dealing with fragmentation

So what do you do when you develop a game, for example, and try to create a 
high-quality user experience on Google Play?
Do you do your QA on 50 different devices? 100? 1000?
Or do you just shoot blindly and hope that it works, or wait for users to 
send you bug reports?

To make it clear, I'm not talking about official fragmentation.
I don't talk about different screen sizes, densities, features, OS versions 
and so on.
I talk about the unofficial fragmentation. The fact that most devices, 
even the popular ones from the big companies like Samsung, HTC, Motorola, 
LG and so on, contain tons of implementation bugs that prevent apps from 
working correctly.
I'm talking about the fact that you can call a certain simple API, test it 
on a stock Android ROM (like on Nexus 4), and then have your application 
crash on some Samsung, that decided to break the implementation because of 
some customization.

How can people stand that?
How is it possible to write code, when the machine that executes it is 
completely broken in unexpected ways?

I'm really fed up with it.
About 50% of my Android development time is wasted on babysitting broken 
devices.
I'm waiting for an official Google response about this, and what have you 
been doing in all those years to fix that.
I've heard about things like conformance tests for devices and so on, but 
the reality is far from acceptable in this area.

,Looking forward for helpful responses
Omer

-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-25 Thread Omer Gilad
I've found that even the biggest app developers like Skype, Gameloft, etc. 
have device issues, and they don't look in such a good shape.
Just scan the reviews of any super-popular Android app, and you can see the 
same disease... This app doesn't even work, it sucks, and I PAID FOR IT! 
(from some crappy device).

Obviously, those bigger developers have the budget and capacity to own 
100's or Android devices and run a big QA department.
What is an independent developer, or even a small startup supposed to do?

The solution that me and my partners decided on is to aggressively filter 
down any device that gives us bad ratings in Google Play (from the 
developer console).
That feels like taking painkillers when you have a broken leg.

On Friday, July 26, 2013 2:47:49 AM UTC+3, Kristopher Micinski wrote:

 This is basically what the CTS enforcement is attempting to rectify: 
 but it's obviously not a perfect solution. 

 Many small developers just accept this as fact, and handle only the 
 API.  Bigger developers are forced to deal with the real problems, and 
 then it's a matter of extensive knowledge, testing, metaprogramming, 
 etc... 

 Kris 

 On Thu, Jul 25, 2013 at 6:39 PM, Omer Gilad omer@gmail.comjavascript: 
 wrote: 
  .I am wondering how developers here are dealing with the fact that there 
 are 
  1000's of devices out there, some of them running your applications in 
 very 
  broken ways 
  .I keep running into these kind of issues again and again for the past 3 
  years, and to be honest, I'm fed up with it 
  .I've decided to move to iOS development, and the only way to convince 
 me 
  otherwise is to give me a decent, reliable way of dealing with 
 fragmentation 
  
  So what do you do when you develop a game, for example, and try to 
 create a 
  high-quality user experience on Google Play? 
  Do you do your QA on 50 different devices? 100? 1000? 
  Or do you just shoot blindly and hope that it works, or wait for users 
 to 
  send you bug reports? 
  
  To make it clear, I'm not talking about official fragmentation. 
  I don't talk about different screen sizes, densities, features, OS 
 versions 
  and so on. 
  I talk about the unofficial fragmentation. The fact that most devices, 
  even the popular ones from the big companies like Samsung, HTC, 
 Motorola, LG 
  and so on, contain tons of implementation bugs that prevent apps from 
  working correctly. 
  I'm talking about the fact that you can call a certain simple API, test 
 it 
  on a stock Android ROM (like on Nexus 4), and then have your application 
  crash on some Samsung, that decided to break the implementation because 
 of 
  some customization. 
  
  How can people stand that? 
  How is it possible to write code, when the machine that executes it is 
  completely broken in unexpected ways? 
  
  I'm really fed up with it. 
  About 50% of my Android development time is wasted on babysitting broken 
  devices. 
  I'm waiting for an official Google response about this, and what have 
 you 
  been doing in all those years to fix that. 
  I've heard about things like conformance tests for devices and so on, 
 but 
  the reality is far from acceptable in this area. 
  
  ,Looking forward for helpful responses 
  Omer 
  
  -- 
  -- 
  You received this message because you are subscribed to the Google 
  Groups Android Developers group. 
  To post to this group, send email to 
  android-d...@googlegroups.comjavascript: 
  To unsubscribe from this group, send email to 
  android-developers+unsubscr...@googlegroups.com javascript: 
  For more options, visit this group at 
  http://groups.google.com/group/android-developers?hl=en 
  --- 
  You received this message because you are subscribed to the Google 
 Groups 
  Android Developers group. 
  To unsubscribe from this group and stop receiving emails from it, send 
 an 
  email to android-developers+unsubscr...@googlegroups.com javascript:. 
  For more options, visit https://groups.google.com/groups/opt_out. 
  
  


-- 
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Android Developers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-25 Thread Omer Gilad
Yes, I've encountered those services.

This is still not a solution.
It requires substantial money investment, and in a lot of cases it doesn't 
give you the ability to debug on those devices.

Personal example - I'm developing a game, and we've found (after a friend 
checked it) that it has major display artifacts on Samsung Galaxy S4.
No logs or attempts to remotely resolve the issue helped - so we had to get 
our hands on the device for a day.
It turned out that the device's GPU is buggy, and miscalculates some common 
shader operations (like matrix multiplication).
There's no remote testing platform in the world that can assist you in 
resolving issues like that.

The issue is at the core, and must be solved at a design and attitude level 
- devices like that SHOULD NOT be allowed to run Google Play apps (and of 
course, they should be deprived of their certification), until the vendor 
fixes those issues.

On Friday, July 26, 2013 3:27:49 AM UTC+3, Kristopher Micinski wrote:

 There are potential solutions, but in practice it's a constant battle. 
  Certainly there are people that provide internet based test services 
 that test your app on huge numbers of devices for a subscription based 
 fee. 

 Kris 


 On Thu, Jul 25, 2013 at 8:12 PM, Omer Gilad omer@gmail.comjavascript: 
 wrote: 
  I've found that even the biggest app developers like Skype, Gameloft, 
 etc. 
  have device issues, and they don't look in such a good shape. 
  Just scan the reviews of any super-popular Android app, and you can see 
 the 
  same disease... This app doesn't even work, it sucks, and I PAID FOR 
 IT! 
  (from some crappy device). 
  
  Obviously, those bigger developers have the budget and capacity to own 
 100's 
  or Android devices and run a big QA department. 
  What is an independent developer, or even a small startup supposed to 
 do? 
  
  The solution that me and my partners decided on is to aggressively 
 filter 
  down any device that gives us bad ratings in Google Play (from the 
 developer 
  console). 
  That feels like taking painkillers when you have a broken leg. 
  
  On Friday, July 26, 2013 2:47:49 AM UTC+3, Kristopher Micinski wrote: 
  
  This is basically what the CTS enforcement is attempting to rectify: 
  but it's obviously not a perfect solution. 
  
  Many small developers just accept this as fact, and handle only the 
  API.  Bigger developers are forced to deal with the real problems, and 
  then it's a matter of extensive knowledge, testing, metaprogramming, 
  etc... 
  
  Kris 
  
  On Thu, Jul 25, 2013 at 6:39 PM, Omer Gilad omer@gmail.com 
 wrote: 
   .I am wondering how developers here are dealing with the fact that 
 there 
   are 
   1000's of devices out there, some of them running your applications 
 in 
   very 
   broken ways 
   .I keep running into these kind of issues again and again for the 
 past 3 
   years, and to be honest, I'm fed up with it 
   .I've decided to move to iOS development, and the only way to 
 convince 
   me 
   otherwise is to give me a decent, reliable way of dealing with 
   fragmentation 
   
   So what do you do when you develop a game, for example, and try to 
   create a 
   high-quality user experience on Google Play? 
   Do you do your QA on 50 different devices? 100? 1000? 
   Or do you just shoot blindly and hope that it works, or wait for 
 users 
   to 
   send you bug reports? 
   
   To make it clear, I'm not talking about official fragmentation. 
   I don't talk about different screen sizes, densities, features, OS 
   versions 
   and so on. 
   I talk about the unofficial fragmentation. The fact that most 
 devices, 
   even the popular ones from the big companies like Samsung, HTC, 
   Motorola, LG 
   and so on, contain tons of implementation bugs that prevent apps from 
   working correctly. 
   I'm talking about the fact that you can call a certain simple API, 
 test 
   it 
   on a stock Android ROM (like on Nexus 4), and then have your 
 application 
   crash on some Samsung, that decided to break the implementation 
 because 
   of 
   some customization. 
   
   How can people stand that? 
   How is it possible to write code, when the machine that executes it 
 is 
   completely broken in unexpected ways? 
   
   I'm really fed up with it. 
   About 50% of my Android development time is wasted on babysitting 
 broken 
   devices. 
   I'm waiting for an official Google response about this, and what have 
   you 
   been doing in all those years to fix that. 
   I've heard about things like conformance tests for devices and so 
 on, 
   but 
   the reality is far from acceptable in this area. 
   
   ,Looking forward for helpful responses 
   Omer 
   
   -- 
   -- 
   You received this message because you are subscribed to the Google 
   Groups Android Developers group. 
   To post to this group, send email to android-d...@googlegroups.com 
   To unsubscribe from this group, send email to 
   android-developers+unsubscr

Re: [android-developers] Dealing with 1000's of different devices, each one with its own bugs

2013-07-25 Thread Omer Gilad
I agree that it's better than nothing. But, since it's a paid service that 
has nothing to do with the official SDK, it doesn't come in the SDK's favor 
at all.

The problem appears in much more obvious parts of the SDK than the one I 
presented. I can give countless examples on demand and I'm sure others can 
too.

Also, I never even bothered to fix custom ROMs and such - this is really 
beyond my scope.
I'm having constant issues with stock, popular devices from Samsung, HTC, 
etc. - the ones that get shipped in the millions and dominate the Google 
Play statistics.

As you said, statistics are also a temporary solution to the issue - just 
focus on workarounds for the most popular buggy devices - mainly the 
Samsung Galaxy series and its endless variations.

On Friday, July 26, 2013 4:33:52 AM UTC+3, Kristopher Micinski wrote:

 Your last paragraph is *exactly* what the CTS is all about, but 
 obviously if you don't work for google you can't mandate what goes in 
 and what does not :-). 

 I'm not recommending that these services are the solution to 
 everyone's problems: but I do contend they get you farther than you 
 would be otherwise.  Games are particularly hard to test, since GPUs 
 vary more widely across devices and aren't part of the most common 
 pieces of the SDK. 

 The fact of the matter is, there are always going to be hacked up ROMs 
 running on the market: that's the design decision made by Android. 
 The CTS helps get you farther to a holistic / cohesive platform, but 
 in the end it's a numbers game: knowing which devices, API levels, 
 user bases, countries, etc.. to care about is something the 
 experienced developer has to have a handle on. 

 Kris 

 On Thu, Jul 25, 2013 at 9:05 PM, Omer Gilad omer@gmail.comjavascript: 
 wrote: 
  Yes, I've encountered those services. 
  
  This is still not a solution. 
  It requires substantial money investment, and in a lot of cases it 
 doesn't 
  give you the ability to debug on those devices. 
  
  Personal example - I'm developing a game, and we've found (after a 
 friend 
  checked it) that it has major display artifacts on Samsung Galaxy S4. 
  No logs or attempts to remotely resolve the issue helped - so we had to 
 get 
  our hands on the device for a day. 
  It turned out that the device's GPU is buggy, and miscalculates some 
 common 
  shader operations (like matrix multiplication). 
  There's no remote testing platform in the world that can assist you in 
  resolving issues like that. 
  
  The issue is at the core, and must be solved at a design and attitude 
 level 
  - devices like that SHOULD NOT be allowed to run Google Play apps (and 
 of 
  course, they should be deprived of their certification), until the 
 vendor 
  fixes those issues. 
  
  
  On Friday, July 26, 2013 3:27:49 AM UTC+3, Kristopher Micinski wrote: 
  
  There are potential solutions, but in practice it's a constant battle. 
   Certainly there are people that provide internet based test services 
  that test your app on huge numbers of devices for a subscription based 
  fee. 
  
  Kris 
  
  
  On Thu, Jul 25, 2013 at 8:12 PM, Omer Gilad omer@gmail.com 
 wrote: 
   I've found that even the biggest app developers like Skype, Gameloft, 
   etc. 
   have device issues, and they don't look in such a good shape. 
   Just scan the reviews of any super-popular Android app, and you can 
 see 
   the 
   same disease... This app doesn't even work, it sucks, and I PAID FOR 
   IT! 
   (from some crappy device). 
   
   Obviously, those bigger developers have the budget and capacity to 
 own 
   100's 
   or Android devices and run a big QA department. 
   What is an independent developer, or even a small startup supposed to 
   do? 
   
   The solution that me and my partners decided on is to aggressively 
   filter 
   down any device that gives us bad ratings in Google Play (from the 
   developer 
   console). 
   That feels like taking painkillers when you have a broken leg. 
   
   On Friday, July 26, 2013 2:47:49 AM UTC+3, Kristopher Micinski wrote: 
   
   This is basically what the CTS enforcement is attempting to rectify: 
   but it's obviously not a perfect solution. 
   
   Many small developers just accept this as fact, and handle only the 
   API.  Bigger developers are forced to deal with the real problems, 
 and 
   then it's a matter of extensive knowledge, testing, metaprogramming, 
   etc... 
   
   Kris 
   
   On Thu, Jul 25, 2013 at 6:39 PM, Omer Gilad omer@gmail.com 
 wrote: 
.I am wondering how developers here are dealing with the fact that 
there 
are 
1000's of devices out there, some of them running your 
 applications 
in 
very 
broken ways 
.I keep running into these kind of issues again and again for the 
past 3 
years, and to be honest, I'm fed up with it 
.I've decided to move to iOS development, and the only way to 
convince 
me 
otherwise is to give me a decent

[android-developers] Running code right after installation

2011-01-30 Thread Omer Gilad
Hi, I am looking for a way to run code right after being installed -
without waiting for activity launch\boot\etc.
I have used the following manifest declaration:

receiver android:name =xxx.yyy.zzz.PackageInstallReceiver
intent-filter
 action
android:name=android.intent.action.PACKAGE_ADDED/
  action
android:name=android.intent.action.PACKAGE_REMOVED/

  data android:scheme=package /
/intent-filter
/receiver

And created a BroadcastReceiver - my onReceive gets called only after
another package is being installed, not my own.



Thanks in advance!

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Activity won't display on Motorola Milestone

2010-11-17 Thread Omer Gilad
Hi,
I've encountered a weird situation on Motorola Milestone where an
activity (started from background) doesn't get displayed visually on
the screen, although it thinks it does (onCreate() gets called,
ActivityManager logs Displayed activity XXX...).
It doesn't happen on other devices so I know it is not a code problem.
On Milestone, it doesn't happen 100% of the time and it seems random.

The effect, from a user's point of view, is that the touch doesn't
work. The activity is running by all means, and taking touch events,
it just doesn't show on the screen itself and makes the user think
that the activity behind it is running.

Has anyone experienced that?
Thanks

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Launching an activity with the task affinity of the phone application

2010-11-17 Thread Omer Gilad
Hi,
I want to launch an activity that will display on top of the native
phone application as a dialog. I suppose that the best way to do that
is to launch as a new task, with the task affinity of the phone
application.
How can I safely obtain the correct task affinity? Is that the best
solution for this case?

Thanks

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: WebView native crash when overriding WebChromeClient.onCreateWindow()

2010-10-03 Thread Omer Gilad
New issue opened:

http://code.google.com/p/android/issues/detail?id=11655

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: WebView native crash when overriding WebChromeClient.onCreateWindow()

2010-09-26 Thread Omer Gilad
I'm jumping it.
Could anyone help?

On Sep 21, 10:32 am, Omer Gilad omer.gi...@gmail.com wrote:
 Hello,
 I'm using a webview inside my application in order to display a web
 interface. One part of the web interface is a javascript that opens a
 popup.
 I'm currently attempting to use onCreateWindow exactly as documented,
 and after the call finishes (And a new window is supposed to be
 created), there's a native crash in libwebcore.so:

 09-20 19:36:53.953: INFO/DEBUG(1523): *** *** *** *** *** *** *** ***
 *** *** *** *** *** *** *** ***
 09-20 19:36:53.953: INFO/DEBUG(1523): Build fingerprint: 'google/
 passion/passion/mahimahi:2.2/FRF91/43546:user/release-keys'
 09-20 19:36:53.953: INFO/DEBUG(1523): pid: 5185, tid: 5215  
 com.fring 
 09-20 19:36:53.964: INFO/DEBUG(1523): signal 11 (SIGSEGV), fault addr
 0064
 09-20 19:36:53.973: INFO/DEBUG(1523):  r0   r1 0035b8b4  r2
   r3 419df178
 09-20 19:36:53.973: INFO/DEBUG(1523):  r4   r5 00408f20  r6
   r7 0001
 09-20 19:36:53.983: INFO/DEBUG(1523):  r8 47788101  r9 4988  10
 a87dcb20  fp 4879e2b8
 09-20 19:36:53.983: INFO/DEBUG(1523):  ip afc010c4  sp 4879de00  lr
 a8490047  pc a83dac90  cpsr 0030
 09-20 19:36:53.993: INFO/DEBUG(1523):  d0  643a64696f72646e  d1
 6472656767756265
 09-20 19:36:53.993: INFO/DEBUG(1523):  d2  002e0034002f0064  d3
 006f004d0020
 09-20 19:36:53.993: INFO/DEBUG(1523):  d4  0065006c00690062  d5
 0066006100530020
 09-20 19:36:54.003: INFO/DEBUG(1523):  d6  002f006900720061  d7
 002e003300330035
 09-20 19:36:54.003: INFO/DEBUG(1523):  d8  40004354  d9
 006a
 09-20 19:36:54.013: INFO/DEBUG(1523):  d10   d11
 
 09-20 19:36:54.013: INFO/DEBUG(1523):  d12   d13
 
 09-20 19:36:54.013: INFO/DEBUG(1523):  d14   d15
 
 09-20 19:36:54.013: INFO/DEBUG(1523):  d16 145f44a048b8  d17
 
 09-20 19:36:54.023: INFO/DEBUG(1523):  d18 4129d132  d19
 4020
 09-20 19:36:54.023: INFO/DEBUG(1523):  d20 3ff0  d21
 
 09-20 19:36:54.023: INFO/DEBUG(1523):  d22   d23
 
 09-20 19:36:54.023: INFO/DEBUG(1523):  d24   d25
 3fd56000
 09-20 19:36:54.023: INFO/DEBUG(1523):  d26   d27
 3fd56000
 09-20 19:36:54.023: INFO/DEBUG(1523):  d28 002000200020001b  d29
 3ff0
 09-20 19:36:54.023: INFO/DEBUG(1523):  d30   d31
 3ff0
 09-20 19:36:54.033: INFO/DEBUG(1523):  scr 6013
 09-20 19:36:54.053: INFO/DEBUG(1523):          #00  pc 000dac90  /
 system/lib/libwebcore.so
 09-20 19:36:54.053: INFO/DEBUG(1523):          #01  pc 00190042  /
 system/lib/libwebcore.so
 09-20 19:36:54.063: INFO/DEBUG(1523): code around pc:
 09-20 19:36:54.063: INFO/DEBUG(1523): a83dac70 ef98f790 b1086e78
 e0023004 18e44b02
 09-20 19:36:54.063: INFO/DEBUG(1523): a83dac80 bdfe68a0 003f8778
 6080 4604b570
 09-20 19:36:54.063: INFO/DEBUG(1523): a83dac90 460d6e40 3004b138
 fd98f030 6e60b918
 09-20 19:36:54.073: INFO/DEBUG(1523): a83daca0 f0014621 4628fed3
 fd90f030 b1104606
 09-20 19:36:54.073: INFO/DEBUG(1523): a83dacb0 66636e23 6e20e00a
 ffa8f7ff 46286626
 09-20 19:36:54.073: INFO/DEBUG(1523): code around lr:
 09-20 19:36:54.073: INFO/DEBUG(1523): a8490024 f0084630 4606fb2f
 f741b158 4606f98b
 09-20 19:36:54.073: INFO/DEBUG(1523): a8490034 f7414620 f74af987
 4601fe01 f74a4630
 09-20 19:36:54.073: INFO/DEBUG(1523): a8490044 b145fe23 2b01682b
 3b01d002 e002602b
 09-20 19:36:54.083: INFO/DEBUG(1523): a8490054 f6dc4628 4630feff
 ecbdb003 bdf08b02
 09-20 19:36:54.083: INFO/DEBUG(1523): a8490064 f6dc2008 4621ff11
 f74e4605 f896f81f
 09-20 19:36:54.083: INFO/DEBUG(1523): stack:
 09-20 19:36:54.083: INFO/DEBUG(1523):     4879ddc0  419df178  /dev/
 ashmem/dalvik-LinearAlloc (deleted)
 09-20 19:36:54.083: INFO/DEBUG(1523):     4879ddc4  80844e51  /system/
 lib/libdvm.so
 09-20 19:36:54.083: INFO/DEBUG(1523):     4879ddc8  a87d9df4  /system/
 lib/libwebcore.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879ddcc  a87d33c0  /system/
 lib/libwebcore.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879ddd0  a87d9440  /system/
 lib/libwebcore.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879ddd4  a87d9444  /system/
 lib/libwebcore.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879ddd8  00259bd8  [heap]
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879dddc  afd0cd31  /system/
 lib/libc.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879dde0  a87d9444  /system/
 lib/libwebcore.so
 09-20 19:36:54.094: INFO/DEBUG(1523):     4879dde4  afc00877  /system/
 lib/libstdc++.so
 09-20 19:36:54.104: INFO/DEBUG(1523):     4879dde8  a87d33c0  /system/
 lib/libwebcore.so
 09-20 19:36:54.104: INFO/DEBUG(1523):     4879ddec  a83dac75  /system/
 lib/libwebcore.so
 09-20 19:36:54.104: INFO/DEBUG(1523):     4879ddf0  00259bd8  [heap]
 09-20 19:36:54.104: INFO/DEBUG(1523):     4879ddf4

[android-developers] Re: Problem with AudioRecord on Samsung Moment

2010-09-26 Thread Omer Gilad
Samsung devices (all of them) have many bugs related to audio API.
In our application we've handled this by applying specific solutions
to known device models - you will have to investigate and find
workarounds for that.

On Sep 26, 4:05 am, Steve Hugg hun...@fasterlight.com wrote:
 We have been getting reports of audio recording not working on Samsung
 Moment phones on 2.1-update1.

  int bufferSize = AudioRecord.getMinBufferSize(sampleRate,
 AudioFormat.CHANNEL_IN_MONO,
                                 AudioFormat.ENCODING_PCM_16BIT);
  this.audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
 sampleRate,
                                 AudioFormat.CHANNEL_IN_MONO,
 AudioFormat.ENCODING_PCM_16BIT, bufferSize);

 generates these logs:

 I/AudioPolicyManager( 1889): getInput() inputSource 1, samplingRate
 16000, format 1, channels 10, acoustics 0
 W/AudioHardwareALSA( 1889): openInputStream : mInput already exists!!
 E/AudioRecord( 2618): Could not get audio input for record source 1
 E/AudioRecord-JNI( 2618): Error creating AudioRecord instance:
 initialization check failed.
 E/AudioRecord-Java( 2618): [ android.media.AudioRecord ] Error code
 -20 when initializing native AudioRecord object.

 I can't find the mInput already exists anywhere in the source base,
 could this perhaps be an error message included by the OEM?

 Thanks!

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] WebView native crash when overriding WebChromeClient.onCreateWindow()

2010-09-21 Thread Omer Gilad
Hello,
I'm using a webview inside my application in order to display a web
interface. One part of the web interface is a javascript that opens a
popup.
I'm currently attempting to use onCreateWindow exactly as documented,
and after the call finishes (And a new window is supposed to be
created), there's a native crash in libwebcore.so:


09-20 19:36:53.953: INFO/DEBUG(1523): *** *** *** *** *** *** *** ***
*** *** *** *** *** *** *** ***
09-20 19:36:53.953: INFO/DEBUG(1523): Build fingerprint: 'google/
passion/passion/mahimahi:2.2/FRF91/43546:user/release-keys'
09-20 19:36:53.953: INFO/DEBUG(1523): pid: 5185, tid: 5215  
com.fring 
09-20 19:36:53.964: INFO/DEBUG(1523): signal 11 (SIGSEGV), fault addr
0064
09-20 19:36:53.973: INFO/DEBUG(1523):  r0   r1 0035b8b4  r2
  r3 419df178
09-20 19:36:53.973: INFO/DEBUG(1523):  r4   r5 00408f20  r6
  r7 0001
09-20 19:36:53.983: INFO/DEBUG(1523):  r8 47788101  r9 4988  10
a87dcb20  fp 4879e2b8
09-20 19:36:53.983: INFO/DEBUG(1523):  ip afc010c4  sp 4879de00  lr
a8490047  pc a83dac90  cpsr 0030
09-20 19:36:53.993: INFO/DEBUG(1523):  d0  643a64696f72646e  d1
6472656767756265
09-20 19:36:53.993: INFO/DEBUG(1523):  d2  002e0034002f0064  d3
006f004d0020
09-20 19:36:53.993: INFO/DEBUG(1523):  d4  0065006c00690062  d5
0066006100530020
09-20 19:36:54.003: INFO/DEBUG(1523):  d6  002f006900720061  d7
002e003300330035
09-20 19:36:54.003: INFO/DEBUG(1523):  d8  40004354  d9
006a
09-20 19:36:54.013: INFO/DEBUG(1523):  d10   d11

09-20 19:36:54.013: INFO/DEBUG(1523):  d12   d13

09-20 19:36:54.013: INFO/DEBUG(1523):  d14   d15

09-20 19:36:54.013: INFO/DEBUG(1523):  d16 145f44a048b8  d17

09-20 19:36:54.023: INFO/DEBUG(1523):  d18 4129d132  d19
4020
09-20 19:36:54.023: INFO/DEBUG(1523):  d20 3ff0  d21

09-20 19:36:54.023: INFO/DEBUG(1523):  d22   d23

09-20 19:36:54.023: INFO/DEBUG(1523):  d24   d25
3fd56000
09-20 19:36:54.023: INFO/DEBUG(1523):  d26   d27
3fd56000
09-20 19:36:54.023: INFO/DEBUG(1523):  d28 002000200020001b  d29
3ff0
09-20 19:36:54.023: INFO/DEBUG(1523):  d30   d31
3ff0
09-20 19:36:54.033: INFO/DEBUG(1523):  scr 6013
09-20 19:36:54.053: INFO/DEBUG(1523):  #00  pc 000dac90  /
system/lib/libwebcore.so
09-20 19:36:54.053: INFO/DEBUG(1523):  #01  pc 00190042  /
system/lib/libwebcore.so
09-20 19:36:54.063: INFO/DEBUG(1523): code around pc:
09-20 19:36:54.063: INFO/DEBUG(1523): a83dac70 ef98f790 b1086e78
e0023004 18e44b02
09-20 19:36:54.063: INFO/DEBUG(1523): a83dac80 bdfe68a0 003f8778
6080 4604b570
09-20 19:36:54.063: INFO/DEBUG(1523): a83dac90 460d6e40 3004b138
fd98f030 6e60b918
09-20 19:36:54.073: INFO/DEBUG(1523): a83daca0 f0014621 4628fed3
fd90f030 b1104606
09-20 19:36:54.073: INFO/DEBUG(1523): a83dacb0 66636e23 6e20e00a
ffa8f7ff 46286626
09-20 19:36:54.073: INFO/DEBUG(1523): code around lr:
09-20 19:36:54.073: INFO/DEBUG(1523): a8490024 f0084630 4606fb2f
f741b158 4606f98b
09-20 19:36:54.073: INFO/DEBUG(1523): a8490034 f7414620 f74af987
4601fe01 f74a4630
09-20 19:36:54.073: INFO/DEBUG(1523): a8490044 b145fe23 2b01682b
3b01d002 e002602b
09-20 19:36:54.083: INFO/DEBUG(1523): a8490054 f6dc4628 4630feff
ecbdb003 bdf08b02
09-20 19:36:54.083: INFO/DEBUG(1523): a8490064 f6dc2008 4621ff11
f74e4605 f896f81f
09-20 19:36:54.083: INFO/DEBUG(1523): stack:
09-20 19:36:54.083: INFO/DEBUG(1523): 4879ddc0  419df178  /dev/
ashmem/dalvik-LinearAlloc (deleted)
09-20 19:36:54.083: INFO/DEBUG(1523): 4879ddc4  80844e51  /system/
lib/libdvm.so
09-20 19:36:54.083: INFO/DEBUG(1523): 4879ddc8  a87d9df4  /system/
lib/libwebcore.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879ddcc  a87d33c0  /system/
lib/libwebcore.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879ddd0  a87d9440  /system/
lib/libwebcore.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879ddd4  a87d9444  /system/
lib/libwebcore.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879ddd8  00259bd8  [heap]
09-20 19:36:54.094: INFO/DEBUG(1523): 4879dddc  afd0cd31  /system/
lib/libc.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879dde0  a87d9444  /system/
lib/libwebcore.so
09-20 19:36:54.094: INFO/DEBUG(1523): 4879dde4  afc00877  /system/
lib/libstdc++.so
09-20 19:36:54.104: INFO/DEBUG(1523): 4879dde8  a87d33c0  /system/
lib/libwebcore.so
09-20 19:36:54.104: INFO/DEBUG(1523): 4879ddec  a83dac75  /system/
lib/libwebcore.so
09-20 19:36:54.104: INFO/DEBUG(1523): 4879ddf0  00259bd8  [heap]
09-20 19:36:54.104: INFO/DEBUG(1523): 4879ddf4  
09-20 19:36:54.104: INFO/DEBUG(1523): 4879ddf8  df002777
09-20 19:36:54.113: INFO/DEBUG(1523): 4879ddfc  e3a070ad
09-20 19:36:54.113: INFO/DEBUG(1523): #00 4879de00  00357608  [heap]
09-20 

[android-developers] Installing new root CA certificate from application

2010-09-14 Thread Omer Gilad
Hello,
My application redirects its users to a known domain
(secure.gate2shop.com) that its root certificate doesn't exist on
Android devices.
Normal PC browsers have no problem accessing the site, but Android
browser displays to the user that the certificate is untrusted. I
don't want that behavior, not even once, so I'm looking for a way to
install this certificate on the device from my app.

Does anyone know about a way to do that?

Thanks

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Accurate sleep()\timer in Android

2010-07-07 Thread Omer Gilad


On Jul 6, 10:38 pm, Dianne Hackborn hack...@android.com wrote:
  2. The operation I'm doing involves network activity - UDP\TCP packet
  sending. Is there good native support for networking that is device
  independent (like the normal libc, libz)? Or maybe I should ask this
  in the NDK group?

 You have extremely strict jitter requirements for something involving
 NETWORKING?  That is...  strange.

 I suspect the jitter happening on the network end is going to way outweigh
 what is happening on the device.


That is true, but I need this kind of optimization. The network path
will be very clear in some cases, and there's no reason to introduce
extra jitter because of garbage collection.

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Accurate sleep()\timer in Android

2010-07-06 Thread Omer Gilad
Thanks!

Doing it in native might be a good idea.
1. Will increasing the thread priority improve accuracy (starving
other threads in the meanwhile of course)?
2. The operation I'm doing involves network activity - UDP\TCP packet
sending. Is there good native support for networking that is device
independent (like the normal libc, libz)? Or maybe I should ask this
in the NDK group?

On Jul 5, 10:08 pm, Dianne Hackborn hack...@android.com wrote:
 You are doomed if you just want to be able to schedule exactly 80ms every
 time so that you add it all up after 1000 times and you get 80 seconds.

 At the very least, you should schedule your events so that even if there is
 some jitter in individual timings they add up correctly -- that is start at
 the current time, then schedule each next event for a successive 80ms from
 that base time, regardless of when the previous event actually fired.

 At this point, then, the only question is how much jitter between events you
 will find acceptable.  As Richard said, some big events can cause a fair
 amount of jitter, in particular GCs.  The platform is designed to avoid
 thrashing through objects and thus not cause GCs, so if you are likewise
 careful you may be able to do things so that GCs don't happen enough to be
 an issue.  For perspective: on low-end hardware, a GC can take on the order
 of 100ms; on higher-end devices like the Droid it is more like 30ms.

 If that is still not sufficient, you may want to consider dropping down to
 native code and doing the timing in a separate native thread (which thus
 won't be paused by GCs).  Of course you still won't have 100% accurate 80ms
 every time because there will still be other processes wanting to run at
 times, though the jitter will be significantly smaller (as long as your
 process is not in the background scheduling group).





 On Mon, Jul 5, 2010 at 7:30 AM, Omer Gilad omer.gi...@gmail.com wrote:
  Hello,
  Does anyone know of a precise way of measuring 80 milliseconds for
  scheduling purposes?
  Thread.sleep() and SystemClock.sleep() don't seem accurate enough.

  Purpose - I want to schedule a certain event to happen in an exact
  interval of 80 milliseconds and I don't want the time to skew
  (scheduling 1000 such events must take 80 seconds in total).

  Thanks

  --
  You received this message because you are subscribed to the Google
  Groups Android Developers group.
  To post to this group, send email to android-developers@googlegroups.com
  To unsubscribe from this group, send email to
  android-developers+unsubscr...@googlegroups.comandroid-developers%2Bunsubs 
  cr...@googlegroups.com
  For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en

 --
 Dianne Hackborn
 Android framework engineer
 hack...@android.com

 Note: please don't send private questions to me, as I don't have time to
 provide private support, and so won't reply to such e-mails.  All such
 questions should be posted on public forums, where I and others can see and
 answer them.

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Accurate sleep()\timer in Android

2010-07-05 Thread Omer Gilad
Hello,
Does anyone know of a precise way of measuring 80 milliseconds for
scheduling purposes?
Thread.sleep() and SystemClock.sleep() don't seem accurate enough.

Purpose - I want to schedule a certain event to happen in an exact
interval of 80 milliseconds and I don't want the time to skew
(scheduling 1000 such events must take 80 seconds in total).

Thanks

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Unexplained error from MediaPlayer

2010-02-21 Thread Omer Gilad
My code tries to play an MP3 file from res/raw.

FileDescriptor fd =
appContext.getResources().openRawResourceFd(R.raw.ringtone)
.getFileDescriptor();
player = new MediaPlayer();
try
{

player.setAudioStreamType(AudioManager.STREAM_RING);
player.setDataSource(fd);
player.prepare();
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
player = null;
return;
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
player = null;
return;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
player = null;
return;
}

player.setLooping(true);
player.start();

The log shows:

02-21 15:18:18.360: ERROR/PlayerDriver(51): Command
PLAYER_SET_DATA_SOURCE completed with an error or info
PVMFErrNotSupported
02-21 15:18:18.380: ERROR/MediaPlayer(693): error (1, -4)
02-21 15:18:18.390: WARN/PlayerDriver(51):
PVMFInfoErrorHandlingComplete

After player.prepare() is called.

I really don't have a hint.
I won't use MediaPlayer.create() because I need
player.setAudioStreamType(AudioManager.STREAM_RING);

Would appreciate any help on this...

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Synchronizing AudioTrack and AudioRecord

2010-01-21 Thread Omer Gilad
Hello,
My application uses AudioTrack in streaming mode and AudioRecord
simultaneously.
My problem is that I start them at the same time, but I have no
guarantee that they will actually start playback\recording in the same
timestamp.
The reason I need this kind of accuracy is because I use echo
cancellation (subtracting audio played to speaker from the recording).
My echo canceller doesn't require an exact delay, but the delay
introduced between AudioTrack and AudioRecord moves in the range of
250ms (between different runs), and that's too much - each run is
different because they start themselves asynchronously. The API
doesn't provide me a way to make sure they start in the same time, so
I thought about measuring this starting delay somehow and then using
it in my calculation.
Does anyone have an idea how to do that, utilizing their API or in any
other way?

Thanks for any help!
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Problem using AudioRecord in Motorola Milestone

2010-01-17 Thread Omer Gilad
My application uses AudioRecord to record streaming voice. On ANY
OTHER Android device it initializes properly and works great,
excluding Motorola Milestone, which force closes and the log shows:

01-17 14:08:41.124: DEBUG/AudioHardwareMot(1059):
AudioMgr:AudioHardwareMot::openInputStream enter
01-17 14:08:41.124: DEBUG/AudioHardwareMot(1059):
AudioMgr:AudioStreamInMot::set(0xaf00, 4, 1, 10, 8000)
01-17 14:08:41.124: ERROR/AudioRecord(2190): AudioFlinger could not
create record track, status: -22
01-17 14:08:41.124: ERROR/AudioRecord-JNI(2190): Error creating
AudioRecord instance: initialization check failed.
01-17 14:08:41.124: ERROR/AudioRecord-Java(2190):
[ android.media.AudioRecord ] Error code -20 when initializing native
AudioRecord object.

Sometimes it happens, sometimes it doesn't, and looking into the
platform source code doesn't clarify it. It returns with BAD_VALUE
error code. The code in AudioFlinger.cpp that does that:

[CODE]spIAudioRecord AudioFlinger::openRecord(
2890 pid_t pid,
2891 int input,
2892 uint32_t sampleRate,
2893 int format,
2894 int channelCount,
2895 int frameCount,
2896 uint32_t flags,
2897 status_t *status)
2898 {
2899 spRecordThread::RecordTrack recordTrack;
2900 spRecordHandle recordHandle;
2901 spClient client;
2902 wpClient wclient;
2903 status_t lStatus;
2904 RecordThread *thread;
2905 size_t inFrameCount;
2906
2907 // check calling permissions
2908 if (!recordingAllowed()) {
2909 lStatus = PERMISSION_DENIED;
2910 goto Exit;
2911 }
2912
2913 // add client to list
2914 { // scope for mLock
2915 Mutex::Autolock _l(mLock);
2916 thread = checkRecordThread_l(input);
2917 if (thread == NULL) {
2918 lStatus = BAD_VALUE;
2919 goto Exit;
2920 }
2921
2922 wclient = mClients.valueFor(pid);
2923 if (wclient != NULL) {
2924 client = wclient.promote();
2925 } else {
2926 client = new Client(this, pid);
2927 mClients.add(pid, client);
2928 }
2929
2930 // create new record track. The record track uses one
track in mHardwareMixerThread by convention.
2931 recordTrack = new RecordThread::RecordTrack(thread,
client, sampleRate,
2932format,
channelCount, frameCount, flags);
2933 }
2934 if (recordTrack-getCblk() == NULL) {
2935 // remove local strong reference to Client before
deleting the RecordTrack so that the Client
2936 // destructor is called by the TrackBase destructor with
mLock held
2937 client.clear();
2938 recordTrack.clear();
2939 lStatus = NO_MEMORY;
2940 goto Exit;
2941 }
2942
2943 // return to handle to client
2944 recordHandle = new RecordHandle(recordTrack);
2945 lStatus = NO_ERROR;
2946
2947 Exit:
2948 if (status) {
2949 *status = lStatus;
2950 }
2951 return recordHandle;
2952 }[/CODE]

The code that initializes AudioRecord:

[CODE]record = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, 
AudioRecord.getMinBufferSize
(8000,

AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT) * 4);[/CODE]

Again, it works fine on any other device, including Droid.

Thanks for any help!
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Echo Cancellation

2010-01-10 Thread Omer Gilad
Does anyone know how to use the device's echo cancellation
functionality? I'm implementing my custom VoIP and it would save me a
lot of work and CPU usage if the device did that for me, like in a GSM
\CDMA call.
-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] DatagramSocket.receive() sometimes blocks for too long

2009-12-28 Thread Omer Gilad
Hello,
I have a thread that constantly polls a UDP connection and posts the
received data to another thread. It uses a connected DatagramSocket,
reads a packet (which is always the same side), gets the data and
posts it to a message queue (not the android one, my implementation).
The problem happens mainly over 3G connection, not wifi.

Code looks like:

protected void work() {
   byte[] buffer = new byte[SOME_BUFFER_SIZE];

   // Read UDP packet
   DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
   long startTime = System.currentTimeMillis();
   socket.receive(packet);
   long elapsed = System.currentTimeMillis() - startTime;
   Log.out.d(UDPReader: time for socket read:  + elapsed);

   // Post the data
   messageQueue.post(packet.getData());
}

My server side sends the UDP packets at a constant rate (About 80
millis) and I expect that rate more or less for streaming purposes.
Problem is: in the beginning all is fine (log print shows a good
interval - around 80ms), then there a huge gap (about half a second),
then some packets arrive with no interval at all (like they were
buffered somewhere), then everything gets normal for the rest of the
operation.
So the effect for me is having a glitch in the beginning of the
stream, and the everything is back to normal infinitely.

I verified that my reader thread isn't blocking anywhere else, and
that the socket read elapsed time really covers just the read itself,
so I get reliable log prints (as seen in the code). I also used
wireshark in the server side to verify constant packet rate.
So the 2 left options are:
1. Network issue - but that would happen for the whole duration, not
just in the beginning, right? It always glitches like mad in the
start, then everything is normal.
2. Platform issue - is there anything about DatagramSocket
implementation on Android that might cause this? It seems like there's
an initial capacity for buffering and then it's increased after that
first glitch and it doesn't happen anymore...

I also checked: 1. CPU usage during the glitch and after (using
traceview), nothing unusual. 2. DatagramSocket receive buffer size -
it seems to default to 10+ bytes which is far more than my packet
size.

I would appreciate any help =)

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Blocking on a Socket read operation while in sleep mode

2009-12-28 Thread Omer Gilad
I have code that runs in the background and holds a connected Socket
and it's InputStream.
It calls read() infinitely until something is received, then continues
to parse. Socket timeout is 0 of course.

I am interested in what would happen when the device goes to sleep? Is
the CPU off? Will this socket be responsive in this case (Say, my
server sends some notification)?

Thanks

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] DatagramSocket.receive() sometimes blocks for too long

2009-12-28 Thread Omer Gilad
Hello,
I have a thread that constantly polls a UDP connection and posts the
received data to another thread. It uses a connected DatagramSocket,
reads a packet (which is always the same side), gets the data and
posts it.

Code looks like:

protected void work() {
   byte[] buffer = new byte[SOME_BUFFER_SIZE];

   // Read UDP packet
   DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
   long startTime = System.currentTimeMillis();
   socket.receive(packet);
   long elapsed = System.currentTimeMillis() - startTime;
   Log.out.d(UDPReader: time for socket read:  + elapsed);

   // Post the data

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en