Android Developer Office Hours - EMEA Edition

Uploaded by androiddevelopers on 03.10.2012

>> RHODE: Android Developer Relations Office Hours. I'm Sparky from Munich, Germany and
I'm joined by my colleagues, Matt and Nick and Rich in London, UK, Matt with Google TV.
>> BUTCHER: In [INDISTINCT] Burrito Mike's this week. So, we have...
>> HYNDMAN: Burrito [INDISTINCT] he's okay. >> BUTCHER: We have Richard, the editor of >> HYNDMAN: Yup. My account is for...
>> BUTCHER: And the android account is Matt. >> GAUNT: Hi.
>> HYNDMAN: My clothes today are brought to you by The Dutch Android User Group. We always
do someone [INDISTINCT] and the [INDISTINCT] GTALK [INDISTINCT] on the back. Nick brought
to us by Christmas I think. >> BUTCHER: Yes, it's my Christmas jumper.
>> HYNDMAN: Christmas jumper. And Matt by… >> GAUNT: Nothing goes wrong with a man's
style with Google S [INDISTINCT] >> RHODE: I was going to say Matt--Matt and
I are in--are in uniform today, so. >> GAUNT: That's very good.
>> RHODE: All right. >> BUTCHER: Someone had to be, Matthew. Sorry
Sparky we high jacked your beautiful intro. Carry on.
>> RHODE: No, no, no. That was--that was far more interesting than just having me say the
usual thing. But anyway, welcome everybody. This is Android Developer Relations Office
Hours. We're here to talk to you about anything related to android application development.
Usual disclaimers apply which Rich will be happy to deliver. Basically, we generally
restrict ourselves to SDK related issues. We don't talk about deep internals. We don't
talk about unreleased products or our future plans. But apart from that, we're happy to--we're
happy to basically, you know, see what you're interested in, talk about what you're interested
in. I see we're already joined in the Hangout by several people. We got some folks who have
contributed questions in the Moderator. Hi, Andrew.
>> KELLY: Hey. >> BUTCHER: And Andrew has a camera because
his girlfriend or wife isn't watching X-Factor today.
>> KELLY: I can't see myself though. >> BUTCHER: Oh.
>> HYNDMAN: Interesting. >> KELLY: All right. Yeah.
>> HYNDMAN: I've always hope they put it in Youtube live stream at the same time works
quite well, if you want to be 10 seconds behind the rest of us. Who's joined us on the far
end side. >> BUTCHER: It's Yossi.
>> HYNDMAN: Oh, Yossi. There we go. Hi. >> RHODE: Yossi? We have Yossi here.
>> HYNDMAN: Yossi. >> RHODE: And so he got the memo about the
facial hair. >> ELKRIEF: Yup, excellent. I'm about to start
a team. >> BUTCHER: Join the club.
>> HYNDMAN: So we have Allan, Andy or Andrew and Yossi all with us in the Hangout today.
>> RHODE: Okay. >> HYNDMAN: Maybe [INDISTINCT] Good quality
camera for Elkrief. >> RHODE: Yeah. So, what's on your mind everybody?
Who has something that you'd like to share with us or want to--have a question you want
to ask? >> HYNDMAN: Well, I've got something I'd like
to share. >> GAUNT: Go Rich, go.
>> HYNDMAN: It's just that we did for the UK, specifically may have launched the 2,
3, and 1s that went passed recently. But the Nexus 7, tablet of the year. In fact--was
it gadget of the year? >> GAUNT: Gadget.
>> BUTCHER: Only one vote cast because it beat out the Ipad 3 for tablet of year and
it won the overall, the big cache grade, the gadget of the year.
>> HYNDMAN: Gadget of the year is The Nexus 7. So we've been having a few little parties
around with Google Office here to celebrate that. Thank you very much to T3.
>> BUTCHER: Doesn't an old tablet look good? >> GAUNT: Good indeed.
>> RHODE: I have to say, I mean it is a marvelous device. The Nexus 7 is my--basically my go
to android device. I mean I'll use my phone if I'm out and about because I don't generally
bring the tablet, you know. I mean I'll even bring my Nexus 7 with me but it's in my bag,
the phone is in my pocket. But, you know, anywhere that I'm within range of Wifi, the
Nexus 7 is the device I want to use. >> GAUNT: Uh-hmm.
>> HYNDMAN: Okay. >> BUTCHERS: Agreed. So to developers out
there, if you haven't started looking at your apps and, you know, if it's running well,
if it's optimized for the screen size and so on then, now is a good time.
>> Rhode: Yeah. Actually that reminds--that reminds me. Isn't this week Tablet Week? Shouldn't
we be talking a whole lot about tablets today? >> BUTCHER: Yeah, we got a bit early last
week? >> HYNDMAN: Yeah, we probably recorded online.
>> GAUNT: Oh, yeah. >> RHODE: I missed it. I was...
>> ELKRIEF: I didn't call for a week and then realized that it was Tablet Week.
>> HYNDMAN: Is that Leslie? Is that you? >> DREWERY: Hey, how are you doing?
>> HYNDMAN: He's muting. And we'll say hello through sign language.
>> RHODE: Now, last week while you guys were talking tablets, I was out there--I was out
there celebrating Deutschen Einheit. It's a national holiday here in Germany last week.
>> HYNDMAN: Yeah. We're jumping again on tablets. Have you joined us today because you’ve
got some questions, Leslie, or you just come along to hangout?
>> DREWERY: Just to hangout and see what's happening.
>> HYNDMAN: All right, I see. >> RHODE: Welcome to the Hangout. I see that
also Richard Thompson has just jumped on. Hello, Richard. Do you have anything you want
to talk about? Maybe we'll give you a moment to get yourself establish.
>> BUTCHER: Yeah, man. Give him a chance. >> HYNDMAN: Okay. So, yeah. This is a point
that anyone in the Hangout can jump in and ask a question before we hit the Moderator.
If anyone has anything they'd like to discuss. >> GAUNT: Yossi is showing off some rather
a fancy [INDISTINCT] >> RHODE: Oh, is that a serious tree?
>> ELKRIEF: I wouldn't like not to interrupt you but I just wanted to show you our office
and also these. >> HYNDMAN: Nice. You've redecorated your
entire office to be android. >> GAUNT: Excellent, you know.
>> BUTCHER: Hey, cool. Nice sticks. >> HYNDMAN: Good work, Yossi.
>> BUTCHER: Explicit. I like it. I like it a lot.
>> GAUNT: Interesting. >> HYNDMAN: I'm sure that it enhances your
ability to do android development. Nice talking. >> BUTCHER: And just to catch up when we were
talking about tablets as well, I think the reason we declared this Tablet Week is arbitrary
but it's also mostly to celebrate the new quality guidelines we just released. So it's
a series of kind of checks you can do to make sure your application is going to look stellar
on a--on larger devices. So, hopefully you guys have all seen the blog release on
and seen the checklist and gone through that and have a look at your apps and kind of seen
do they make use of white space, are they going to scale, are they going to be available
on all devices which might have different hardware configurations. So it's kind of what
catalyze this week's kind of theme. And Richard in the sidebar asks, "Will there be Google
TV quality guidelines?" >> GAUNT: I mean that’s--so we've got a
lot of… >> BUTCHER: I'm going to pass to Matt.
>> GAUNT: …documentation on Google TV design guidelines over at
So, yeah, we've got a whole load of stuff there about making it very cinematic and accounting
for [INDISTINCT] You're not--you're not really going sort of--the interaction is more safer.
It's less of a one to one kind of thing where people are usually using a personal device.
So, yeah, go check that out. Lots of info there.
>> BUTCHER: So that's the checklist more of kind of document or so?
>> GAUNT: Yeah. It's much more kind of along the lines of like the new design stuff that
android went through whereas it's more of--yeah, going through the different sort of design
patterns you could follow and other aspects, so.
>> BUTCHER: Has anyone on the--in the hangout had a chance to have a look at the Tablet
Quality Guidelines yet? Any one? >> ELKRIEF: Not yet.
>> SUTTON: Yeah, I've had a quick look through them. It looks cool. It's…
>> BUTCHER: Do you suppose it's the kind of thing you can--you can see yourself running
through? >> SUTTON: Yeah, definitely. The checklist
is definitely something I'm going to run through in every app because it's one of those things,
you make assumptions about stuff. You get caught up in the design and then you sit there
and I think, "Oh, I've forgotten something fundamental." So it's really useful to--so
I see that checklist is really useful to have. >> BUTCHER: Yeah. Especially when you're developing
like you are into like develop on device perhaps. You might get into a single device mindset
where you, you know, going through debug cycles trying to like get this piece of functionality
working and shift it. And you sometimes don't think about the brackets or stuff out there.
So I think having this simple checklist is really helpful. So have you guys seen it too?
And if you have any feedbacks or suggestions then--to any android developers or one of
us and we can--we can suggest it. Everyone is getting their [INDISTINCT] heads on. Look
at this. >> RHODE: Yeah. That’s just the whole thing.
>> [INDISTINCT] >> BUTCHER: Cool. So, are there any live questions
in the Hangout or any other news that people want to share before we kind of jump into
the Moderator? >> GAUNT: Google TV is getting play. It's
getting native play. >> BUTCHER: Yes. Welcome to the club.
>> GAUNT: Which--yeah, I know. It's been a long--long awaiting. So, yeah, Google TV is
finally getting native play. So you can finally rent and buy movies and play it straight to
Google TV which is fantastic. We might grab on that.
>> BUTCHER: So, any changes for developers? Anything, like any different internal docs
or whatever they can use now that they couldn't before or anything like that?
>> GAUNT: No, I'm unaware. We get subscription billing with the native play. So when that’s
come in, that’s one which I think a lot of people been wanting for a little while.
>> BUTCHER: Cool. >> GAUNT: So, yeah. That's basically what's
going on. >> HYNDMAN: So you have it up and running
right now and that’s going to take… >> GAUNT: Yeah. For the moment we just got
enough billing, no subscriptions. So that’s going to come out.
>> BUTCHER: That's inevitable. Quite like last night, in fact. Free trials, no subscription.
>> HYNDMAN: Uh-hmm. >> BUTCHER: Everyone caught that? If you have
a subscription-based product with the [INDISTINCT] without the free period it's kind of getting
used as hooks. Oh, that seems--check down the sidebar.
>> RHODE: Yeah. So Leslie asked a question in the sidebar. He says, "How many companies
are using the accessibility framework and how does it sort of stiffly refute all the
good ones?" >> HYNDMAN: Well, you know, we certainly have
recommended many times in the past that people should at least put the content description
on all of their HTML text. So it's just going to basically work but in terms of using the
entire accessibility framework, I don't have a metric on that.
>> BUTCHER: No. I have no stats. I do know that Wolfram basically post a good article
on this lately. So if anyone reads Grokking android block--blog, it's great, a typical
blog. He recently did a very good post determining how you would add accessibility towards your
apps, so. Yeah. [INDISTINCT] >> DREWERY: Well, the actual question is who
uses it for anything other than the simple content description? I mean we use it quite
extensively but the solution to how powerful it really is to why people are using it? I
think Richard here is in Joint Club this month. >> HYNDMAN: Excuse me. I've got a bit of a
cough going on. >> BUTCHER: Which one, Joint Club UK?
>> HYNDMAN: Joint Club UK? >> DREWERY: UK, yeah. Yeah, let me get there.
I'll give you an insight to what we use in the framework form, then you'll understand
the question in context to that. >> HYNDMAN: It's a question of which context
will come three weeks later? >> DREWERY: Yeah. Well, remind me when you're
there. >> BUTCHER: And I'll see if I can dig out
anything relevant for you of that quite as well, then I'll see you at Joint Club.
>> HYNDMAN: Joint Club UK? I guess I will be there as well.
>> DREWERY: Yup. >> HYNDMAN: Anyone else?
>> BANES: Hello. I'm going to be there. >> HYNDMAN: Hi Chris. I see you pop in there
and Matt as well. >> GAUNT: Yup.
>> HYNDMAN: They'll be quite a few of us who'll train from UK. Okay. So we jump into the Moderator
then. Well, Sparky, people hangout for the next question.
>> RHODE: Yeah. >> BUTCHER: He's going to do it.
>> RHODE: First question is from Chris in London. Is there a reason why Google does
not release updates to new android versions for all interested developers of Nexus 7 and
Galaxy Nexus devices right away outside along the [INDISTINCT] cycle without having to route
to the device, etcetera. Well, of course, there's a reason. Oh, he says, "It would be--"
He goes on to say, "It would be convenient to have an option of developer options where
you app in to the latest releases immediately rather than waiting for your turn on the OTA,"
you know, sort of phase rule out. And he says, "Yes, it's only basically a developer thing.
Not a lot of people would necessarily be using it." I actually think that's a great idea
and I like it so much that I opened the ticket in our issue tracking systems saying we should
do this. So, I don't know that you would save a lot of time because we don't really waste
a lot of time between, you know. And then, you've code freeze an OTA or perhaps maybe
the other way to turn around or just say sometimes we have a scheduled [INDISTINCT] deployment
and we code right up into the last possible minute. But...
>> BUTCHER: Plus it seems to me we do a release and we normally release the recovery images,
right? The--so you can grab one of those and flash yourself.
>> HYNDMAN: Yup. >> BUTCHER: Or as soon as it hits OTA, I'm
pretty sure you can find the link to download it.
>> HYNDMAN: People get the links and you don't three devices to apply the official signs,
patches anyway. >> RHODE: Yeah.
>> HYNDMAN: That's how we choose it. Is Chris, was this you Chris Banes or is there a different
Chris in London? >> BANES: Well, it was me.
>> HYNDMAN: Fair enough. >> BUTCHER: What was the one Chris?
>> HYNDMAN: I said Chris in London. There happens to be a Chris in here. Couldn't be
in the same room? >> BANES: Right.
>> HYNDMAN: Actually, I'm not--and of course, there's something like sometimes in the OTAs
if certain carriers require approval before we apply patches to devices on the network.
>> BUTCHER: Yup, so a device that's developed via straight from PLATO and you
don't have a de--a carrier in between the OTA service and to your device device.
>> HYNDMAN: This reference code is there for EMEA.
>> RHODE: Right. But it's--so, the gist of my--the ticket that I opened was I suggested
that basically people who app in to this should be able to jump to the head of the cue in
the phase roll out rather than, you know, waiting a few days. That way if you have an
app that, you know, maybe breaks on the near release you can fix it asap rather than having
to wait a couple of days free of term to get something wrong.
>> BANES: The trick of that is wouldn't everyone just go, "Yeah, I'm a developer."
>> GAUNT: Yeah. >> BUTCHER: I'm just thinking that maybe it
has to be like in the pub site or some... >> GAUNT: Yeah.
>> BUTCHER: ...of that actually. You have to be...
>> HYNDMAN: Right. >> RHODE: Yeah, yeah, maybe enroll a device
through the developer console or something like that.
>> BANES: Uh-huh. Yeah, that's probably... >> HYNDMAN: [INDISTINCT] through the play
console and you just grab the [INDISTINCT] >> GAUNT: Yeah.
>> HYNDMAN: If you're a developer, you're going to be happy enough with that I'm sure.
Yeah. So, all good ideas. >> SUTTON: One of the--one of the ways I read
that is aren't they looking for a version between releases?
>> HYNDMAN: Uh-hmm. >> SUTTON: So, instead of waiting for a 4.10
to 4.11 or 4.1--4.0 to 4.1 without looking for something between those two.
>> BUTCHER: Uh-hmm. So that's what we did for the first time we had Jelly bean, right?
We kind of had the developer preview. It was out there for awhile so you could run it in
the emulator and you could get to know the new API's before we went to shifting runs
and with the shifting devices and the final full image, right? So I think that seems to
be the direction we're going. But I'd like to see us do it earlier if we can but, you
know, I don't make these decisions. >> HYNDMAN: Excellent. Okay. Well, seeing
as no one is shouting, let's switch on to the next question in the Moderator. We've
got quite a few to get through today. >> RHODE: Let's jump to the next question.
Mardon in Brayton, UK says, "I know it's still a fair few amounts away but JAVA 8 is on the
horizon." Okay. Al gave a very good answer to that. Al, do you want to--you want to reprise
for us want you said? >> SUTTON: Sure. Basically and Google is,
you guys can't answer forward looking statements about product development. But one of the
things with lambda expressions is they need a change in the virtual machine which came
in in JAVA 7 and the Dalvik virtual machine which android uses isn't equivalent to a JAVA
virtual machine. So, you can't exactly say that version of JAVA would be the same as
the bytecode available in the version of the Dalvik virtual machine. So, there would probably
be some work to implement the functionality needed in the Dalvik virtual machine and I
see that that doesn't seem to have started to being happened. So, it might happen but
its not going to be for awhile yet would be pretty much is the gist of the answer.
>> BUTCHER: Uh-hmm, interesting. >> RHODE: Right. And so the short version
of Al's answer is we're still in--we're still using JAVA 1.6 as our target environment and
targeted API level. >> SUTTON: Yeah, pretty much.
>> BUTCHER: What else is in JAVA 8? I mean, I miss my lambda so much. I used to use lambdas
a lot. What else is in 8? There's not a lot in 7, right? There's the diamond operator
and that's about it. >> SUTTON: There's a lot of stuff underneath
the hood in 7. There's--one of the--its Dynamicinvoke I think is the bi-code that got introduced
in JAVA 7 which allows support for none JAVA languages to be compiled. That's...
>> BUTCHER: Yeah, like GVV and so on. >> SUTTON: Exactly. And it's that which is
needed to get lambda expressions sorted as well. So I think a lot of the 7 was underneath
the hoods but... >> BANES: It's also a--Its Project Coin so
that was the whole rebound that fits in the language. Just the thought you can use switch,
a lot of strings in switch statements and stuff like that. I think that was pushed back
from 7 to 8. >> BUTCHER: That's right.
>> BANES: But I can't remember the 8. So, yeah.
>> BUTCHER: I was running that because a lot of this stuff at lambda can--is often like
syntatical sugars. It's often stuff that might not have low down changes but you might...
>> HYNDMAN: Uh-hmm. >> BUTCHER: ...give a go over [INDISTINCT]
or something. But I know nothing about that stuff.
>> SUTTON: Yeah. I mean, you can achieve pretty much the same stuff with using a list of classes
and interphases. And that's the whole thing that lambda expressions are being sort of
touted as replacing. >> BUTCHER: Yeah.
>> SUTTON: So there's no absolute need for them but it's one of those things. The less
case you type, the happy your developers are. >> BUTCHER: Yeah. Let's close maintain, let's
boil the plate. It's easier to read samples. I think--I think lambda is a great [INDISTINCT]
mark but yeah, I'd like to see them. >> HYNDMAN: Oh, no comment. Okay.
>> BUTCHER: Well, I didn't know if it wasn't--if and when they're coming but...
>> HYNDMAN: By December. Anymore for anymore? Anything in the chat? Anything in the Google+
thread? Is anyone through in that? >> GAUNT: No. I know we had it and now, I've
lost--oh, got it. >> HYNDMAN: Okay. Who's going to get that
first? >> GAUNT: Okay.
>> BUTCHER: You haven't joined like... >> RHODE: While you're checking Google+, I'll
read the next--the next Moderator question. Igo in Lviv, a great city where my previous
employer before at Google had an engineering team, says, "Have you heard of android annotations
transfuse squares dagger links included? These are annotation based compile-time code generation
controls. What do we think of these?" I mentioned a few more, RoboGuice, GreenDroid, ORMLite.
I think they're all perfectly fine. The problem basically is that every time you introduce
any kind of an obstruction layer on top of an API, it has the potential to simplify matters
as long as you stay within it but when you--when you start integrating with the native other
features of the system sometimes it may not integrate quite so smoothly. So, I think they're
all good ideas and I think it's worth, maybe worth a little bit of time investigating and
see if it works for your used case. I, you know, nothing against them. It's just a matter
of is the, you know, is the benefit that you gain from it worth the potential inconvenience
of fitting it in together with the rest of the system.
>> BUTCHER: Understood. In agreement to Sparky, one of the thing I'll add to that is the reason
I quite like the annotation based one is that there tend to be a compile-time kind of stuff
rather than looking at runtime things. Like looking at some of that RoboGuice for example
which offers great functionality but you're going to take a hit at runtime using the reflection
and so on. So, I think that's one of the advances why I'd probably look into something like
dagger or, you know, android annotations. >> HYNDMAN: Uh-hmm.
>> BUTCHER: Instead of the runtime ones just because performance is such a consideration
on my book. [INDISTINCT] >> HYNDMAN: So...
>> BUTCHER: Any other comments? >> BANES: What you said--Sparky mentioned
the ORMLite and I mean that's a runtime one so that's runtime annotations as [INDISTINCT]
GreenDroid whereas that's compile-time but it has more work in it. So, I'm just--I'm
not agreeing. >> BUTCHER: Yeah. My call on these things
is they tend to be awesome when you know how to use them. Like once you--if you're the
developer of the project or something. >> BANES: Yeah.
>> BUTCHER: And you know it inside out, it's like, "Look, how easy it is. I could just
like annotate this one annotation and just a billion things." Well, I find them quite
like quite hard to learn, quite hard to pick up unless you have that whole surface area
of knowledge about the--of what it is. And I find it can actually be hard to debug sometimes
if you don't know when stuff--especially where there are tons of junctions. If you don't
know when stuff is getting crazy and substantiating where it's coming from, you know, if you have
this great team and someone is trying to come and debug an issue then it can make it more
complicated. So, those are my only concerns about--around these frameworks. Like if you
have just some, you know, not standard but, you know, an android developer who is coming
in and want to have experience and it could put him off but otherwise I think that you
have tons of benefits. >> HYNDMAN: Yeah.
>> RHODE: I'll also add just for the point, just for the sake of adding it that GreenDroid
comes from Munich, Germany so go Munich. >> HYNDMAN: Go Munich. We've got another question
at Google+ and another question in the chat. So, Leslie asked in the chat. When will be
able to add our own channels? Maybe referring to--where's Leslie? Are you referring to Google
Play Store? Yes, you can nod this way. >> DREWERY: Well, the problem with Google
TV is that I very would like it to be able to control my V+ box and stuff like that.
And I know the frequencies so I just want to add them but without routing the device
that complicates the channel list. >> GAUNT: Okay. So...
>> BUTCHER: Over to Matt. >> GAUNT: So at the moment you can't access
the channel list in Europe. We're working to bring that over here because over in the
US it's a lot easier to get that data for the channels that you have access to. When
you start going internationally it depends on which country you're in. There's a couple
weird little quirks. Like people in Germany they can change the order of the channels
which they're not set out to update here, et cetera. So basically we're trying to find
a nice reliable way to actually give you access to that information. But some of the stuff
of you're talking about just then, it remind of an API that we announced at Google I/O
called the immediate devices API where you can then essentially pretend it to be a set
of top box or sort of create a driver for an actual set of top box and then you can
start communicating between the two. So that's going to come with a later version of Google
TV which we don't have a date for yet. But hopefully it won't be too long. So, yeah.
So, I've answered your question I hope. >> DREWERY: Yeah, sort of. What [INDISTINCT]
take to get that upgrade though? >> GAUNT: I believe not much will take if
you will, I believe. >> DREWERY: Okay.
>> HYNDMAN: Fingers crossed. >> GAUNT: Yes.
>> HYNDMAN: [INDISTINCT] >> BUTCHER: So in the--in the corner feed,
Yan is asking about a layout guide for NEXUS 7 in landscape and template one tablets in
landscape. Well, like what would you want to know?
>> HYNDMAN: I was thinking use the same layout. You can use the same for tablet [INDISTINCT]
and the Nexus 7. >> BUTCHER: The answer is it depends. It depends
what you're trying to layout. Like this is why we always say work through your design
because you kind of--there is no magic law that says, this is the layout that works on
the phone that will work in a 7 or work out on 7. What works on 7 will work on 10. There's
nothing like that. It really depends on your content. So, what I always end up doing when
I'm trying to like say mock up screens for Android Design in Action, you might start
with the phone layout and then like see what it looks like on 10 and it might be too empty,
it might be too dense. It really is like a kind of a gut feeling thing. You end up kind
of trying on different size layouts until you get the right amount and the spacing,
the right kind of density of information. So there's no magic law. You kind of have
to look at it and decide. And in fact, if you look at the Nexus 7 at the system master
sheet where some of them use the UI which switch shift on the phone and some of them
use the tablet UI. So, people application for example uses a tablet based on UI and
it, you know, use this basically nicely without too confusing and so on. But some of the applications
like Google Play Music for example who uses the frame UI. It's a decision made by each
kind of an application depending on the information they're trying to show and just how well it
works in that given amount of space. So there is no answer to this. It's try and have a
look to see if it works. If not, you might need to hint things, you might need to change
something, you might need to add more space, bigger text sizes and like that. So there's
no hard and fast rule. >> HYNDMAN: And the Nexus 7 falls into the
SW600dp bucket in the layouts as well. So you're going to have your--in a 10-inch tablet
you can put in the SW720s, your Nexus 7 and SW600s. And if you want the same layouts you
can just get rid of the shortest width 720 folder and you just pick up size that says
the 7-inch. But you can very easily distinguish between a seven-inch and ten-inch tablets
and decide what goes in each one just by testing it and what's best.
>> SUTTON: I find it quite interesting as well that the Nexus 7 originally the launcher
was locked in portrait mode. And the latest release of Jelly Bean which is out and about
now allows you to do the wonderful thing of having the launcher in landscape as well.
So, I guess it's--it really is just... >> BUTCHER: [MAKES NOISE]
>> SUTTON: Yup, that's it. >> HYNDMAN: [INDISTINCT]
>> SUTTON: I can do it on mine too. >> HYNDMAN: ...just a matter of...
>> RHODE: It's just wanting to get it right. >> SUTTON: Yeah. So, it's just goes to show
that there's a lot of experimentation that you need to do before you get things that
you enjoy. >> GAUNT: Yes.
>> RHODE: One thing that I've noticed recently is I've been a little bit surprise that even
now, like we we're what, a year and a half after Honeycomb? There's a lot of apps especially
games adjust. Like even on a 10-inch tablet they just scale up the phone UI and I think
it's--in particular for games it's more of a problem even than some of the others. I
mean yes, they don't have a problem with, you know, huge amounts of white space because
they're using OpenGL and scaling everything proportionally. But some of these games used
gestures where the amount that you travel on screen matters and it can actually be significantly
harder to play the same game on a tablet because you have to move your finger that much faster
in the same amount or that much further in the same amount of time. I’m thinking of
games like Flight Control or Flick Golf or something like that where you train your,
you know, you train your muscles to work faster on a certain screen size and then, you switch
to a tablet and all of a sudden everything is different. And, you know, there's a real
fatigue factor that comes in to dragging those airplanes all the way across in your screen.
>> SUTTON: It's interesting… >> RHODE: So…
>> SUTTON: …that in the Tablet App Quality Checklist sort of three or four the points
all go across the same thing you're just saying--been saying, Sparky. By using fonts and touch targets
and assets designed for that kind of size of screen so hopefully it's something that
the checklist will hope reinforce with people. >> BUTCHER: Yeah. The good news is it can
be a bit scary because you think about this continuous sort of like range of device sizes
out there. So, if you think about, "Oh, do I have to allocate my layouts and make a layout
that works great on a, you know, a 4-inch phone, a 5-inch phone, a 7-inch tablet and
8.9-inch tablet. The good thing about this is like there's actually kind of a discrete
number of switching points at the moment. We kind of see a lot of the stuff kind of
setting around four, seven, and ten. It's kind of like come in places and the variations
around that are not so huge that you can use a layout that works on like a seven-inch tablet
will probably work on someone's--on an eight-inch tablet. And so the way system works, if you
use these SW qualifiers for your layouts then it will get pick up by the kind of the one
slightly larger as well. So, it's not actually tons and tons of stuff you do but just by
providing slightly say--like you said, bigger touch targets or slightly bigger font sizes
for example in like a seven-inch tablet can make all the difference.
>> RHODE: Right. And then another bit of tablet wisdom is that, you know, so you're going
back to the game model, you don't have to necessarily scale up your game to fill the
whole screen. You can have a fragment that varies it size only a certain amount and then
on the larger screens just put more or less ancillary information around--on the sides
of it. >> HYNDMAN: Yeah.
>> BUTCHER: Indeed. We asked that one. >> HYNDMAN: Who watched last night's Android
Live in Action which covers runtime. >> BUTCHER: Yeah. This is--this is the topic
we covered yesterday on that. >> HYNDMAN: It's a whole half hour of that.
>> BUTCHER: Yeah, yeah. Giving a few techniques you can use to design around this issue.
>> SUTTON: And it's--it was great that you guys were looking at the I/O app which is
completely open source. So you can just go in and grab the source and copy whatever it's
been done in that wonderful software. >> HYNDMAN: Yes, the new templates in the--the
android templates and that we use. We create new project and clips rather than getting
into that. >> BUTCHER: And Jan has joined us. Hello.
Did that answer your question? You're muted. >> HYNDMAN: Is John talking or not?
>> BUTCHER: You're not talking. >> HYNDMAN: Yeah.
>> SOUZA: Yes, thank you. >> HYNDMAN: Excellent. You got into Hangout.
>> BUTCHER: Oh, well, thanks for joining us. >> HYNDMAN: Okay. Let's jump to the next one
in the Moderator. >> RHODE: All right then. Yeah, there's--this
is Yan's question in the Moderator. Yan, do you want me to ask your question? I don't
>> RHODE: Okay. >> HYNDMAN: [INDISTINCT] lip sync.
>> RHODE: Right. Okay. So, right--Yan in the Hangout is asking, is it a good approach to
in-app purchasing to remove ads versus, you know, within 1ABK versus maintaining two applications,
one with and one without? And I said it's a great idea to use an application purchasing
to remove ads. >> BUTCHER: Uh-hmm.
>> RHODE: Then--and provided this developer that android link for a little more information.
You know, since you can make it a managed purchase, you can query the server anytime
and find out whether to--whether that user has purchased the right to have the whatever
unlocked ad free premium pro-version of the app. There's--I think there's significant
benefit in not maintaining two different APKs. You--to a certain extent, you're exposing
your app potentially to a little more risk in that, you know, the code that queries the
license server or the, in-app purchasing server is another attached surface, but I don't really
don't think it opens you up anymore than just having a separate pro-version of the APK where
somebody can just, you know, redistribute that. So, I think that the--without a lot
of extra headaches involved, you can really save yourself some trouble just by not maintaining
two different APKs for the same application. >> Yeah.
>> BUTCHER: And two other points to add to that. Is a--sorry Chris, is suppose to [INDISTINCT]
so it goes out their jumping out to, you know hit, I want to get [INDISTINCT] and you have
to then install a new app. I was like "Wait, what? Now I have two apps installed, so I
have to uninstall an app and also any settings or configurations I may have done it gets
carried over, since it's the same application. I don't have to configure anything again.
So, that's a lot smoother and secondly, I'd say you that all your reviews and comments
will be centralized in one place. And somewhat a good or bad thing, you can go find that
people who [INDISTINCT] for [INDISTINCT] on your rating, because they paid money for it.
They tend to like, justify that sales I think. Maybe that's just my idea. And but--yeah,
I think having them all in one place is probably a better thing.
>> SUTTON: That's all so quite interesting. >> KELLY: Yeah, yeah, the...
>> SUTTON: I'm sorry, Chris, good for me. >> BANES: No, I'm just saying, you know, I
did this for FriendCaster. I had made this before in-app purchasing was invaluable so
two separate ones the free and the pro. And I use to spend a good 10 to 15% of my time
merging code across because you'd have to--you'd have to do it in one code device then copy
it across. And what you find is you're trying--you wouldn't copy it across, correct? So, you
have to spend time fixing lamps and stuff. So, in the end [INDISTINCT]
>> BUTCHER: More library projects. >> BANES: Pardon?
>> BUTCHER: Was that before library projects or...
>> BANES: Yeah. So, once library projects come out which then I can stop moving color
code into that and then sharing it. It just--it still took time and so, yeah, and I've always
go now with one APK. And other thing is also is that--because it will look--because you
have the free versions in your listening, people will be more inclined to download it
because it's not paid app. >> HYNDMAN: Uh-hmm.
>> BANES: So, and then they can then do the in-app purchase where if they want to so in
other words they're not minor. >> SUTTON: Yeah, that was one of the interesting
things from IO is that there was some discussion around monetizing app and all of the data
seem to point to having an in-app purchase as being a better way and a more consistent
way of getting users to buy your app and it tends to result in more purchases than trying
to get them to download a separate APK and pay for that separately.
>> BUTCHER: Just Devil's Advocate as a slight [INDISTINCT]. I'd say some people just hate
in-app purchases. You'll see comments in the market saying "They're trying to nickel and
dime for everything, blah, blah, blah," and some people are just much happier paying one
app price up front. I'm not not saying this is many users or most users, so some people
just don't like that and the second point is having a paid out, let's you put this way
in some kind of like sales and promotions, so for example...
>> HYNDMAN: Uh-hmm. >> BUTCHER: ...our recent 25 billion promotion
was--where were put a bunch of applications on sale like if you only had a free application
then, that would have been available to use. So, I'm not saying these great reasons and
perhaps you might have both available. So, you know, a free version with in-app to attach
[INDISTINCT] first or like a premium version or whatever that is just like all in-app purchases
already included in the different costs for example for those people who just really hate
it. It's up you, you know, it depends on who you're going for and what the market is and
so, but. >> SUTTON: Yeah, I think there's a lot of
work that needs to be done in terms of user experience on the developer side because I
think it was Yahani point--pointed out an application that basically was a free application
but the moment you run it, it said buy coins and you couldn't do anything without making
an in-app purchase and that's a straight turn off for users, it's going to be a bit more
subtle. >> RHODE: Oh, I hate those.
>> SUTTON: It's the easiest. One wasn't the only that you found was there? I guess there
are few out there, but it has to sparky response and people just turn off straight away, say
trying to force people down in an in-app purchase is a way around paid app. It's seems to be--yeah,
more of a quick way to annoy the user than to get sales.
>> BUTCHER: Crappy thing to do. >> GAUNT: Yeah.
>> RHODE: So, the applications, let's say, you get ten moves and if you send us a couple
of bucks, we'll give you another hundred. I hate those, I hate those. But the apps that
say, you know, you can--you can unlock the first 10 levels of this puzzle game for free
and then, you know, pay us a couple of bucks and we'll give you the next hundred levels
and you can, you know, you can play as much as little as you like. We're not metering
your play, we're just giving you access to the whole thing, those I love.
>> BUTCHER: Yeah, I think the mail, are one of the coolest ones I've seen is the timed
office. It's like a wind up night which gives you--lets you play for your first 10 levels
or something like that and then it says, "Hey, one time early offer, unlock the rest of this
game for this one price won't be offering again kind of thing." I mean that kind of
taps into the human psyche wanting a bargain right like you can get, okay? You're just
one chance to play. I thought that was pretty clever and I think [INDISTINCT] just came
on to the show on US and said that one item was the bulk of their revenue, I think.
>> HYNDMAN: Uh-hmm. >> GAUNT: Uh-hmm.
>> BANES: Just the app, App Store as well? >> KELLY: The other good thing...
>> BANES: Sorry, mate. >> KELLY: Sorry. I was just going to say quickly,
the other good thing about the in-app billing stuff is that you make a purchase on one device
that alone market for all your other devices as well.
>> BUTCHER: Oh, yeah. >> RHODE: Right. Well, I hadn't even thought
of that. I mean, talking about saving your download trouble.
>> GAUNT: Yeah, you can have it everywhere and you're going to have the free install
everywhere and then. >> BUTCHER: Free install, yeah, times end.
>> And then you have to go back and reinstall the new one, yeah.
>> BUTCHER: The clip. Chris, so you're saying as well?
>> BANES: I'm saying as with the App Store--I mean, I can't even say it. But the App Store
on iOS you can't actually see what the in-app purchase are. When you download something
was our comment on Google Play. I could be wrong, but none.
>> GAUNT: Interesting. >> HYNDMAN: You can see it is needs the in-app
billing permission, so you can go with out the in-app payments in there somewhere.
>> BANES: Right, but if you download and see there's an in-app purchase for playing rest
of game or something then you know it's going to be dodging.
>> HYNDMAN: Play whole of game. >> BANES: Yeah.
>> SUTTON: But there's a lot--there's a lot of things around that because one other things
I've seen done in the iOS Store is some of the in-app purchases makes no sense until
you start using the application itself, like I think there's an application that converts
photos into cartoons and everything is like the splat in-app purchase and the glam in-app
purchase which it--you kind to sit there and I'm thinking, do I really need to buy this
to put the word glam on screen and it's--it--it's kind of a double edge sword.
>> BUTCHER: Yeah, I'm not sure if I see the value on that.
>> RHODE: I think it's the value in it if you make it cheap enough. I mean...
>> BUTCHER: I know, and [INDISTINCT] >> RHODE:'s below the threshold where
I'll just say, oh, what the heck, from one photo, I am willing to spend ten cents, click.
>> BUTCHER: No, no, I can see the value. I don't see the value in listing them up front
when it's completely out of context. >. RHODE: Okay, sorry.
>> BUTCHER: Well one of the ones that I quite like is a German game [INDISTINCT] which we
know who has the ads and this little X next to it to dismiss them and that launches the
in-app purchase switches an interesting location. I think we've done that one to [INDISTINCT].
>> BANES: Lots of [INDISTINCT] in-app purchase. >> RHODE: Does anyone here live in the Hangout
want to bring up something of interest to them before we go back to the Moderator or
were there questions in the Google+ stream that we haven't gotten to yet?
>> HYNDMAN: There's one [INDISTINCT] today. >> SOUZA: Right, excuse me?
>> SUTTON: There's one for Matt in the comments of the Google+ page.
>. HYNDMAN: We again got another question here.
>> BUTCHER: Let's take a live question. >> SOUZA: Yes. It's not a question but feature
request. I like you to include the feature graphic on my [INDISTINCT].
>> BUTCHER: Sorry, say that again, I missed that.
>> SOUZA: Feature graphic. >> BUTCHER: Uh-huh.
>> SOUZA: On my application, my [INDISTINCT] because...
>> BUTCHER: You would like to localize the feature behind, correct?
>> SOUZA: Yes. This one... >> BUTCHER: Just the same or one of this [INDISTINCT]
is on the--it's on the team's list of stuff to do.
>> HYNDMAN: It is crazy right now, right? You can localize all the descriptions but
if you want to localize the great big graphic that everyone sees...
>> BUTCHER: And screen shots, uh-hmm. >> HYNDMAN: ...and screen shots and all that
stuffs, yes. You must list things and target them into countries so that's...
>> BUTCHER: It's very, very much on the radar, it's just when it gets shift.
>> HYNDMAN: Should we? >> BUTCHER: We hear you, we hear you.
>> HYNDMAN: Okay. >> BUTCHER: Sorry, did you want to read the
question tonight in the comments, shall I read it?
>> GAUNT: Yeah, Go for it. >> BUTCHER: So, I was trying to get that comic
app with in-app billing working on Google TV. They have to send you box, I always get
stuck at the billing process or froze in purchase up to 30 seconds this application stops responding.
>> GAUNT: So, I've actually replied to the stock over flow question with a blunt face.
>> BUTCHER: It's not. >> GAUNT: So, essentially, there's--because
we don't support subscription billing, the dungeons and subscriptions sample doesn't
work as is. Needs a little bit of tweaking to change the trial version number as well
as some of the extra variables that you add in, so payment type, you don't do that or
otherwise API starts having some problems. So, you need to that and plus when I start
doing this, I have a couple of issues that's just the Google Play service and making it
work. So I had to leave it for a little while. Which I admit is a bit of a bore thing but
I do essentially have one bit of code left for it before they came back and then it just
started working as it should do. >> HYNDMAN: Yeah, that happens to me too.
>> GAUNT: I think it was just the propagating the items that you are adding to Google Play
and make sure that it works and authenticate et cera. So check out the blog post , go through
all of that, check that are working with your items and then hopefully you should be able
to figure out what's going wrong. >> HYNDMAN: Yup. All the standard things apply.
Don't test it with the same account you uploaded the app to Play Store you can't buy them for
yourselves. There's a list of five things you each need to check when you're testing
in acronym in the testing--acronym document. >> HYNDMAN: Yup. Documentation is ridiculously
useful. So, yeah, still do check that. It's just the sample which needs some differences
which what my blog post is focusing on. >> BUTCHER: Okay. And there's a question in
there G+ as well. Robert is asking why in the 4.12 update for seven-inch tablets, why
search bar angled on the landscape put an option on portrait? None of us here know the
answer. I'm going to speculate here that it's a UX decision. That in landscape you have
so much less vertical space that you don't really want as many angled items. I'm going
to guess that that being the reason but I don't know for sure.
>> SUTTON: I don't believe it's actually a widget in landscape mode.
>> BUTCHER: No, it's part of the home screen, right?
>> SUTTON: Yeah, where as in portrait mode it's actually a widget that seems to be used.
>> BUTCHER: Is it? I don't think it is. I think it's--you can't pick it up or anything.
>> HYNDMAN: You can't regardless... >> GAUNT: Right.
>> HYNDMAN: ...I'm slightly confused by this question.
>> [INDISTINCT] >> GAUNT: We're all just staring at the seven-inch
tablet. >> HYNDMAN: [INDISTINCT] can anyone replicate
this? >> BUTCHER: So, I think it's--I don't think
it's a widget. I think it's part of the home screen.
>> HYNDMAN: I think it's part of the launcher, yeah.
>> RHODE: Right. I think so too. I mean, I don't think it's like when you drag a new
widget onto the screen. It seems to me like that search box is out of the accessible space.
>> HYNDMAN: Can you move it right on yours? >> BUTCHER: Yeah. And when you drag an icon
around here, it disappears to make room for the app info and the delete button whatnot.
I don't actually think its part of the home screen like work spaces. Where I think it's
kind of decoration around it. >> SUTTON: Yeah, I can't actually drag mine
around. It's just a bit confusing. Instead it's anchored in landscape but optional in
portrait. >> HYNDMAN: Yeah. I have--I can replicate
that. >> BUTCHER: I read that as it's kind of always
there in portrait. But when you go to landscape you just have to Google now and the--and the
voice action, it's a voice search buttons, right?
>> SUTTON: Right. Yeah. >> HYNDMAN: It would be neat if you had a
vertical text bar. >> BUTCHER: Yeah, exactly.
>> HYNDMAN: I think that's about. Anyway. >> BUTCHER: Yeah. So, yeah. So, basically
I'm saying. >> HYNDMAN: [INDISTINCT]
>> BUTCHER: Yeah, you wouldn't ever have like a vertical search box because that would look
crazy. I probably wouldn't. And so I'll like postulate that they didn't want to have another
reserved error space in already limited amount of room when you're in landscape would be
my guess. >> HYNDMAN: Well, I concur. Excellent.
>> RHODE: I think that's a really good guess. >> BUTCHER: Why thank you.
>> RHODE: Since you mentioned Google now, this is just kind of a random, what it occurs
to me. I'm curious to know, who here brings up Google now by accident more often than
on purpose. Because I know I… >> BANES: [INDISTINCT]
>> HYNDMAN: Interesting. All right. >> RHODE: Going back to that flight control
again. >> [INDISTINCT]
>> RHODE: Making those little airplanes around the screen.
>> Yeah. >> HYNDMAN: I can suggest one solution. If
you have that problem with your Nexus 7 put it in a case because it's really hard to bring
up the tall ones to the case. >> BANES: Is that the official Google answer?
>> HYNDMAN: Of course it is, Chris. >> BUTCHER: [INDISTINCT] answer.
>> SUTTON: That's one of the downside of those cheap third party cases. You get the official
aces while then it leaves you enough screen space to get the swipe from the problem working.
>> HYNDMAN: [INDISTINCT] and that it certainly doesn't.
>> SUTTON: Yeah, this was 25 [INDISTINCT] from PC World.
>> HYNDMAN: [INDISTINCT] magnet in it though. >> SUTTION: Nope. You pay 25 [INDISTINCT]
>> SUTTON: …you don't even get the close magnet.
>> BANES: I've got a smart cover [INDISTINCT] or it's like a natural--it flaps over and
stuff. It's pretty good. It's like a ten ounce. >> GAUNT: I've got one of those as well for
my Samsung Tablet. >> BUTCHER: Well, for the--for the Nexus 7
I guess. >> BANES: Yeah.
>> SUTTON: I think my next purchase from Amazon is going to be some [INDISTINCT] tape and
a magnet. How are we getting on the Moderator questions?
>> HYNDMAN: Yeah, how are we getting on Moderator question?
>> RHODE: I'm taking a look. >> BUTCHER: We've got fifteen minutes left.
>> RHODE: Andre in Czech Republic wants to know, is there a way how to correctly detect
if a tablet has a mobile, it's like [INDISTINCT] 3G interface. I need to hide or display some
features based on that. Feature telephony and connectivity manager, get all network
info aren't reliable enough. I don't know. I think I don't--I think I don't have the
best answer to that one. >> SUTTON: It was--I was kind of confused
because he is saying feature telephony isn't reliable enough. And I was wondering whether
he is already using PackageManager.system feature to detect whether it's on the device.
>> RHODE: I'm wondering if maybe he just means it's not precise enough.
>> SUTTON: Right. Because there are some features [INDISTINCT]
>> HYNDMAN: We've got an extra comments in the bottom here. Thanks for your responses
but unfortunately there are some tablets that don't report feature telephony as one of the
system features. I imagine things like… >> SUTTON: Wifi only devices.
>> HYNDMAN: …out of the--no the Galaxy Tab 10.1 may have 3G but no telephony because
it doesn't--you can't make phone calls. >> SUTTON: Right. But the feature should be
as said that the device has a telephony radio with data communication support.
>> [INDISTINCT] >> SUTTON: Which to me would indicate it should
be present… >> ELKRIEF: [INDISTINCT]
>> SUTTON: …if just got a data modem on it. It doesn't necessarily need to have a
voice codec as well to handle calls. >> HYNDMAN: Interesting. Yeah, I can't remember.
If the input requires telephony in the manifest whether it would appear for a 3G Tab or not,
I thought it didn't. >> RHODE: There you go. I do think maybe there's
potential in this TelephonyManager get network type, which should tell you like exactly what
kind of radio you're talking to at the moment. >> BUTCHER: But that's what's on at the moment,
not what's available, right? >> GAUNT: Yeah.
>> HYNDMAN: Lastly saying, querying the SIM is a good way to go.
>> RHODE: Querying the SIM? >> HYNDMAN: Which class would you use to do
that [INDISTINCT] we'll give him--I'll read out the URL.
>> DREWERY: Yeah. You could actually use some tools libraries to do it. We had this problem
in HTC. Where if you got a SIM that supports 2G but doesn't support 3G it caused a bit
of confusion, we had to actually query directly. Our HTC now could find the--on HTC devices
the custom API that we used. >> SUTTON: Well, but there is in TelephonyManager
it gets subscriber ID which is supposed to return an IMSI number. I guess--I would guess,
if there's no 3G or no telephony component then you wouldn't get an IMSI back. I think
you get nulled back in that situation. >> ELKRIEF: It's interesting. I've seen a
custom ROMS that do return IMSI or even fake data just to pass some test on the TelephonyManager.
So I'll try to do some--try to catch over there enough on false data.
>> BUTCHER: Yeah. I think I know we've kind of had a similar question last week. It comes
down to why you're trying to do that exactly like--I guess the main thing you want to do
is like work out. Do you have a data connection, right? Which you can use to get connectivity
[INDISTINCT] but it's connected. It's pretty much on your major check.
>> HYNDMAN: I was thinking [INDISTINCT] had also a setting which said--let's say it was
ooVoo and it wanted to allow calls over 3G. You wouldn't want that setting there at all
if you have 3G device. But you do have 3G, one that particular if you have or not. It
could make sense to have a [INDISTINCT] >> BUTCHER: I know, I exceptionally use it.
>> HYNDMAN: Yeah, it's up to you because [INDISTINCT] in the 3G but [INDISTINCT] I think its 3G
and Wifi. >> GAUNT: But you only want to show the option
when you have 3G as an actual option to take away [INDISTINCT]
>> HYNDMAN: [INDISTINCT] >> BUTCHER: But you can [INDISTINCT] if you're
on cellular or you're on Wifi [INDISTINCT] >> HYNDMAN: No, no, just 3G.
>> HYNDMAN: If you're on it at the time [INDISTINCT] >> DREWERY: You forgot one thing guys.
>> HYNDMAN: Yeah. >> DREWERY: The same competence of certain
[INDISTINCT] in this country will allow you to connect to the 3G network, but not use
it. I won't mention any names as a dropping sales, so what that means is that you might
have a 3G subscription but it will allow you to connect to 3G matrix saying you got 3G
but you can't actually send any data up. >> SUTTON: That's also another issue which
makes the whole thing a bit an unreliable is the use of Mifi devices. So I've got a
Wifi tablet and I'm connecting it to my portable hot spot on the phone in my pocket. The tablet
it thinks it's got a Wifi connection but the actual end connection is a 3G cellular on
the other one. That's how I got around the [INDISTINCT] as an original restriction of
only allowing streaming on Wifi which is to use a Mifi device. Do some tethering between
the tablet and the Mifi device and then you get around any restrictions. Although it may
be possible it's not a good thing to rely on looping [INDISTINCT]
>> HYNDMAN: Yeah. I can see where [INDISTINCT] it would be nice for those [INDISTINCT] I
would still use [INDISTINCT] correctly then so be it. But you want to know whether the
[INDISTINCT] in there you want to know if the hardware supports that capability then
I would go to the feature telephony. It's got to be [INDISTINCT]
>> RHODE: As oppose to its quality of users experience issue. Say maybe you know if you
can't pull one megabit you don't want to offer video or something like that just do a little
performance test at run time. >> HYNDMAN: Yeah. You can do--when you're
connected you know what network you're connected on. It's just you just don't know which networks
are necessarily available to you. >> SUTTON: The performance test would be the
best way to go definitely because of Wifi situations like IO.
>> BUTCHER: Yeah. And definitely I think about not making a setting as well. Think about
just doing a test and you get a warning. >> HYNDMAN: Uh-hmm.
>> BUTCHER: Like saying you know signal strength looks weak. You sure you want to do a video
call or whatever it might be. >> ELKRIEF: Yeah, that's what we do.
>> BUTCHER: Just making a setting isn't always the answers.
>> HYNDMAN: Read Reto's blog post on magic boxes as well. What's the problem with network?
You probably don't get sub type. Maybe you have to be connected to that network at the
time, you know. He--what do we have here? He has said he's using network [INDISTINCT].
Have we got anymore in the Moderator? >> SPARKY: We do. And we have a couple more.
>> SUTTON: And questions from Andrew Kelly in there
>> SPARKY: Andrew Kelly, yes indeed. About ViewPager, a list of pages, Andrew do you
want to ask? >> KELLY: Yes, since we are--I've got an app
that I'm writing for a client at the moment and I got a listview that goes into a ViewPager
kind of mode when they want it drilled down into the details of the list. And so, in the
listview I want to show all the items available. >> SUTTON: Uh-hmm.
>> KELLY: But in this the detail mode running on the ViewPager, I want to skip over items
that don't have any further details. And so, I'm just trying to work out if there's a way
of skipping with the fourth element of the array without actually having to create a
new array with that fourth element missing. >> BUTCHER: Yeah, well that's in the Adapter,
right? In the get size and method. So, these... >> KELLY: Yeah, so I got my get count reduced--returns
a fewer number of--yeah, a lower value based on how many rows there are. The get item still
gets called for the place holders that I don't want to--the ones I want to skip over, so
if I want to skip over element number four. >> Uh-hmm.
>> KELLY: Element, you know, get out and still gets called for element four.
>> BUTCHER: Yeah, you know. You're always going to get passed in the time being increasing
position numbers, but I think you're going to have to maintain your own mapping from
position to the real item index in your--in your data.
>> KELLY: Yeah. >> HYNDMAN: Correct.
>> BANES: [INDISTINCT] it sound like you need to--you get them and you just need to--each
time iterate from the start and can't until you find x numbers of items which don't have
a flat board do [INDISTINCT] whatever. >> Yeah.
>> KELLY: Yeah, I 'm just trying to avoid the constant to be going looping with the
array... >> BANES: Yeah.
>> KELLY: ...again and again and again to where that [INDISTINCT] was.
>> BUTCHER: [INDISTINCT] trying to. Yeah, can you just do that once? Can you do so the
first fast item is index one, second item is index four, the third item is index five
or... >> ELKRIEF: No, maybe he has a HashMap.
>> BUTCHER: Yeah. >> ELKRIEF: Only in one second, you have all
the index's made through the items with the details. And then, when you use the get item
than you'll just need to verify that you have the index on your attachment or some sort.
>> SUTTON: Well you could even--if you put--put it into a HashMap, you could then get the
entry set back and iterate over the entry set.
>> KELLY: Yeah, some adjustments. That's a good idea.
>> HYNDMAN: Yeah, you just run through once. Are we talking about an enormous list here
though? Is this something you need to be relaxed? >> KELLY: No, at 20 at most so...
>> HYNDMAN: You know, I just run through it to be honest.
>> SUTTON: Yeah. They said the possibility for some of the items to change. So, could
item number two be populated then later down the line then item two could not be populated?
>> KELLY: Not with out going all the way back out and all the way back in through the original
on a summary list. >> BUTCHER: It's now [INDISTINCT] go take
a hit and did it once... >> HYNDMAN: Yeah.
>> BUTCHER: ...and have this simple of HashMap or something.
>> KEELY: Yeah, and that was. >> BANES: It's currently [INDISTINCT]
>> KELLY: And I thought it might be having some sort of--is enabled kind of true or false,
kind of method that I could just call for the ones that I want to skip over.
>> HYNDMAN: No. I mean, you have full control of your Adapter, it wouldn't...
>> KELLY: Yeah. >> HYNDMAN: ...pass the Adapter then ignore
it. It would--self service, sorry. >> KELLY: That's right.
>> BUTCHER: Well, you can extend ViewPager and make your own implementation in that...
>> HYNDMAN: Ignoring the item in ViewPager. >> BUTCHER: Yeah.
>> Sends the bytes and sends it. >> RHODE: Yeah. The reason that I pointed
to the Sherlock demo that's out there on is because the ViewPager implementation on
that little sample app basically it, you know although ViewPager sequential, it basically
just pokes a random access value into the tab manager. And you see--because it's mashing
up ViewPager in tabs together. And so it's kind of a way to jump from your sequential
access of the ViewPager into the random access, and all you have to do is intervene at that
point to tell it which you know, page or tab to show.
>> HYNDMAN: Yeah, you could do it so that when you go to item number four, it will also
scroll down. You'd scroll to four and then it would automatically just move onwards because
it's an empty item. Basically, would know they've gone past item four. This page is
intentionally left blank, something. No, but I think...
>> BUTCHER: No, don't do that. >> HYNDMAN: No. [INDISTINCT] I would definitely
go with what you said before. >> BUTCHER: Five minutes left.
>> HYNDMAN: We're squeezing the last--how many have we got left in the Moderator [INDISTINCT]
can get the next [INDISTINCT] >> RHODE: Four, four more.
>> HYNDMAN: Four more and four minutes, go. >> BUTCHER: Go.
>> RHODE: Where in the source code can I find the 4.1 lock screen, Google it.
>> HYNDMAN: Did you read all of it? >> RHODE: I read also that the
documentation is part of AOSP. I assume so, it's--I mean we put the AOSP copyright in
our sample code and stuff. >> SUTTON: It is. I'll put a link to the location
in the notes. >> BUTCHER: Yeah, and I think the lock screens
is called the key guard, so if you grab codes with key guard, I think it's the thing you're
looking for. >> RHODE: Sounds right to me. Plus one.
>> BUTCHER: Next question. >> RHODE: Can I retrieve data from Google
Maps APIs so I can use it for my location based service. Yes, use the Google Maps API. >> SUTTON: Next muffin.
>> RHODE: I have a device with only Ethernet connection, how can I find if device is really
connected to the network. Try to push some traffic through.
>> BUTCHER: Hit, [INDISTINCT] it will get active in a minute. Network [INDISTINCT] is
connected. Next. >> SUTTON: Try to connect to Google's webpage.
>> BUTCHER: No, if it's connected it will do that, right? It's connected; it's like
the blue, you know, how your Wifi turns blue when there's really bits flowing. I'm pretty
sure it's based on the same logic. >> RHODE: And this just--sort of code features
prominently I believe in Reto blog article about writing battery friendly apps. So, yeah.
You can search for it on We got blog articles and Google IO talks that
all touch on this. Is anybody aware on how Android handles Daylight Savings Time changes?
It does, also... >> HYNDMAN: Even if the code...
>> RHODE: Even if it, even if it didn't, I mean generally speaking you want your device
to get it's time of day from either your phone network or NTP, in with and in either of those
cases. You know, their smart to know--smart enough to know about Daylight Savings Time
and when it happens, then it--your device will notice that it's out of sync and it will
reset itself. >> HYNDMAN: But they are also asking which
part of the source code deals with this, so it looks like they want to get some, pull
something out and reuse maybe. >> SUTTON: I think that's actually kind...
>> BUTCHER: Time is hard. >> SUTTON: Yeah, I think that's actually handled
by a lot of the lower level Linux stuff that's underneath Android.
>> HYNDMAN: I wouldn't be too surprised. Java deals with a pretty...
>> BUTCHER: Yeah, maybe, no. Java does it horribly. Look at like [INDISTINCT] the time
or something like that perhaps. >> BANES: Don't you share the time, it's massive.
>> RHODE: I seem to remember, in the run off to Jelly Bean for a little while we actually
had a bug where the NTP fallback wasn't working right.
>> HYNDMAN: Uh-hmm. >> RHODE: So.
>> SUTTON: Android actually has a utility class which re-implements and the getting
the number of milliseconds from the APK. Because it's so unreliable incident past the Java,
so. >> BUTCHER: Was that in system.get current
Millis or... >> SUTTON: There's a--I can dig out the method
for this. There's actually an Android version of system.get current time in Millis which
is used for key events. >> BUTCHER: Uh-hmm.
>> SUTTON: And you can pick that out and basically it does the same thing but I'm guessing it's
there because there's some discrepancies about how it gets reported through.
>> BUTCHER: It was interesting because I read about the three or four different ways you
get the current time. I think the most accurate one was someone from the Kernel which is exposed
at for a native [INDISTINCT] think you can do. [INDISTINCT] trying to get out.
>> HYNDMAN: And with that. >> BUTCHER: Are we done?
>> HYNDMAN: I think we are done. >> RHODE: That's it from the Moderator.
>> HYNDMAN: Tablets. >> GAUNT: Tablets.
>> HYNDMAN: We were going to say tablets ten times we didn't say enough the last time.
>> BUTCHER: Not enough time. >> ELKRIEF: Even to, speaking to.
>> HYNDMAN: Damn it. >> BUTCHER: Any last minute questions from
the Hang Out? >> ELKRIEF: Yeah, just a little question about
the subscription and trial version periods. >> HYNDMAN: Yes.
>> ELKRIEF: If I want to do and app 12 for a trial period, but it's not--this is basically
a subscription app. Say you want to do like a snooze button or a silent button widget
and instead of doing it into a paid app or something like that, can I operate on a trial
version with some sort of subscription? >> HYNDMAN: Do you have anything--if you're
not using subscriptions, the only option would be to not [INDISTINCT] and then pop up a dialogue
after 30 days or however long you want to the free period to be. Subscription is the
only part of Google Play that offers a free trial period for you. And for that free trial,
you have to sign up to the subscription, you have to have the valid kind of details in
place, and at the first billing cycle is completed and starts charging you.
>> ELKRIEF: Uh-hmm. >> HYNDMAN: So, yeah...
>> BUTCHER: It's cool. All right. I think that's all we had time...
>> ELKRIEF: Do you want to see more Androids on my offices?
>> SUTTON: [INDISTINCT] after that. >> ELKRIEF: Will close up with a tour of the
Google office. >> BUTCHER: Hey, how about that?
>> ELKRIEF: Oh, and over there we have... >> HYNDMAN: Well, there's an Apple. What's
that [INDISTINCT] >> ELKRIEF: No, yeah, it's--at the bathing
room, you know, everybody is fighting so; we're doing it, so.
>> BUTCHER: Have fun. >> HYNDMAN: Cool, we just did. Thank you very
much for joining us today. We will be back again next week.
>> ELKRIEF: Will be back. >> BUTCHER: Yeah, so hopefully you'll maybe
see some people watching in Défis, Berlin this weekend. Matt you're going to be in Paris
tomorrow, you'll speaking to the wonderful [INDISTINCT].
>> GAUNT: Paris on Friday, yeah. Berlin on Saturday.
>> BUTCHER: Don't forget there are some great shows on Friday. There's the App Clinic and
the Friday Games Review and join us next Tuesday Center Line Action or see you all next week,
next Wednesday hopefully for more Office Hours. >> SUTTON: And as Ray turns one [INDISTINCT]
three and everything that's going on [INDISTINCT] in the way. I swear in last week he was offering
badges. >> BUTCHER: Bye.
>> HYNDMAN: Bye. >> Bye