**** BEGIN LOGGING AT Tue Jan 06 02:59:56 2009 Jan 06 03:07:32 thanks Jan 06 03:10:17 well, that site claims there's a "org.apache.commons.httpclient " but my eclipse doesn't know about it. Jan 06 03:10:34 Maybe I need to add something to my environment ? Jan 06 03:11:37 I need to get some sleep Jan 06 03:11:44 4 hours won't be enough. but it's better than 3 or 2 Jan 06 03:11:53 hm, i don't think we have the .commons subpackage. hrm. Jan 06 03:12:21 try org.apache.http.client.HttpClient Jan 06 03:12:37 but first go to bed :) Jan 06 03:12:47 yep, that's there Jan 06 03:12:56 what's the difference between that and DefaultHttpClient ? Jan 06 03:13:06 i am not the one to ask :) Jan 06 03:16:48 me either :-P Jan 06 03:17:29 # Chat Jan 06 03:17:53 oh I just did a whole REST thing in android Jan 06 03:17:56 You want some code? Jan 06 03:18:01 REST ? Jan 06 03:18:20 Using HTTP GET/POST/PUT/DELETE to interface with a web service Jan 06 03:18:26 ah. yes. please Jan 06 03:18:36 all I need is the HTML from a simple GET Jan 06 03:18:42 Oh that's easy Jan 06 03:18:45 h/o Jan 06 03:20:11 i figured it was easy, i just didn't know which thingy to point at cos i've not worked on the networking ends of things in Android Jan 06 03:20:11 easy ... if you know how . Jan 06 03:20:20 exactly Jan 06 03:20:36 "vi forever! (or at least until you learn :q!" Jan 06 03:20:37 http://pastebin.com/m214a6e8f Jan 06 03:20:45 s/"$/)"/ Jan 06 03:20:51 thanks Jan 06 03:21:19 ha ha ha, i had that problem with emacs the first time i ran it. "how the heck do i QUIT?!?!?!" Jan 06 03:21:26 It's not the most efficient way to handle and it ignores headers but it works for my prototype Jan 06 03:22:00 hm, what is getHttpClient() a method of? Jan 06 03:22:04 oh Jan 06 03:22:15 new DefaultHttpClient() Jan 06 03:22:29 it just returns that Jan 06 03:22:30 there you go :) Jan 06 03:22:34 eclipse doesn't know about GatewayException Jan 06 03:22:40 Oh that's my exception Jan 06 03:22:47 This class is my "OnlineGateway" Jan 06 03:23:17 ok, so I can prune that Jan 06 03:23:17 so you make an HttpUriRequest Jan 06 03:23:27 allocate or reuse a DefaultHttpClient() Jan 06 03:23:29 and off you go? Jan 06 03:23:31 nice. Jan 06 03:23:31 yes Jan 06 03:23:56 getHttpClient too ... Jan 06 03:23:59 Like I said, it leaves out many features of HttpClient but for a simple GET and all you want is the content, it gets the job done. Jan 06 03:24:16 gcinzh - just replace that with new DefaultHttpClient() Jan 06 03:24:22 ok Jan 06 03:25:15 Mine caches the http client so as not to create new instances of big things for every request Jan 06 03:25:30 yes please :) Jan 06 03:25:52 This will work and then you can optimize it based on how your app uses it. Jan 06 03:26:43 Like the way I did the buffered reader isn't the best way to read it all in Jan 06 03:26:45 it was quick and dirty. Jan 06 03:26:58 It will be very expensive if there are many lines in the html. Jan 06 03:27:08 \o/ Jan 06 03:27:09 It was fine for me because my service returns 1 line. Jan 06 03:27:16 1 line of JSON. Jan 06 03:27:23 gcinzh: hooray Jan 06 03:27:25 Which is awesome and I totally recommend using. Jan 06 03:27:29 now GO TO BED Jan 06 03:27:35 yes, now I can go to sleep. Jan 06 03:27:39 haha good Jan 06 03:27:51 Fortunately I'm not on call this week ... and I have late VCs tonight, so I may go in a bit later today Jan 06 03:27:55 Except now you have a working gateway! You can do the thing you were trying to do! Jan 06 03:27:58 Stay up, stay up!! Jan 06 03:28:29 rbgrn: 4:30am. .. I'll call it a night Jan 06 03:28:32 (or morning) Jan 06 03:28:36 =D Jan 06 03:28:43 thank you Jan 06 03:28:48 np Jan 06 03:28:50 I'll use this as a base from which to work. Jan 06 03:29:19 (I will also need to submit data, I suspect a get may work but if it's a post I may be back :-o ) Jan 06 03:29:26 oh here Jan 06 03:29:27 but that's for another few hours Jan 06 03:29:31 ah . Jan 06 03:29:34 * gcinzh waits ... Jan 06 03:29:48 HttpPost post = new HttpPost(url); Jan 06 03:29:49 post.setEntity(new StringEntity(content)); Jan 06 03:29:53 return doHttp(post); Jan 06 03:30:09 for your content, I wrote this little piece: Jan 06 03:30:16 private static String encodeParams(String... keyValuePairs) throws GatewayException { Jan 06 03:30:16 StringBuffer buf = new StringBuffer(); Jan 06 03:30:16 if (keyValuePairs.length % 2 != 0) { Jan 06 03:30:16 throw new IllegalArgumentException("keyValuePairs length must be an even number"); Jan 06 03:30:16 } Jan 06 03:30:17 for (int i = 0; i < keyValuePairs.length; i+=2) { Jan 06 03:30:19 if (i > 0) { Jan 06 03:30:21 buf.append("&"); Jan 06 03:30:23 } Jan 06 03:30:25 buf.append(keyValuePairs[i]); Jan 06 03:30:27 buf.append("="); Jan 06 03:30:29 try { Jan 06 03:30:30 rbgrn: setEntity() supplies the data body for the POST operation? Jan 06 03:30:31 buf.append(URLEncoder.encode(keyValuePairs[i + 1], "UTF-8")); Jan 06 03:30:33 } catch (UnsupportedEncodingException e) { Jan 06 03:30:35 throw new GatewayException(e.getMessage(), e); Jan 06 03:30:37 } Jan 06 03:30:39 } Jan 06 03:30:41 return buf.toString(); Jan 06 03:30:43 } Jan 06 03:30:45 That would have been better in pastebin. Jan 06 03:30:47 yes Jan 06 03:30:49 it still can be :-) Jan 06 03:30:52 * gcinzh hopes ... Jan 06 03:30:57 haha Jan 06 03:30:57 ok Jan 06 03:31:15 http://pastebin.com/d516d775e Jan 06 03:31:31 * gcinzh wonders if pastebin started at pastebin.com/0 Jan 06 03:31:41 Here's how you use it, if you want to have variables called pets and people, you'd do: Jan 06 03:32:08 ugh, % Jan 06 03:32:17 String content = encodeParams("pets", "2", "people", "5"); Jan 06 03:32:25 cool Jan 06 03:32:26 if you don't actually need to do that, don't. division is insanely expensive on ARM cpus. it's grotesque. :) Jan 06 03:32:40 in theory %2 is cheap, but i don't trust javac much... Jan 06 03:32:41 That would build to pets=2&people=5 Jan 06 03:32:48 What's not to trust? Jan 06 03:32:55 It divides by 2 and returns the remainder. Jan 06 03:32:59 that it won't actually do it a a divide Jan 06 03:33:08 when a (cheap) mask operation will do Jan 06 03:33:14 ugh whatever! Jan 06 03:33:18 Not the bottleneck there. Jan 06 03:33:21 well sure Jan 06 03:33:37 after a few years of ARM programming i twitch every time i see a divide :) Jan 06 03:33:41 haha Jan 06 03:33:46 rbgrn: I **really** appreciate your donation of bits .... Jan 06 03:33:49 Well, you have bigger problems to face on android Jan 06 03:33:57 such as the horrible overhead of object instantiation Jan 06 03:34:05 do not start with me on that Jan 06 03:34:07 so things like "" + "test" + 2 + "hello is HUGE Jan 06 03:34:09 it will end in tears Jan 06 03:34:15 mine, probably Jan 06 03:34:42 at least java *does* implicitly allocate a StringBuilder and chain them together with it Jan 06 03:34:47 yes Jan 06 03:34:52 instead of doing it the even-worse naive way Jan 06 03:34:52 right. I'm outta here. Jan 06 03:34:57 night gcinzh Jan 06 03:35:00 Have a good evening, folks Jan 06 03:35:03 mornin' ctate :-P Jan 06 03:35:10 :) Jan 06 03:35:11 Anyway, for my post example, use that encoder because you will need it if you have any characters that aren't just A-Z1-9a-z Jan 06 03:35:18 you know what I mean. Jan 06 03:35:19 *nod* thank you Jan 06 03:35:21 yep Jan 06 03:35:35 I don't even use that because I'm posting JSON Jan 06 03:35:55 Which is heavier but is fitting the bill. Jan 06 03:36:01 oh - one last Q ... Jan 06 03:36:16 yes? Jan 06 03:36:17 If one presents a splashpage and wants to leave it up for, say, 500ms. Jan 06 03:36:23 sure Jan 06 03:36:30 Should one set a timer and fire an intent for a callback ? Jan 06 03:36:45 There are a few ways to do it Jan 06 03:37:34 You could just have a view that's default invisible on your layout at the bottom of the layout and onStart set it to visible with a sleep(500) then invisible Jan 06 03:37:35 (or even just to induce a pause in a loop while waiting for something that doesn't have a registered receiver [I'm sure there's *SOME*thing) Jan 06 03:38:08 Or you could start a thread that waits 500 and then sends a message back to hide it Jan 06 03:38:24 *nod* that sounds reasonable Jan 06 03:38:27 I wouldn't do it with an activity if it's going to be really short because there is a lot of overhead in a new activity just for a splash image Jan 06 03:39:14 I'd maybe even consider doing it purely programmatically Jan 06 03:39:22 If it's just an image Jan 06 03:39:36 Stick an ID on your layout Jan 06 03:39:47 what's the difference between wait() and thread.sleep() ? Jan 06 03:39:56 in onCreate(), get the layout, create a view for the image and add it to the layout Jan 06 03:40:02 thread.Sleep I mean Jan 06 03:40:16 wait() is a synchronization method Jan 06 03:40:22 don't mess with wait() Jan 06 03:40:45 and if you think you need to use Thread.sleep() you're doing something wrong :) Jan 06 03:40:52 have onCreate() start a thread that just sleeps 500 and then removes the view Jan 06 03:41:02 " Or you could start a thread that waits 500" <-- Jan 06 03:41:05 have onResume() just remove the view (assuming you don't want to splash again then) Jan 06 03:41:15 yeah yeah but it makes my teeth hurt Jan 06 03:41:25 and yes i know setting one shot alarms is heavier, sigh Jan 06 03:42:01 so - ctate: wait, or separate class that sleeps and returns ? Jan 06 03:42:21 new Thread(new Runnable() { public void run() { sleep(500); runOnUiThread(new Runnable() { public void run() { remove_From_view; }); }}); Jan 06 03:42:21 do not use wait() Jan 06 03:42:26 that's for synchronization and not what you want Jan 06 03:42:36 Don't mess with wait() Jan 06 03:42:36 what rbgrn says will work Jan 06 03:42:40 * gcinzh will have to go read what "Runnable()" is Jan 06 03:42:55 Runnable is the generic interface for things that can run in their own threads Jan 06 03:42:56 Runnables are bits of code that can execute autonomously Jan 06 03:43:04 ah ok. Jan 06 03:43:20 So if you have a thread and you want to mess with the display, you have to do that in a Runnable because all display code must run on the ui thread Jan 06 03:43:22 but yes you should read the docs on this Jan 06 03:43:39 for one thing you should probably have at least a passing idea of why it's using runOnUiThread() in there :) Jan 06 03:43:39 I should.... Jan 06 03:43:41 My little half-ass example up there shows that Jan 06 03:44:25 ok. enough learning for one morning Jan 06 03:44:34 I need to get horizontal for a few hours Jan 06 03:44:42 thank you. Jan 06 03:44:44 That's what she said... OH SNAP Jan 06 03:44:49 ;-) Jan 06 03:45:08 =D Jan 06 03:45:09 ttyl Jan 06 03:45:14 yep Jan 06 04:27:40 hmm Jan 06 04:28:54 * jasta confirms that restarting a crashed or nuked service is not intended to send onStart. Jan 06 04:29:23 so you must be expected to handle this in onCreate. Jan 06 04:40:14 the work-around i recommended earlier does seem like the best approach. Jan 06 04:41:50 on the handset - is there a way to quit an app that wont go away? (in this case my own) Jan 06 04:45:07 kill -9 isnt doing it ...lol Jan 06 04:49:03 every time i try to kill -9 an app using ps it forks off a new version. Jan 06 04:49:23 I wonder if thats because im using JesusFrekes hacked rc30 image Jan 06 04:50:17 hehe, t-mobile has a strangely optomistic connection strategy. connections succeed like always, then get reset after connect() returns Jan 06 04:50:52 gambler_: thats what its supposed to do. to force it stopped, you'd need to use intents to stop all of its services and unregister any providers or anything Jan 06 04:53:26 ah ok. ill upload a new version then Jan 06 09:38:16 is there any information on how to get telephony working for modem connected to ttyS0 in Android? Jan 06 09:39:33 i am having 3530 OMAP board and GSM modem connected through ttyS0 Jan 06 09:40:12 any pointer will be very helpful Jan 06 15:12:03 Does the G1 support MTP? Not hearing much about this. Jan 06 15:13:50 is parts of the Windows Media Framework so probably not Jan 06 15:13:56 since G1 doesn't support wmv Jan 06 15:14:54 which is awesome Jan 06 15:14:56 ok then this brings up the question: How is Windows Media Player 11 recognizing my device Jan 06 15:14:58 *runs* Jan 06 15:15:29 would that not be at the driver level on the PC? Jan 06 15:15:31 sdcard mounted? :\ Jan 06 15:15:43 if so, windows thinks it's a mass storage device Jan 06 15:15:46 ah but Jan 06 15:15:50 if I insert my USB flash drive Jan 06 15:15:58 Windows Media Player does not seem to care about it Jan 06 15:16:11 did you possibly hit "take no action" and then "remember this option" in the past? Jan 06 15:16:12 so I'm not sure UMS is the answer Jan 06 15:16:24 nope, I just installed WM11 Jan 06 15:16:36 I meant on the windows level Jan 06 15:16:42 since it normally gets very excited about new devices Jan 06 15:16:45 lol Jan 06 15:16:48 indeed it does Jan 06 15:16:49 and it is infinitely curious about what to do with them Jan 06 15:16:53 let me try inserting it again and see what happens Jan 06 15:16:54 The G1 does support wmv Jan 06 15:16:58 It supports: AAC, AAC+, AMR-NB, MIDI, MP3, WMA, WMV Jan 06 15:17:08 WMV? when did this happen Jan 06 15:17:14 From day 1 Jan 06 15:17:23 is this specific to G1 or android in general Jan 06 15:17:30 because i didn't think packetvideo had anything for WMV Jan 06 15:17:37 check the htc specs for it Jan 06 15:17:42 k Jan 06 15:17:45 http://www.htc.com/www/product/g1/specification.html Jan 06 15:18:12 So right now, the only issue is the software Jan 06 15:18:32 the ultime goal is to get this thing to work with Songbird. I'm just not sure why songbird doesn't identify the device and Windows Media Player 11 does Jan 06 15:18:52 I don't know if the limitation is the Android branch on the G1 or just no software app for it yet. Jan 06 15:18:55 yea, songbird won't pick it up for me either Jan 06 15:21:09 languish: My guess iis HTC did something special. If I recall correctly there was talk in the framework forum about the lack of support for WMV in packetvideo. Either that or their marketing team lies! Jan 06 15:21:59 or maybe they just support WMV audio Jan 06 15:22:03 since thats what the thing says Jan 06 15:22:16 in any case, does anyone know for sure if this thing supports MTP Jan 06 15:27:32 there are a few posts here and there claiming wmv works if you keep the bitrate below 300kbps Jan 06 15:27:44 think I'll test it out tonight Jan 06 15:33:06 was that audio or audio/video Jan 06 15:42:32 famast, I'm guessing A/V combined Jan 06 15:42:44 not the best quality perhaps. I'll find out later Jan 06 15:49:45 is the connection dropped while switching from 3G to G? Jan 06 15:51:52 what is the "G" connection? I've been wondering... Jan 06 15:52:19 eldenz, yes, as far as I know Jan 06 15:52:30 GPRS.. so then i actually meant fom 3G to 2G Jan 06 15:53:01 eldenz, but better don't believe me :P Jan 06 15:53:36 heh, i have to test it... i think i had it switching once and my tcp connection was kept alive, not sure though Jan 06 15:54:46 with connectbot Jan 06 15:56:42 Ah, I remember now, I tested 3g/2g to wifi and it'll disconnect/connect (it's kind of common sense that it'll do it.. you get a new IP and stuff so it can't really keep your connections alive in this case) Jan 06 15:56:56 yeah, wifi to mobile disconnects it Jan 06 15:57:37 i think it doesn't inside mobile connections.. that's probably why there is the wifilock. for mobile it would be quite easy to transparently switch things at the carrier Jan 06 15:58:15 * eldenz wonders whether Disconnect has nick highlighting on :p Jan 06 17:08:26 jasta: I'm working on an HTTP server implementation to stream to MediaPlayer...just trying to test a primitive setup right now Jan 06 17:09:15 do you see any reason that wouldn't be able to respond in my HttpRequestHandler using an InputStreamEntity? Jan 06 17:25:29 I believe to be able to stream over http the server must support chunked data but I don't know what else Jan 06 17:32:40 rbgrn: hmm ok, thanks Jan 06 17:33:02 it's working, I can wget it from the emulator...but MediaPlayer doesn't like it Jan 06 17:41:14 zhobbs_: no sorry i have forgotten most of that code Jan 06 17:41:32 although i will say that i fear HttpCore has overhead that I don't need or want and I considered rewriting the server from scratch. Jan 06 17:41:54 the subset of HTTP that i must implement properly is so small that it just doesnt make sense to allocates 30 objects to get it going :) Jan 06 17:41:58 allocate* Jan 06 17:42:33 yeah Jan 06 19:23:53 Anyone know how to get an http RedirectHandler to tell its called not to redirect ? Jan 06 19:24:00 its *caller Jan 06 21:30:31 hrmm, anyone using open intents here? Jan 06 21:31:36 try #android Jan 06 21:32:37 michaelnovakjr: me? Jan 06 21:32:45 :) yep Jan 06 21:44:51 hey, when I'm ready to release an alpha version of my app, is there a good place to get people to test it and provide feedback for me? Jan 06 21:45:21 not here :) Jan 06 21:45:51 since half the market is alpha quality just put it there Jan 06 21:48:19 ha Jan 06 21:48:28 you can always post a link here, and whoever tests it tests it Jan 06 21:48:49 wouldn't that be more appropriate in #android and not here Jan 06 21:48:59 actually I suppose it would Jan 06 21:49:04 spam it in #android :P Jan 06 21:49:13 :) everyone else does Jan 06 21:49:23 michaelnovakjr: yeah, i asked in android, but there was a fight going on with ghostwalker and his stolen font Jan 06 21:49:30 i was trying to cut through the noise Jan 06 21:49:51 i would just post in the market Jan 06 21:50:03 its filled with alpha quality stuff anywa Jan 06 21:50:05 y Jan 06 21:50:14 nsillik: what's it do? Jan 06 21:50:30 michaelnovakjr: is this channel technically not for development, while #android is hardware/linux stuff Jan 06 21:50:33 ? Jan 06 21:50:40 michaelnovakjr: yeah, that was my thought too, but I'd prefer not to have the brand ruined by tons of bad reviews about it's alpha-quality-ness Jan 06 21:51:03 this is for android development, #android is for general android discussion Jan 06 21:51:33 zhobbs: turns your camera into a portable document scanner (similar to shareyourboard, but works for documents too) Jan 06 21:51:53 leet Jan 06 21:52:26 michaelnovakjr: so is this channel for development of android applications? or development of the android system/sdk/dalvik stuff? Jan 06 21:52:46 umm.i guess i should have just checked the channel topic Jan 06 21:52:47 * nsillik blushes Jan 06 21:52:51 :) Jan 06 21:53:14 android source questions come up though Jan 06 21:53:26 my OI question from earlier would be valid here then! Since it's a application development issue Jan 06 21:54:11 haha, digitalspaghetti what's your question about OI? I've been looking at it, but haven't decided to use any of them yet (I've been thinking about using OI update though) Jan 06 21:54:18 digitalspaghetti: did you write it? Jan 06 21:54:42 well i wanted to know what version to use? Jan 06 21:54:47 the one in the trunk? Jan 06 21:55:26 nsillik: well i've just started writing my app Jan 06 21:55:45 so i thought it would be good to get it in early, maybe even see if i can contribute an intent Jan 06 21:55:52 digitalspaghetti: that's not really a question for here Jan 06 21:56:03 you should email them Jan 06 21:57:15 michaelnovakjr: how is that not an appropriate question? especially since I've not seen any questions answered hear all day. He can shout into the void like the rest of us, no? Jan 06 21:57:26 not really Jan 06 21:57:52 we are trying to keep the questions on topic here Jan 06 22:01:00 okay, well here's an on topic question. How do I implement an onLongClick handler for a ListActivity with a custom ListAdapter and custom View for the list items? Making the custom view implement LongClickListener didn't work, and I don't understand why there is no ListActivity#onListItemLongClicked (like ListActivity#onListItemClicked) Jan 06 22:01:39 there is Jan 06 22:02:06 http://code.google.com/android/reference/android/app/ListActivity.html#onListItemClick(android.widget.ListView,%20android.view.View,%20int,%20long) Jan 06 22:03:01 that's for a normal click, i want longclick Jan 06 22:03:26 I already have something happening onClick, I want to show a contextMenu on longclick Jan 06 22:03:46 ah Jan 06 22:05:21 nsillik you implement the context menu methods Jan 06 22:05:41 for each of the views, or for the list activity? Jan 06 22:05:43 and call registerForContextMenu(getListView()); Jan 06 22:05:47 list activity Jan 06 22:05:51 ah, okay. thanks! Jan 06 22:25:14 so i'm trying to make a horizontal ScrollView. i downloaded the source but I think I might have the wrong version. how can I download the framework source code that matches the SDK ? Jan 06 22:25:48 why do you think you have the wrong version? Jan 06 22:26:51 i get errors like --> cannot find symbol : variable View.mScrollY Jan 06 22:27:16 well Jan 06 22:27:24 i'm doing Jan 06 22:27:50 class MyScrollView extends FrameLayout { all the code from ScrollView } Jan 06 22:28:14 but when I compile it can't find about 6 fields from View Jan 06 22:28:15 thats because mScrollY is a package scoped member of View. Jan 06 22:28:41 protected int mScrollY; Jan 06 22:28:54 use getScrollY() and getScrollX() instead Jan 06 22:28:56 oh, well then that makes no sense ;) Jan 06 22:29:10 how so? Jan 06 22:29:31 i guess i could, but i'd rather change as little code as possible Jan 06 22:29:36 romainguy_: why would you not have access to a protected member variable when you extend a subclass? Jan 06 22:29:48 haha, because we're tricky Jan 06 22:29:56 is that you're @hide magic? Jan 06 22:29:59 yes Jan 06 22:30:03 ? Jan 06 22:30:06 that's what i assumed. Jan 06 22:30:14 we use it for two things: Jan 06 22:30:21 - hide APIs that are not ready yet Jan 06 22:30:26 morgan: they are using directives that somehow scrub the android.jar class to exclude anything they dont want part of the API Jan 06 22:30:28 - define "friendly" APIs Jan 06 22:30:34 wtf Jan 06 22:30:45 err s/class/archive/ Jan 06 22:31:07 anything marked @hide is subject to removal or signature-change at any time Jan 06 22:31:23 i see Jan 06 22:32:13 thanks for the info, i would not have figured that out Jan 06 22:32:19 because once a method is unhidden and published, that method must remain available forever and ever Jan 06 22:32:52 Google would rather not have to keep supporting a million broken legacy methods just because :) Jan 06 22:34:12 romainguy_: have you published that app of yours yet? Jan 06 22:34:16 not yet Jan 06 22:34:23 I did absolutely nothing during my vacations Jan 06 22:34:24 it was good Jan 06 22:34:26 :) Jan 06 22:34:37 I should publish the code even not finished Jan 06 22:34:41 hehe, i know the feeling Jan 06 22:34:42 and finish the dev in the open Jan 06 22:34:44 then public on market Jan 06 22:34:50 -public+publish Jan 06 22:34:52 i've already given my notice at my job, i'm mentally checked out :) Jan 06 22:35:05 romainguy_: i would appreciate that. Jan 06 22:35:06 :) Jan 06 22:35:07 I wonder if there is a reason ScrollView is vertical only? Jan 06 22:35:12 yes Jan 06 22:35:36 we decided that horizontal scrolling is of lesser use than vertical scrolling Jan 06 22:35:38 romainguy_, what app? Jan 06 22:35:43 morgan: mostly because horizontal scrolling on a phone is not a straight forward problem. for instance, look at how the browser has to do it. Jan 06 22:35:45 so we preferred to keep the code simple Jan 06 22:36:08 but we received a patch that adds horizontal scrolling support in ScrollView Jan 06 22:36:15 i'm not sure i understand. doesn't the Gallery do horizontal scrolling? Jan 06 22:36:16 I think we accepted it already Jan 06 22:36:20 it does Jan 06 22:36:52 and it's a bit awkward to use, imo, with a touch screen Jan 06 22:37:10 even in landscape mode? Jan 06 22:37:19 the problem is only partly the orientation Jan 06 22:37:27 doing a horizontal scroll requires you to move your entire hand Jan 06 22:37:33 just wondering, looking at the code it seems like a small change Jan 06 22:37:37 a vertical scroll can be achieve more easily by moving just the finger Jan 06 22:37:58 and again, this being Android 1.0, we preferred not to include something we didn't see an immediate need for Jan 06 22:40:11 * romainguy_ is @Deprecate-ing stuff Jan 06 22:40:14 I hate doing that @!# Jan 06 22:40:27 yeah, general experience on small-screen devices suggests that having to scroll horizontally makes people angry :) Jan 06 22:40:53 but you are adding it soon? will the patch be available somewhere soon? Jan 06 22:40:53 that's why web sites optimized for mobile devices for instance are pretty much vertical-scroll only Jan 06 22:41:03 the patch is in the public repository Jan 06 22:41:14 no ETA for delivery on the phones Jan 06 22:41:21 and I would advise you against it :) Jan 06 22:41:28 tee hee Jan 06 22:42:05 hehe, i'm not sure i like opinionated widget libraries... Jan 06 22:42:20 romainguy_: is this app of yours personal or would it be part of apps-for-android? i am curious to see your solution to smooth scrolling images. the more i think about it, the more i like the way your implementation behaves Jan 06 22:42:40 jasta: it might be both personal and apps-for-android :) Jan 06 22:43:07 morgan: well, already android's widget library is substantially larger than any other mobile toolkit. i think it's fair that it pruned useless features :) Jan 06 22:43:13 i need another app idea to keep me going. The other app i am working on, i need to wait till the client updates their SOAP responses Jan 06 22:43:22 i don't really know how to use git. it is possible to download just this patch? Jan 06 22:43:26 and to be honest, we do have features that really should have been removed Jan 06 22:45:32 jasta: I should be able to show the source code of the UI right now I guess Jan 06 22:45:46 the problem is the data import code Jan 06 22:47:10 i don't require that, but i understand if you aren't interested in cannibalizing the project. Jan 06 22:47:20 no that's not the issue Jan 06 22:47:24 the problem is purely legal Jan 06 22:47:38 i need to make sure I'm not violating the ToS from the web service I'm using Jan 06 22:47:38 oh Jan 06 22:47:39 that's all Jan 06 22:48:02 that's why it should not matter if I publish the UI code only for now Jan 06 22:48:42 i'm about to publish my code showing how to implement a persistent tcp connection efficiently. i have finally learned all of google's secrets ;) Jan 06 22:49:25 took you long enough :p Jan 06 22:49:38 truthfully, i have hardly been doing anything for the past about month or so :) Jan 06 22:49:40 did ya google em jasta? Jan 06 22:50:18 i'm trying to shake off this recent laziness so i can wrap up some projects before i start my new job Jan 06 22:50:52 i expect that after i start, i won't have nearly as much free time. Jan 06 22:51:23 Where are you going to work jasta Jan 06 22:51:29 playing with android has me dreaming about a new job. I had forgotten the joy and pain of UIs... Jan 06 22:51:30 t-mobile Jan 06 22:51:41 ahh Jan 06 22:52:17 in the android developement area ? Jan 06 22:53:16 yup Jan 06 22:53:32 jasta: that should be fun. Jan 06 22:53:39 now I get: cannot find symbol method View.setScrollContainer(boolean) Jan 06 22:54:22 so I think I'm back to my original question. how can I get the source that matches the SDK? Jan 06 22:54:29 BlindOracle: yeah, i'm excited. t-mobile might be a bit stuffy for me, but i'm willing to give them a shot :) Jan 06 22:54:45 the team is brand new with kind of a startup feel so i think there's plenty of fun to be had. Jan 06 22:55:04 But in the US right not in Germany. Jan 06 22:55:06 morgan: it's the release-1.0 branch on git Jan 06 22:55:18 thanks Jan 06 22:55:42 anno^da_: yes, the US. t-mobile's US headquarters is here. Jan 06 22:56:16 Yeah fine. Jan 06 22:56:48 romainguy_: the version shipped with the phones was never tagged or branched, right? Jan 06 22:56:51 jasta: where is here? Which state? Jan 06 22:56:58 haakjes: no idea Jan 06 22:56:59 BlindOracle: Seattle, WA. Jan 06 22:57:04 I'm going to look for a joob in that area too when the G1 is released in Germany and some more companies are searching overe here. Jan 06 22:57:40 romainguy_: ok :) Jan 06 22:59:15 jasta: Finally I got the service now working and it gets nicely restarted by the system as you mentioned. :-) (why have I overread that in the docs :-) *grrr* ) Jan 06 23:01:56 the docs are somewhat hard to interpret because they use the term "restart". Jan 06 23:05:02 Yeah well I read the docs several times and overread that part completly. :/ Well but now everything is much clearer and the missed call app is now even more reliable. Anyhow it is still annoying that no broadcast gets sent when a call is incoming. So you have to drain the users battery listening for changes in the PhoneStateListener in a service. :( Jan 06 23:05:38 file a feature request Jan 06 23:06:13 There is one for the missing LED notification for missed calls. Jan 06 23:06:42 morill told me that the broadcast will be available later on. Jan 06 23:07:06 So I haven't looked deeper into it. :-) Jan 06 23:07:36 But I will file a feature request the next days that we don't forget that. Jan 06 23:08:19 Do you know if there is some work going on on the docs? Especially the intent section could need an update. A lot intent actions are just available if you search for them in the sources. Jan 06 23:09:05 anno^da_: and they say 'pending api something' Jan 06 23:09:10 with @hide Jan 06 23:13:10 pending API council approval Jan 06 23:13:11 :) Jan 06 23:15:48 has anyone here installed Snap Photo? Jan 06 23:16:28 I did Jan 06 23:16:55 I'm curious about something. It "replaces" the regular camera program. Jan 06 23:17:21 but it doesn't ask permission to do that Jan 06 23:17:31 it doesn't replace it for me Jan 06 23:18:12 I run the regular camera app, and Snap Photo runs instead Jan 06 23:18:35 not on my phone Jan 06 23:18:37 how do you run it? Jan 06 23:18:58 clicking the camera icon Jan 06 23:19:13 you might have an old version Jan 06 23:19:16 that starts the Camera app for me Jan 06 23:19:20 I installed it a couple hours ago Jan 06 23:20:51 when an android app creates a sqlite database, where does it get created? Jan 06 23:21:42 /data/data/app_name? Jan 06 23:22:02 andrewoid: I've used Snap Photo. It does not replace the existing app. It does seem to work better at ensuring photos are in focus. Before it was pretty easy to take lots of blurry, out of focus images. Jan 06 23:22:03 ok... restart my phone. Run Snap Photo, Snap Photo runs. Close Snap Photo, run Camera app, Snap Photo Runs Jan 06 23:23:07 andrewoid: hmm...I just tested, I have two camera apps and each icon starts it's own app Jan 06 23:23:41 same here, just downloaded it to test Jan 06 23:23:47 morgan: thanks. That's it. Jan 06 23:24:24 which one did you start first? Jan 06 23:24:58 andrewoid: I went straight to camera this time, but I'll check again. Jan 06 23:25:16 what works for me is Jan 06 23:25:38 restart, run camera, camera runs, close camera, run snap photo, snap photo runs, close snap photo, run camera, snap photo runs Jan 06 23:26:19 andrewoid: I started snap, took picture, saved, exited, starter camera, took picture, exited. No problem. Jan 06 23:27:41 curious Jan 06 23:29:59 BlindOracle, how are you exiting? Jan 06 23:33:39 * digitalspaghetti has had a great idea for a localised application :) Jan 06 23:34:40 to do what? Jan 06 23:35:22 out city has live bus trackers, but they don't provide any API - they do have a website though and i've experimented with parsing the data out Jan 06 23:35:34 which city? Jan 06 23:35:54 but if i could tie in geolocation with bus stop positions from the DB, and use that to parse live bus times Jan 06 23:35:57 edinburgh Jan 06 23:38:14 I worked on something like that Jan 06 23:38:24 still am actually Jan 06 23:38:41 http://mybustracker.co.uk/ is the site, which is horrible Jan 06 23:38:50 yes it is Jan 06 23:40:52 anyway, to bed! Jan 07 00:56:42 jasta: looks like my non-UI code does not violate the ToS Jan 07 01:02:19 excellent news Jan 07 01:02:25 will you be publishing the code soon? Jan 07 01:03:26 hopefully Jan 07 01:03:34 I need to go through a few more hoops Jan 07 01:10:26 oh corporate america, here i come ;) Jan 07 01:29:34 Occasionally, my "release" packages seem to be broken. They first claim to be replacing another program. Then, the list of permissions it wants is empty (it should have one item). Finally, it says "installation failed." Jan 07 01:29:38 Any ideas? Jan 07 01:31:07 I've tried the same package on different phones. It installs on one, but not another. I have access to four physical phones. One is dev. My example installs on two, but not the other two. Jan 07 01:31:35 hmm Jan 07 01:31:46 CardinalFang: installing from market, or from http server? Jan 07 01:31:53 http. Jan 07 01:32:13 ive seen some funky stuff happening there too, at one point i had something asking for all the permissions lol Jan 07 01:32:35 *it was reported as happening by someone for connectbot SVN builds, rather Jan 07 02:13:14 When I log an object, it shows package.ClassName@NNNNNN. What does the NNNNN mean? Is that like a unique id for that instance? Jan 07 02:15:11 yes. it's its identity hashcode Jan 07 02:15:26 not *quite* guaranteed to be unique Jan 07 02:15:39 but typically so Jan 07 02:18:04 cool Jan 07 02:19:58 Is there a way to print a stack trace without using an exception object? Jan 07 02:20:13 (ie, to the Log) Jan 07 02:20:50 not from normal app code Jan 07 02:20:57 I guess I could just throw a new exception and catch it :-P Jan 07 02:20:58 (yes in native code) Jan 07 02:21:08 you don't have to throw it Jan 07 02:21:13 just construct it Jan 07 02:22:02 oh, true. duh Jan 07 02:22:11 Log.e("blort", "blort", new RuntimeException); Jan 07 02:22:22 er () in there too Jan 07 02:32:15 ok, I'm kindof confused on the GetView() method of the ArrayAdapter (ie, when using a custom array adapter). My understanding was that convertView was a "recycled" view that was scrolled off of the screen. But when I log the convertView object, it shows the same id hash for both rows (there's only two rows in the list right now). Jan 07 02:33:29 ie, when getView is called for position 0, convertView is null, then I log the new view object that I return, and get id NNN, and when it's called for position 1, convertView is the same NNN id. Jan 07 02:34:49 sorry, that's out of my zone Jan 07 02:36:02 heh, ok :) I'm sure romainguy would know (He's mentioned on the howto I'm following) Jan 07 02:36:16 almost certainly **** ENDING LOGGING AT Wed Jan 07 02:59:57 2009