**** BEGIN LOGGING AT Thu Mar 24 02:59:58 2016 Mar 24 03:10:26 I want to ship my app with a small, prepopulated sql database that will only need to be queried. Is there a preferred way to do this? I'm still new to everything Mar 24 03:11:38 there's a couple of ways to do it, depending how small small is Mar 24 03:13:31 bankai: very small. The db has 110 items each with about 6-7 columns with not much data Mar 24 03:13:53 proguard is automatic part of the build Mar 24 03:13:59 there is nothing to download... Mar 24 03:15:12 this is what I'm populating the db with: http://messier.seds.org/data1.html Mar 24 03:15:35 microt: three options : bundle it and access it from assets, bundle it and copy it to external storage on first run, create it on first access Mar 24 03:16:03 second option is probably the best IMO, then if you ever need to write to it you're fine to do so Mar 24 03:16:49 hooray for bids on stuff you know nothing about :p Mar 24 03:17:01 guess dude left Mar 24 03:18:42 bankai: thanks, that gives me something to start with. Mar 24 03:18:57 microt: this might help http://mobisys.in/blog/2012/01/tutorial-using-database-in-android-applications/ Mar 24 03:22:02 bankai: thanks, I had that one on my to-read list. There are just so many ways to achieve similar things, it can be a bit overwhelming at first. Especially when I'm still just learning how to orient myself with the basics Mar 24 03:26:37 Goodnight. Mar 24 03:39:25 Anyone have a working lock screen widget example? Mar 24 03:49:49 Trying to use a simple webview, but when I start the activity which loads my webview, it hangs for like a second, and then launches the browser. Ideas? WebView webView = (WebView) findViewById(R.id.webview); webView.loadUrl("https://twitter.com/jakewharton"); Mar 24 03:52:17 set your webViewClient Mar 24 03:57:30 how do you set the versionCode? Mar 24 03:57:49 you increment it yourself manually? Use the date maybe Mar 24 03:57:57 20160323 Mar 24 03:58:50 xFF, don't bother with lock screen widgets Mar 24 03:59:18 xFF, but any widget can be turned into a lock screen widget by adding a flag Mar 24 03:59:28 Why not pfn? Mar 24 03:59:31 in the appwidget xml descriptor Mar 24 03:59:32 ...adding a flag? Mar 24 03:59:37 ah. Mar 24 04:00:11 xFF, because android versions that support the lock screen widgets are quickly disappearing Mar 24 04:01:20 Ok. Waht about hardware buttons when the screen is off? e.g. volume up/down Mar 24 04:05:21 RustyShackleford: git rev-list HEAD --count Mar 24 04:08:12 bankai_: Hm, didn't know that it was necessary. Saw it in the docs. Anything specific I should be setting it to? Mar 24 04:08:35 new WebClient() i believe Mar 24 04:09:08 so I'm trying to use and okhttp Interceptor to mock out a network call Mar 24 04:09:24 I'll save a response for this API call to a file Mar 24 04:09:53 then pass it thgouh my retrofit/simplexml code to use in unit tests Mar 24 04:10:09 except I have no idea where to start or how to do it Mar 24 04:10:28 RustyShackleford: https://github.com/square/okhttp/tree/master/mockwebserver Mar 24 04:13:30 tm604: beautiful thanks Mar 24 04:38:00 <_xor> Damnit, wtf. I signed up for Hockey, but I haven't gotten any verification email yet. Anyone else ever experience this? Mar 24 04:40:10 xFF, that works fine, register a media button receiver Mar 24 04:45:56 do you use roboelectric? Mar 24 04:46:01 it seems complicated Mar 24 05:30:18 Greetings. Question. Android Studio. I generate some source in .../build/generated/source/castor/... and set srcDir. App compiles. Generated src is hiddin in android studio (like). When I navigate to a generated src item it decompiles from the .class file... Mar 24 05:30:19 But if for example I navigate to BuildConfig.DEBUG it shows me the .../build/generated/source/.../BuildConfig.java (even-though it is hidden as well). If I generate the src outside the .../build/... dir everything is fine for navigation. Mar 24 05:30:24 Is there something special I need to do to have my generated source act like BuildConfig.java/R.java/etc, aka hidden but "navigate to"-able? Mar 24 05:32:56 Android Studio 1.5.1, Gradle 2.8, Android Plugin 1.5.0. Mar 24 05:38:59 I have a working vertical seekbar implementation but I'm trying to get a drawable thats used for the thumb to rotate as well, any ideas? Mar 24 07:20:17 NvrBst, generate your source into the correct package path Mar 24 07:20:28 and use the correct gradle source generation tasks Mar 24 07:21:55 I assume gradle has such a thing Mar 24 07:33:57 hmm are you sure it isn't a android-studio or android-gradle-plugin issue? As far I as i can tell gradle doesn't really have a generated src vs src distiction, just src directories. And building with gradle is fine. Mar 24 07:33:58 Just the android studio hides the src... and I can't tell how it figures out R.java/AIDL/BuildConfig.java/etc (internal generated stuff) is different than my generated code in the build folder. AKA maybe there is some kind of android-gradle-plugin feature for SourceSet I can define? Mar 24 07:39:55 I'm thinking maybe it's an android studio bug... and the aidl/internal/etc plugins can do it, but, the build.gradle>.iml thing can't do it. In essance I'd think it should do it by default for any java.srcDir inside the build dir. Mar 24 07:43:17 I got an ANR in an Activity after it was stopped. How is this possible? Mar 24 07:44:56 Maybe because super.onPause() was not the first thing called in onPause()? Mar 24 07:45:26 I'll issue a bug report for my issue and see if anyone says something there! Mar 24 07:50:21 Hi everyone. Does anyone know how to get a list of purchased apps? I'm very curious on how this app functions: https://play.google.com/store/apps/details?id=com.azefsw.purchasedapps Mar 24 07:55:33 you can see them thru play on a pc browser Mar 24 08:00:41 hi gang Mar 24 09:50:07 Hi folks, anyone ever tried to put a camera preview inside a gridview? Mar 24 10:17:13 no Mar 24 10:52:31 When calling methods from this class: http://pastebin.com/UEZXGpqR in my activity , do I simply use the class name like "LocalPreferences.setPreferences1();" instead of creating an instance of it, since it's static? Mar 24 10:54:12 when calling setPreferences1 yes Mar 24 10:54:31 but this is general java, rather newbie, question Mar 24 10:54:50 yeah I know, I'm rusty Mar 24 10:55:17 thanks though Mar 24 11:11:26 "I'm too old for this shit!" Mar 24 12:01:26 Hi. I don't know if I am in the right place. I want to simulate a Long Press on Android 4.2.2 on terminal. But in this version the "input swipe" command, doesn't allow the duration parameters. How can I simulate this operation? Mar 24 13:01:26 how to remove all items from recyclerview with default animation? Mar 24 13:02:08 after adding items in recyclerview adapter, and calling notifyItemRangeInserted shows animation Mar 24 13:02:51 i like listview because it supports adapters but visually i need something like tablelayout, can i use adapters with table or easily make listview look like table? Mar 24 13:03:01 however, if I similarly remove items with notifyItemRangeRemoved, all items get removed in a blink Mar 24 13:28:06 where does the Client class come from? Mar 24 13:28:08 http://newbility.blogspot.com/2014/02/mock-retrofit-using-dagger.html Mar 24 13:32:06 RustyShackleford: Client class apparently is just an interface with function public Response execute(Request request); in it Mar 24 13:32:45 RetrofitClientMock simply implements the interface Mar 24 13:40:29 Hi. I don't know if I am in the right place. I want to simulate a Long Press on Android 4.2.2 on terminal. But in this version the "input swipe" command, doesn't allow the duration parameters. How can I simulate this operation? Mar 24 14:00:09 hm, I think 23.2.1 recyclerview might cause some ghosting when scrolling Mar 24 14:00:23 * Zharf goes back to 23.1.1 to see if the problem still exists Mar 24 14:05:56 maybe not, it happens on 23.1.1 too Mar 24 14:05:58 hmm Mar 24 14:06:59 what the fuck is up with those websites demanding humongous passwords containing uppercase and lowercase letters, symbols, numbers, japanese/arabic/chinese characters and hieroglyphs? Mar 24 14:07:41 someone needs to read xkcd ffs Mar 24 14:09:06 I wouldn't use xkcd as any kind of a reference, but sure, I get the point Mar 24 14:09:53 the password comic is pretty good, it makes a point. Mar 24 14:10:16 casadogg, because policies are easier to enforce than educating users Mar 24 14:10:57 dragorn the weakest link in any kind of security system is the human being, by enforcing stupidly ridiculously long passwords containing all kinds of shit you will make the weakest link weaker Mar 24 14:11:06 personally I don't like to write long passwords, I'd rather write those archaic hieroglyphs Mar 24 14:11:09 as in stupid people glueing post its in their monitors with their passwords Mar 24 14:11:47 but then I never write my passwords anywhere except the login boxes Mar 24 14:14:21 I use keepass Mar 24 14:14:25 problem solved Mar 24 14:14:59 it was never a problem for me Mar 24 14:15:21 but it is for people who are not used to sit on a computer 8 to 10 hours a day Mar 24 14:15:31 what do you mean 8 to 10... Mar 24 14:15:32 i mean Mar 24 14:15:38 not sit on a computer Mar 24 14:15:43 you get what i mean Mar 24 14:15:54 more like 14-18 (for me) Mar 24 14:16:16 enjoy your thrombosis Mar 24 14:16:38 meh :p Mar 24 14:16:46 nothing better to do in the world Mar 24 14:18:54 Zharf ikr Mar 24 14:19:13 ikr? Mar 24 14:20:52 i know really Mar 24 14:21:19 you oughta stretch from time to time though Mar 24 14:22:12 do some tumbles, somersauts, backflips, barrel rolls and whatnots Mar 24 14:22:43 Hello guys, I'm using Picasso to load a background image from a network server and use a Target object to set the background layout of my fragment with the downloaded image. But the weird thing is that it doesn't change the background, until I leave the fragment and come back again. I even tried invalidate() on the layout, but with no success. Any idea? Mar 24 14:23:28 I have this scenario: I make a http request to load an image that the user has stored in my backend. I get the byte data and apply it to his profile image. But when using the app with transitions between activites, each time he enters that activity with his profile image , I make a new http request to download the image. It's the only source. How does Android work here, does it hold the data from server in memory so I won't ha Mar 24 14:24:37 Number5: I think you need to apply the downloaded image with async to get direct response. Mar 24 14:24:57 Bernzel_, use Picasso, it automatically caches the downloaded image. Or use Glide... Mar 24 14:25:55 Oh I see. I'll try that Number5 Mar 24 14:25:58 Bernzel_, check Picasso, it will solve your problem, my problem hasn't to do with downloading, but rather updating. Mar 24 14:26:38 yeah about your issue, I've had that before with Libgdx alot. With Libgdx it was solved by changing the background image on a Runnable. Essentially running it on the rendering thread. Mar 24 14:26:53 I believe. Mar 24 14:27:25 Suppose it's called Main Thread in vanilla android dev. Mar 24 14:36:09 hello, i'm trying to compile project(':project') and it's generating an AndroidManifest with a bunch of stuff i don't need (overwriting mine), how do you avoid this? Mar 24 14:36:36 hmm Mar 24 14:36:45 Are you sure it's overwriting yours? Mar 24 14:36:53 Or are you just editing the wrong file? Mar 24 14:36:59 casadogg, I think I usually get up after at most 6 hours, for a toilet break, possibly to get something to eat, etc :p Mar 24 14:37:07 no i'm seeing it overwrite it Mar 24 14:38:10 casadogg, I should set some kind of a timer on my work computer so that I remember to move every few hours, often I notice that I've been sitting here for the last 4-5 hours again Mar 24 14:38:25 Mavrik: maybe it's targeting the release or building a release version, because it's pointing to /build/intermediates/bundles/release Mar 24 14:38:36 Mavrik: but i need the debug one i guess Mar 24 14:38:39 That's what I meant. Mar 24 14:38:44 You're looking at the wrong file. Mar 24 14:39:13 You're looking at what gradle generates from your application AndroidManifest + library AAR manifests + build.gradle parameters Mar 24 14:39:27 And that always gets overwritten... you shouldn't touch files in build dir for that reason Mar 24 14:39:36 "Your" AndroidManifest.xml is in your src/something dir. Mar 24 14:39:53 oh yea i think i fixed it now, ty Mar 24 14:40:51 It's a common thing because AS tends to open wrong file when it barfs an error :P Mar 24 14:40:52 Bernzel_, ok thnx my friend. Mar 24 14:46:33 Number5 If you find a good solution , I'd be glad to hear it. I'm currently trying to draw a button to the screen when a boolean value turns true, which requires me to constantly check that boolean in that sort of thread that calls continuously Mar 24 14:47:32 Bernzel_, what exactly do you want to do? Mar 24 14:48:11 I'm loading some data from my backend on a method that get's called onCreate , when it's done I flag a bool to true, when that happens I want a button to be drawn to the screen. Mar 24 14:48:16 You can add a button by creating one and add it to the layout programmatically. Mar 24 14:48:38 I want it to appear only when all data is done Mar 24 14:49:20 Bernzel_, have you ever heard of callbacks? Mar 24 14:50:01 is this loading data, in another thread? Do you use a custom thread to handle these kind of data? Mar 24 14:50:32 Bernzel_, Yeah why not use a callback? Mar 24 14:51:26 This is the activity: http://pastebin.com/T7Nrr0Lx Mar 24 14:51:36 Bernzel_, do you use http request? Or is it another type of protocol (loading from bluetooth, or use a custom tcp socket...) Mar 24 14:52:57 I'd assume it's http request, it's from my backends SDK Mar 24 14:55:04 Bernzel_, if you use http request, you have Volley library which is doing a lot of the complex stuff for you and returns a the http response in the main thread from whereon you can handle the data (i.e. parse json or something), so no need of boolean flag or something like that. When you get your response, you can call a method adding a button to your layout. Mar 24 14:57:48 Number5: It's no http requests I can control , I simply fetch data through the sdk's provided methods. But never mind that for now, it's the part with displaying a button on a certain event. I'd have to create the button in my Activity and not the layout file I suppose? Mar 24 15:01:41 Activity uses a layout that you set with setContentView() method. If you use an proprietary SDK, than I'm afraid you have to handle the communication yourself. But than you can use Handle, to post a message or even an object from your custom thread to the Main thread, without a problem. Mar 24 15:01:41 Found the visibility property that I can use perhaps Mar 24 15:02:46 Bernzel_, it's a better solution to use the visibility method of a view and in your case that's a button. This way you don't have to programmatically add a button. Mar 24 15:08:36 So not like this answer: http://stackoverflow.com/questions/9994967/android-how-to-make-a-button-display-on-a-condition ? Mar 24 15:09:46 That accepted answer looks reasonable Mar 24 15:10:18 i think the issue for you is knowing when to hide and show the button (you will need to listen for a change in what ever variable it is depending on) Mar 24 15:10:41 yes indeed that's what I'm missing still Mar 24 15:11:16 is the boolean in that pastbin you mentioned? Mar 24 15:11:25 what one is it? Mar 24 15:11:33 yes. done_loading Mar 24 15:11:42 I got it! N stands for NutJob! Mar 24 15:16:03 Bernzel_, toally un-tested and hacked together (may have bugs), but why not this? http://pastebin.com/stw6hzAH Mar 24 15:17:07 i probably could have added comments, but take a look in particular at line 61 Mar 24 15:21:07 truckcrash: hang on a minute and I'll take alook soon, gotta put out kitchen fir Mar 24 15:21:08 fire Mar 24 15:22:23 <|PiP|> Is it possible to "scale" a page such that it has 4 areas? So that if an element inside of it has a width/height of "match_parent", it only fills one of the areas? Mar 24 15:25:47 Pip, you could use a linear layout with layout_weight set Mar 24 15:26:00 assuming you want them ordered in line Mar 24 15:26:38 <|PiP|> im trying to figure out how to break up a layout without hard coding widths, kind of like a grid Mar 24 15:26:45 <|PiP|> is GridLayout the right tool to do that? Mar 24 15:28:37 You could do that. sure. http://stackoverflow.com/questions/10016343/gridlayout-not-gridview-how-to-stretch-all-children-evenly Mar 24 15:33:56 wow docker for windows and mac Mar 24 15:34:11 google could just give us docker container with all the tools maybe ? Mar 24 15:35:58 *docker for windows and mac.... is actually just run on an linux vm Mar 24 15:36:02 how ironic Mar 24 15:37:16 i'm guessin truckcrash is linux master race haha Mar 24 15:37:28 no not at all. Mar 24 15:37:34 this is so tempting https://medium.com/@dmytrodanylyk/android-project-structure-alternative-way-29ce766682f0 Mar 24 15:37:51 but the whole idea of docker is to be more portable at lightweight that vull vm / images Mar 24 15:37:55 full* Mar 24 15:38:04 but i figure i'll just wind up finding some corner case bug in the gradle plugin Mar 24 15:38:07 it is still a great setup Mar 24 15:38:14 im not trying to bash it Mar 24 15:38:57 "Released with Android Studio 2.1 Preview 3, Android Data Binding now has 2-way data binding." orly Mar 24 15:39:07 i thought they had that already Mar 24 15:41:16 truckcrash: it worked very nicely thank you! Mar 24 15:42:31 great. no problem. So that downloadData function is the callback that backendless calls when it is done, so you can just change your visibility there :) Mar 24 15:42:36 Number5: Hey about Picasso. Can I http get an image in one activity without using it (only caching it) to be used in the following activity? I have this loading screen where I planned on fetching all data so the user experiences better flow when he get's to the important activities. Mar 24 15:45:02 Bernzel_, I'm not sure what you mean, but when you use Picasso, it does requests for you under the hood. You just pass a url and imageview and that's it. Picasso is to my opinion the best library ever used. Mar 24 15:49:09 hey guys, my listview doesnt fill up the screen http://prntscr.com/ajfai3 I've set its width and height to match parent Mar 24 15:50:06 Bernzel_ http://stackoverflow.com/questions/22505290/preload-images-into-memory-disk-with-android-picasso http://stackoverflow.com/questions/24883034/getting-picasso-to-pre-fetch-forthcoming-images Mar 24 15:51:55 perfect truckcrash , couldn't find the right search term. Mar 24 15:54:06 np Mar 24 15:55:56 xJeremyCx, your parent ViewGroup has padding Mar 24 15:56:39 yea you're right! thanks Mar 24 15:56:45 no prob Mar 24 16:09:16 hi can anyone tell me more about provisioning a device through NFC like described here: https://source.android.com/devices/tech/admin/provision.html#profile_owner_provisioning ? does that mean the app i want to make as the device owner has to be in the play store? Mar 24 16:09:20 can i have it just be some random APK i built? Mar 24 16:38:44 nemik: What are you trying to do? Mar 24 16:41:05 Hey, is there any way I can control an android device via pc if the digitiser is dead? (dev mode wasn't activated... grr) Mar 24 16:41:43 you could try plugging a mouse into it Mar 24 16:42:04 doesn't support otg :/ Mar 24 16:42:13 you can do it via adb Mar 24 16:42:15 there are a few things that mirror your phone to the computer, but they require dev mode Mar 24 16:42:16 vysor Mar 24 16:42:40 vysor requires dev mode to be enabled, no? Mar 24 16:43:54 I am having an issue with memory leak and picasso in a recycler view (while loading drawables) I did add a no cache policy since I heard that might be the problem and still app crashes with out of memory error http://pastebin.com/NtPWdbSf That is the code if anyone understands what I am doing Mar 24 16:44:01 For Android 5.1, why is there a white shade at the background of the shortcuts icons? Mar 24 16:49:07 j Mar 24 16:50:29 if I use images off the web I have no issues, just drawables being a pain in the ass Mar 24 16:54:13 AppCompatDelegate has @IntDef({MODE_NIGHT_NO, MODE_NIGHT_YES, MODE_NIGHT_AUTO, MODE_NIGHT_FOLLOW_SYSTEM}) Mar 24 16:54:32 i understand this, but then has : @interface NightMode {} Mar 24 16:54:44 which i don't understand - what is that @interface ? Mar 24 16:56:01 oh i see .. Mar 24 16:56:02 public abstract void setLocalNightMode(@NightMode int mode); Mar 24 16:56:05 markyosullivan: i'd like the app to take over as the home screen on an uprovisioned device Mar 24 16:56:24 yup g00s it's all there https://android.googlesource.com/platform/frameworks/support/+/15ad538/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java Mar 24 16:57:59 g00s, man, as a developer you should learn to Google by now :) Mar 24 16:58:00 https://sites.google.com/a/android.com/tools/tech-docs/support-annotations Mar 24 16:58:08 Also, don't write code without these -_- Mar 24 16:58:54 Interesting... so it is not Picasso even this method crashes the app, am I doing something wrong with the drawables and recycler view that it does not like it... holder.pic.setImageResource(R.drawable.a1);.... Honestly changing from listview to recycler view so far seems like the biggest mistake Mar 24 17:00:51 Mavrik i got confused by this. I stored the night mode as an integer in preferences, but when i read it back i could not call the method with that int Mar 24 17:01:14 even though it was the right int. so i had to use a case to convert the int to an int :| Mar 24 17:01:23 s/case/switch Mar 24 17:02:01 you mean it prevents you from compiling Mar 24 17:02:05 yes Mar 24 17:02:12 it's a lint error :) Mar 24 17:02:16 yeah, but that's a good thing Mar 24 17:02:25 something you read back from prefs isn't guaranteed to always be valid Mar 24 17:02:45 yes i agree Mar 24 17:06:45 good thing AS decompiler is so aweseom Mar 24 17:07:18 +1 Mar 24 17:07:36 because this is still not 23.2 http://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html Mar 24 17:07:41 g00s: intellij :-) Mar 24 17:07:46 when i am forced to use eclipse at work and try to view a .class file Mar 24 17:07:49 & just hate myself Mar 24 17:08:07 and AS autocomplete says setXXXMode(int mode) ... i had NO fucking idea this was a special annotation Mar 24 17:08:20 gdrc actually the decompiler is fernflower Mar 24 17:08:33 they just use it, you can use it standalone too Mar 24 17:08:35 g00s special annotation? Mar 24 17:09:16 jug6ernaut yeah, the code just says public static final int MODE_NIGHT_NO = 1; Mar 24 17:09:32 but then further on they have Mar 24 17:09:44 @IntDef({MODE_NIGHT_NO, MODE_NIGHT_YES, MODE_NIGHT_AUTO, MODE_NIGHT_FOLLOW_SYSTEM}) Mar 24 17:09:44 ... Mar 24 17:09:44 @interface NightMode {} Mar 24 17:09:58 ah Mar 24 17:09:59 but unless you decompiled the class, you couldn't know this Mar 24 17:10:10 AS doesn't say anything, d.android.com doesn't say anything Mar 24 17:13:56 so hopefully, AS 2.0 will show void foo(@NightMode int mode) rather than void foo(int mode) Mar 24 17:14:24 seems like that information gets lost Mar 24 17:15:55 * g00s kinda undecided whether annotations are good thing in general Mar 24 17:22:41 pfn is there a better way to do this? http://pastebin.com/7RJLmRcN Mar 24 17:23:06 ignore the one mistake there in mapping Mar 24 17:23:47 use fallthrough, presumably static analysis will work, and you just say mode = nightmode; setDefaultNightMode(mode) Mar 24 17:24:03 if it doesn't work, I would file that as a bug against lint Mar 24 17:24:16 or whatever it is that's preventing the compile from succeeding Mar 24 17:24:26 hm ok Mar 24 17:24:29 thanks Mar 24 17:25:39 http://pastebin.com/ERDnQvhx Mar 24 17:25:46 like that, or assign mode = nightmode if necessary Mar 24 17:25:59 but either way, static analysis should handle that properly Mar 24 17:26:50 ok that fallthrough didn't work either sadly Mar 24 17:27:00 anyone here use EventBus? Mar 24 17:31:30 pfn i thought this would be possible : @NightMode int foo = AppCompatDelegate.MODE_NIGHT_NO Mar 24 17:31:50 i clearly don't know wtf i'm doing here, oh well Mar 24 17:33:50 so i guess those annotations only work in method signatures Mar 24 17:33:52 Can anyone take a look at this.... http://pastebin.com/cbcYR2yu Mar 24 17:34:12 Line 131-133 Mar 24 17:34:24 I don't know why I can't access variables in the outer class this way. Mar 24 17:35:11 TinFury because that class is declared static Mar 24 17:35:35 so it can't see scope of BreadMixingSchedule Mar 24 17:35:40 hm now i am getting hungry Mar 24 17:37:06 oh... Mar 24 17:37:08 :| Mar 24 17:37:10 Thank you Mar 24 17:38:08 pfn, hrm i can't even do void setDefaultNightMode(@NightMode int mode) () - i'm guessing because those annotations are not public Mar 24 17:38:46 java sucks Mar 24 17:38:52 :D Mar 24 17:38:55 of course Mar 24 17:46:37 Evening. Does anybody know if there's a way to directly go to the permission settings for an app? I can open the general app details/settings with ACTION_APPLICATION_DETAILS_SETTINGS, but I'd liket offer the user a button that directly goes to the permissions. Mar 24 17:47:29 g00s, now that I've removed static from the class everything works but it complains that inner class should be static?? Mar 24 17:48:05 TinFury it probably should be, for safety reasons ;) Mar 24 17:49:12 http://www.wfplsiu.com/ Mar 24 17:50:24 orbyt_ like you're using fucking Java. Hybrid apps suck." haha Mar 24 17:50:54 lolz Mar 24 17:51:08 "Time to learn fucking Java and Swift. Hybrid apps suck, so your dumb ass needs to learn both." Mar 24 18:08:41 s73v3r what do you think of this https://dzone.com/articles/simple-suggestion-radically Mar 24 18:09:19 "One way to achieve this is to allow packages to depend only on antecedents, that is, only on those packages that "come before" it in the package's fully-qualified name. This is radial encapsulation." Mar 24 18:10:06 let me take a look at it in a bit Mar 24 18:10:38 cool thx. never heard anyone call this radial encapsulation before. also for some reason seems like i missed the memo on best practices of Java package structure Mar 24 18:16:37 it’s one of those things that sounds neat, but I don’t know how practical it is Mar 24 18:17:09 there’s obviously exceptions, as following it strictly means your code couldn’t use anything in com.java or com.android Mar 24 18:21:53 in general, however, i am in favor of marking as many things as private as possible. Mar 24 18:23:54 If I have a ContentProvider and want to use RxJava to listen to changes and reload the data in the UI. Is that possible and easy to do? Trying to look for examples. Mar 24 18:29:42 codepete there was a project called RxLoader or something Mar 24 18:30:10 yeah https://github.com/evant/rxloader Mar 24 18:30:13 g00s: Thanks! I'll check it out. Mar 24 18:31:30 s73v3r i guess where i break this is com.foo.internal ... where i have stuff in com.foo using stuff in com.foo.internal Mar 24 18:34:19 so has anyone used anything other than gcm for push notifications ? Mar 24 18:34:31 like Smack API and some server ? Mar 24 18:34:41 open source stuff Mar 24 18:34:49 not really Mar 24 18:34:54 paresh: I'm intending to use Batch with Firebase Mar 24 18:35:13 Think it's only for Firebase but I'll check Mar 24 18:35:17 the way android is right now, you kinda have to use GCM unless you don’t care about getting the messages Mar 24 18:35:25 is hungarian frowned upon for android controls? for instance, lvwPhones (for listview) pnlLogin (linear layout) cmdForgotPassword (button)_ Mar 24 18:35:26 just ask justJanne about it :p Mar 24 18:35:40 guideX: hungarian is ALWAYS frowned upon Mar 24 18:35:46 hehe Mar 24 18:35:49 just making sure Mar 24 18:35:50 Yeah it's only Firebase Mar 24 18:35:51 s73v3r, haha Mar 24 18:36:04 before any other of my programmer friends point and laugh Mar 24 18:36:41 hungarian? Mar 24 18:36:51 As in the nationality? :s Mar 24 18:36:55 markyosullivan: it's something programmers in the 80's-90's used to do Mar 24 18:37:05 hungarian notation Mar 24 18:37:50 I was born in the 90's Mar 24 18:37:50 94 Mar 24 18:37:50 :D Mar 24 18:38:10 markyosullivan, ayyy me too Mar 24 18:38:11 :D Mar 24 18:38:14 when you were born, I had windows programs under development Mar 24 18:38:31 maybe hit deploy right when you came out of the womb Mar 24 18:38:36 not real sure ;D Mar 24 18:40:11 Old school :) Mar 24 18:40:45 now I really need some open source alternative to this Mar 24 18:40:56 paresh: to what Mar 24 18:41:09 guideX, push notifications Mar 24 18:41:29 which actually works Mar 24 18:41:36 and not resort to GCM ... Mar 24 18:41:48 paresh: impossible. Mar 24 18:42:03 I use some C# library for all my push notifications Mar 24 18:42:05 Since Marshmallow, only GCM is allowed while the device has been unused. Mar 24 18:42:10 PushSharp? Mar 24 18:42:18 On Android N, all apps are killed as soon as screen as off, Mar 24 18:42:21 https://github.com/Redth/PushSharp Mar 24 18:42:25 So there GCM only works at all. Mar 24 18:42:48 I've debated with Googlers, filed official complaints regarding competition and privacy with the EU, Mar 24 18:42:49 I wrote a game called pooper-scooper in 1982 for a PET 32 computer in BASIC Mar 24 18:42:51 So we can only wait. Mar 24 18:43:42 guideX, remove GCM and *insert open source alternative* or something self hosted Mar 24 18:43:58 paresh: this is open source Mar 24 18:44:07 oh self hosted Mar 24 18:44:19 yea but it uses gcm so Mar 24 18:44:40 paresh: it's impossible to get notifications without GCM Mar 24 18:44:42 Sorry. Mar 24 18:44:54 justJanne, :( thanks for the confirmation Mar 24 18:44:55 paresh: I've done it so many times, using C# loops and pushsharp Mar 24 18:44:56 justJanne has it right: Under the new battery models (doze in M and aggressive/constant doze in N), only GCM high priority can wake an app up. GCM or nothing. Mar 24 18:45:14 also once C2DM turned into GCM nearly all push frameworks turned into api wrappers around ios and gcm, not many independent ones Mar 24 18:45:38 yea Mar 24 18:45:47 guideX, PushSharp is a api wrapper around GCM Mar 24 18:46:04 and other proprietary services Mar 24 18:46:18 what's worng with that Mar 24 18:46:20 just wondering Mar 24 18:46:22 paresh, dragorn: I'm personally involved because we were developing our own system (as we are an open source app, don't host servers for our app ourselves, and wish to operate under EU privacy rules) Mar 24 18:46:22 if you can exempt yourself from battery saving you can use whatever, but that's not viable for an app with normal users Mar 24 18:46:24 no likey c#? Mar 24 18:46:32 So I filed complaints, and complained to Google. Mar 24 18:46:43 paresh: you can make your own webservice using it, and then you have your hosted solution Mar 24 18:46:45 and you wrote it Mar 24 18:46:53 dragorn: you can't even do that. That only exempts you from appstandby. Mar 24 18:47:03 just some ideas Mar 24 18:47:14 I know you want someone to do it for you, but meh, just build one,m it's ez Mar 24 18:47:18 The only way to get around Doze is by being a priviledged system (/system/priv-app) app Mar 24 18:47:27 I tried everything. Mar 24 18:47:52 thats depressing Mar 24 18:47:58 Sure, we could just root the devices we are being installed on and disable Doze for our app, which should be easy on non-nexus devices, Mar 24 18:48:09 (Considering the recent root exploits) Mar 24 18:48:17 But that would never work on the play store. Mar 24 18:48:25 yea Mar 24 18:48:36 And forcing Google to change their behaviour and pay damages could take years. Mar 24 18:48:42 paresh: so easy a caveman could do it Mar 24 18:49:05 guideX, yes I know that :) heh Mar 24 18:49:33 guideX: no, getting around Doze isn't easy. And I say that as someone who reimplemented Qt's whole slot/signal system with cross-device signals on Android for an app. Mar 24 18:50:16 justJanne, he is talking about server side thing Mar 24 18:50:35 justJanne: yeah, I was suggesting to paresh to make a wcf service for his push notifications, using push sharp with c# Mar 24 18:50:39 anything which implements XMPP or some messaging protocol Mar 24 18:50:46 and then he can do push's to his android's Mar 24 18:50:52 and ios, and winphone, etc Mar 24 18:51:01 yea and that uses GCM Mar 24 18:51:25 but me and justJanne were talking about removing GCM and using some other service Mar 24 18:51:30 ah ok Mar 24 18:51:34 I wasn't aware of that I'm sorry Mar 24 18:51:44 it's okay :) Mar 24 18:53:30 hello all, does somebody knows if its possible to debug an inapp buy process within the android studio Mar 24 18:55:44 guideX: PushSharp would still require using GCM, so for them it’s out Mar 24 18:58:22 justJanne, what open source were you developing that system for ? Mar 24 19:03:08 paresh: an open source IRC client ;) Mar 24 19:03:34 justJanne, named ? Mar 24 19:03:42 QuasselDroid, the Android client for Quassel, specifically. I've started updating and rewriting the 2yo Android app recently, and wanted to add push notifications. Mar 24 19:03:57 I see Mar 24 19:04:01 Quassel is a bouncer with a seperate protocol. Mar 24 19:04:08 Clients for all major platforms. Mar 24 19:04:18 I was planning on writing an irc client Mar 24 19:04:31 Why a seperate protocol? Simple, to offer seamless loading of old messages on all platforms, Mar 24 19:04:53 and I can't write more currently as typing on this phone hurts physically. Mar 24 19:05:34 lol Martin "Java Sucks" Sandsmark Mar 24 19:05:45 looks nice ;) Mar 24 19:08:18 Is anyone here familiar with indexing columns in a database? I'm using sqlcipher and according to the docs "any columns that are used for searches should be indexed". In a DB Query what columns are the "search columns" in a query? Is it after the SELECT or after the WHERE? Mar 24 19:09:14 eghdk: there's an #sql channel Mar 24 19:10:57 Is there a Gson for xml or something similar ? How am I going to convert xml data to pojo classes in Android ? Mar 24 19:13:18 guideX: Okay, I tried once there before without too much help, but I tried again. Thanks Mar 24 19:16:25 I just figured out that anything like front end in OnCreate will crash my android app Mar 24 19:17:23 need to put it at the bottom lol Mar 24 19:17:27 alot of wasted time Mar 24 19:17:34 (the bottom of onCreate) Mar 24 19:18:38 probably my RecyclerView and other experiments from yesterday worked fine Mar 24 19:18:39 oh well Mar 24 19:19:29 paresh: I’m justJanne / Janne Koschinski, took over maintenance earlier this year. sandsmark stopped working on it a long time ago. Mar 24 19:19:55 justJanne, looking forward to contributing to this ;) Mar 24 19:20:09 paresh: then look at QuasselDroid-ng - a full rewrite of the android app. Mar 24 19:20:30 sure Mar 24 19:20:44 Also check us out in #quassel, #quasseldroid, #quassel.de, #woboquassel (iOS), #quassel-draft (future versions and webclient), #quassel-irssi (irssi-plugin) Mar 24 19:21:11 guideX: you just need to have it after setContentView and after any findViewById or any ButterKnife.bind calls. Mar 24 19:23:22 <[twisti]> justJanne: is quassel core like a BNC ? Mar 24 19:23:54 [twisti]: yes – but to discuss that topic, please come to #quassel instead – this chat is purely about android app development ;) Mar 24 19:26:12 justJanne: now I know :D Mar 24 19:26:26 justJanne: was so upset yesterday dealing with the unknown error Mar 24 19:26:50 the whole time I suspected the position of the code was to blaime, but did nothing about it... slept on it, fixed in 5 minutes Mar 24 19:27:05 now dev is speeding along again :D Mar 24 19:27:53 guideX: btw, check out ButterKnife to save time next time ;) Mar 24 19:28:02 it’s from the amazing JakeWharton Mar 24 19:28:21 I'll check it out thanks Mar 24 19:29:35 eghdk start with the columns in where Mar 24 19:33:13 muthu: THANKS Mar 24 19:38:20 justJanne: Here’s a start: http://www.nytimes.com/2016/03/25/technology/google-fined-by-french-privacy-regulator.html?ref=technology&_r=1 Mar 24 19:40:09 s73v3r: not really, that’s a process ongoing since 2014. Mar 24 19:40:11 sadly. Mar 24 19:41:58 damn it, trader joe's chocolate contaminated with lead and cadmium :( Mar 24 19:42:02 * g00s fucked Mar 24 19:42:18 sucks. guess we’ll send flowers Mar 24 19:43:38 g00s: where? please link Mar 24 19:43:53 justJanne http://www.asyousow.org/our-work/environmental-health/toxic-enforcement/lead-and-cadmium-in-food/ Mar 24 19:44:06 quite a few there Mar 24 19:45:53 i suspect i'll die from shitty technology before contaminated chocolate though Mar 24 19:46:22 g00s: that’s weird. Especially that they don’t list levels directly... Mar 24 19:46:43 okay, their report doesn’t contain anything either. Mar 24 19:46:44 great. Mar 24 19:48:46 Interesting: Don’t buy chocolate made from chocolate plantages in southern america, as there the soil contains higher amounts of cadmium, which can go over the legal limits of the EU and California. Mar 24 19:49:37 yeah Monsanto likes to push their pesticides all over the place Mar 24 19:49:45 those fuckers Mar 24 19:49:48 No, not due to pesticides. Mar 24 19:49:56 the cadmium levels are naturally occuring. Mar 24 19:50:18 But it’s also increased through fine particle emissions and fertilisers. Mar 24 19:50:50 Funnily, VWs cars emitted far less cadmium than any competing cars - but in the trade off produced more NOx Mar 24 19:52:13 justJanne oops , you are right. i was thinking of arsenic Mar 24 19:52:24 arsenic makes lead look like a vitamin Mar 24 19:52:31 Indeed. Mar 24 20:34:59 Can someone explain to me how they'd go about getting a range of times Mar 24 20:35:29 So say you have a) opening time and b) closing time, how would you go about getting a list of the times including the opening and closing time, along with the times in between Mar 24 20:35:51 with each item on the list being 1 hour different from the one before Mar 24 20:35:51 markyosullivan: well, try using threetenabp, Mar 24 20:35:55 oooh Mar 24 20:35:59 well, that is kinda easy. Mar 24 20:36:21 Say you have a date object at start, and a date object at end. Mar 24 20:36:29 create a Calendar object from the start object, Mar 24 20:36:39 increment its hour field, Mar 24 20:36:57 E.g. 09:00, 10:00, 11:00, 12:00 if you've been given 09:00 as start and 12:00 as end Mar 24 20:36:57 I've got the code written out but it seems like it just loops and causes the app to crash Mar 24 20:37:00 and do this until the calendars time is after the end Mar 24 20:37:08 markyosullivan: never add with dates, btw. Mar 24 20:37:08 That's what I did Mar 24 20:37:09 :s Mar 24 20:38:42 Hold on, I'll pastebin my code Mar 24 20:39:26 markyosullivan: if you add dates, have you thought about daylight savings time? Mar 24 20:39:26 Was thinking I was doing too much work in my main thread so created an asynctask for it Mar 24 20:39:27 same issue Mar 24 20:39:49 or about the 61second minutes that happen every now and then? Mar 24 20:40:15 http://pastebin.com/3UpgPJuL Mar 24 20:40:21 61 second minutes?! Mar 24 20:40:22 What Mar 24 20:40:28 leap second Mar 24 20:40:33 Yup, those exist, to balance earths rotation slowing down Mar 24 20:40:40 never do time yourself, you’ll always do it wrong Mar 24 20:40:45 :( Mar 24 20:41:09 I was just trying to get a list of opening hours, thought it'd be simple Mar 24 20:41:25 time is never simple Mar 24 20:41:41 Have I done anything wrong in my code? Mar 24 20:42:14 Object comparison Mar 24 20:42:28 What about it SimonVT? Mar 24 20:42:36 That's what you're doing wrong Mar 24 20:42:43 It works if I use an if statement though? Mar 24 20:42:55 I doubt it Mar 24 20:43:00 Ah Mar 24 20:43:07 I'm comparing two date objects Mar 24 20:43:09 why do you need these in a list? Mar 24 20:43:11 instead of two strings Mar 24 20:43:12 You're comparing two Date objects.. Mar 24 20:43:24 You wouldn't use != with Strings either Mar 24 20:43:40 That's how you compare primitives or object instances.. Not equality Mar 24 20:44:02 Unless I changed the variables I was using Mar 24 20:44:02 equals() Mar 24 20:44:02 gotcha Mar 24 20:44:08 Or, compare milliseconds Mar 24 20:44:42 markyosullivan: I’m working on something for you ;) Mar 24 20:44:47 Creating Date objects is unnecessary Mar 24 20:44:51 Really? Mar 24 20:45:08 Thank you justJanne Mar 24 20:45:54 I thought it would have been easiest to just add an hour to a date object, convert that to string, add it to ArrayList and iterate until the startingHour is the closingHour Mar 24 20:46:14 what is your actual end goal? Mar 24 20:46:40 why do you need a list of strings of hours? Mar 24 20:47:04 markyosullivan: use http://hastebin.com/bukufipizi.java Mar 24 20:47:06 Reservation system Mar 24 20:47:21 that solves the issue in the easiest way to get a set of date objects. Mar 24 20:47:32 shouldn’t you just need a start time and an end time for that? Mar 24 20:48:35 s73v3r: well, maybe he wants to offer a list of hours with a custom time picker using a spinner? Mar 24 20:48:41 Yeah that's what I'm going to specify and then using that I work out all the times which are available and populate a list of cards using the list of times Mar 24 20:48:42 I mean, that is a possible use case. Mar 24 20:48:47 unusual, but possible. Mar 24 20:49:23 Or is there an easier approach for this? Mar 24 20:49:31 justJane what is hastebin? Mar 24 20:49:41 markyosullivan: the same as pastebin, but with a better UI Mar 24 20:49:48 I have an issue with a ViewPager that can't seem to update its pages, has anyone worked around that before? I can provide some background Mar 24 20:50:10 Also if I have them stored as strings, it means I can store them on Firebase Mar 24 20:50:13 interestingly, I rarely see java devs use the time APIs properly, or see them use fallthrough in switch properly, or see them use the evil stuff like labeled loops or use the other array syntaxes, like public byte []list; or public byte list[]; Mar 24 20:50:31 and almost every code I saw reimplemented do {} while () T_T Mar 24 20:50:35 Play store on this tablet kept crashing when I was typing, so I clicked the mic to use voice input and said ‘File Browser’ into the tablet a couple of times. Mar 24 20:50:53 officemate —> hilarious laughter. Mar 24 20:51:20 justJane - start.before(end)? Mar 24 20:51:21 I say: if voice input is generally worthless, at least it’s an alternative if other input methods aren’t working ;) Mar 24 20:51:30 I have a GridView with a fixed number of items, I can click a cell to grab info for that row from the database, and launch a FragmentActivity with a fragment . It's set to use a ViewPager with a FragmentStatePagerAdapter, and the first page loads just fine, but every page in the ViewPager is identical to the one that loads first. Mar 24 20:51:34 markyosullivan: Firebase doens’t have a date type? Mar 24 20:51:48 or at least a number type where you could store unix timestamps? Mar 24 20:51:51 Objects can't be stored as dates I don't think Mar 24 20:52:19 I'm creating objects equal to dates, then the hours as objects within the date object Mar 24 20:52:54 markyosullivan: ever thought of just storing the date in ISO format? Mar 24 20:53:05 2016-24-03T21:53+0100 Mar 24 20:53:22 that sounds a lot simpler Mar 24 20:54:03 Never thought about that Mar 24 20:54:04 calendar <-> ISO is a cheap conversion, and long <-> instant or long <-> date is cheap. Mar 24 20:54:11 depending on what you want to use, choose one. Mar 24 20:55:13 "We can pass set() a string, number, boolean, null, array or any JSON object" so that's what can be stored in Firebase Mar 24 20:55:32 so you’re fine Mar 24 20:55:51 You guys know some good community for finding developers to partner up with? If there are such communities. Mar 24 20:55:59 https://github.com/pfn/android-sdk-plugin/commit/acf65db376b779c464dfd53717b91c253db6c088#diff-ba8314657ab47d880bd4193089439ec9 Mar 24 20:56:04 weee, added new goodies to my build Mar 24 20:56:15 markyosullivan: ever thought of just using a normal ORM? Mar 24 20:56:54 now I can just TR.string.somestring.value Mar 24 20:57:00 and get the string value from resources automatically Mar 24 20:57:02 firebase has some advantages. near instant propogation is one Mar 24 20:57:15 or TR.anim.slide_in_animation; and get an Animation object Mar 24 20:57:51 pfn: that’s so evil T_T Mar 24 20:57:57 evil? nah Mar 24 20:58:01 just plain awesome Mar 24 20:58:08 Now I’ll have to add a hacky java precompiler plugin to do that, too Mar 24 20:58:20 or I could probably switch to kotlin or groovy Mar 24 20:58:26 can't do it in kotlin Mar 24 20:58:31 their type system is garbage Mar 24 20:58:36 justJanne what you mean ORM? Mar 24 20:58:47 well, not as concisely at least Mar 24 20:58:52 Bernzel_: There's something for that on Reddit. You a dev yourself? Mar 24 20:59:10 markyosullivan: an ORM is a system that allows you to annotate some objects and they automatically get a .save() .delete() .findById() method, so you can store/delete/ Mar 24 20:59:15 read them from a database Mar 24 20:59:16 s73v3r: What you mean instant propogation? Mar 24 20:59:36 markyosullivan: Oh okey, I'll take a search. Yeah , I'm fed up with working on the iOS version and want to focus mainly on Android. Mar 24 20:59:37 Change something on one device, and it’s spread to the other devices extremely quick Mar 24 20:59:45 ooh, you use it for that? Mar 24 20:59:49 woah, firebase is weird. Mar 24 20:59:53 Bernzel_ one sec, I'll look it up Mar 24 21:00:00 it’s practically a "click yourself together an API and a shitty DB" Mar 24 21:00:05 the IO demo they gave was a drawing app, where it would show the drawing on the other app in near real time Mar 24 21:00:22 Firebase is fantastic for what I'm building Mar 24 21:00:23 s73v3r: that’s not hard at all. Mar 24 21:00:47 it is hard to get right Mar 24 21:00:53 and with the speed they’ve got Mar 24 21:00:58 I've had no major issues with it at all Mar 24 21:00:59 And I can say that, after spending 4 months on a framework to instantly propagate messages like that. Mar 24 21:01:13 While working with legacy software Mar 24 21:01:17 (fucking Qt) Mar 24 21:01:18 Bernzel_: https://www.reddit.com/r/BuildAnApp/ Mar 24 21:01:28 go watch their demo from IO last year Mar 24 21:01:41 I've seen people on there looking for business partners, devs, etc so maybe it might be worth a try seeking a partner on there? Mar 24 21:01:43 markyosullivan: Awesome thanks Mar 24 21:02:19 There's a couple guys in here that use Firebase Mar 24 21:02:34 I remember them saying I was another one, so there's definitely at least a couple :D Mar 24 21:02:49 "that's not hard at all" "spent 4 months on a framework to do that" Mar 24 21:03:12 Well, I’m just a normal compsci student. Mar 24 21:03:23 experienced devs can probably do it in a few weeks. Mar 24 21:04:00 I'm a compsci student :) Mar 24 21:05:44 pfn: yeah I thought that was a bit funny :P Mar 24 21:05:44 I'm just glad I didn't pick to use Parse to power my app instead of Firebase Mar 24 21:05:51 SimonVT: Spot on with the object comparison, works a treat now! Mar 24 21:06:02 Also thanks everyone who helped out not just Simon Mar 24 21:06:29 Parse wouldn’t have been a bad idea. You’d just have to migrate to the open source, self hosted Parse Mar 24 21:06:34 ^ Mar 24 21:06:43 but that had no authentication yet. Mar 24 21:06:53 although a selfhosted Parse might be better in the end anyway, Mar 24 21:06:55 Doubt I'll need to use an AsyncTask for this now lol Mar 24 21:06:56 there have also been a couple dozen services springing up offering to host that Mar 24 21:07:00 considering the insane cost differences. Mar 24 21:07:19 Just going from DO to pyhsical servers cut my server costs by 60% Mar 24 21:07:29 Yeah but I don't own a server Mar 24 21:07:33 or have server space Mar 24 21:08:04 so? rent it Mar 24 21:08:10 I'm a student :( Mar 24 21:08:12 moneys Mar 24 21:08:13 so? Mar 24 21:08:14 500GB storage, 2GB RAM, 2.4GHz dual core is what I get for my 6$ a month ;) Mar 24 21:08:21 Flip Mar 24 21:08:26 Host your own? Mar 24 21:08:27 which allows me to store a lot more than previously. Mar 24 21:08:28 Who's that with justJanne? Mar 24 21:09:09 * pfn just uses appengine for free Mar 24 21:09:15 markyosullivan: OVH’s gaming server line – but I only use it for data that I don’t rely on. For better reliability, check out OVH’s business lineup or Hetzner. Mar 24 21:09:33 pfn: free? How many users and how much data do you have? Mar 24 21:09:55 NoirAvlaa, I don't want to run a machine in my room constantly :D Mar 24 21:10:03 my usage is pretty low, a few hundred thousand users doing update checks once a day Mar 24 21:10:15 *shrug* will it have a lot of users? Mar 24 21:10:15 not much in the way of data Mar 24 21:10:30 pfn: ah, that’s not too bad. Mar 24 21:10:35 Like, just throw it on a raspi if you just need it for a small uni project Mar 24 21:10:41 Bloody hell, that's good Mar 24 21:10:44 appengine has pretty big quotas though Mar 24 21:10:46 pfn: in fact, you could do that with github static pages Mar 24 21:10:59 but that's static Mar 24 21:11:09 pfn: well, for update checks, you can modify it. Mar 24 21:11:14 serve a piece of json. Mar 24 21:11:15 NoirAvlaa: Being honest, I'm not sure how I'd set up the server code for an Android app Mar 24 21:11:15 you get 1gb per day of bandwidth Mar 24 21:11:25 28 cpu hours Mar 24 21:11:30 { version: "4.2.0", url: "..." } Mar 24 21:11:32 The same way you set it up for anything else :P Mar 24 21:11:36 and 5gb free Mar 24 21:11:40 and you’re set with update checks, pfn ;) Mar 24 21:11:45 But fair enough :p Mar 24 21:11:46 5gb of storage, rather Mar 24 21:11:48 In fact, you could even check it into version control. Mar 24 21:11:57 yeah, no Mar 24 21:12:00 don't tell me what I need Mar 24 21:12:30 Well, I’m just saying, if it fits into free appengine, it probably doesn’t require a 6$ server either ;) Mar 24 21:12:36 nor firebase. Mar 24 21:12:55 lots of stuff fits into free appengine Mar 24 21:12:59 it's pretty huge Mar 24 21:13:04 and github static pages don't suffice Mar 24 21:13:17 stuff with less than 1GB of bandwidth and 5GB of data? Mar 24 21:13:48 that would be exclusively tasks with low input, low output, low cache costs, and thanks to 28h CPU, only very limited CPU usability. Mar 24 21:14:11 That doesn’t fit any CRUD for any backend, nor any CPU-heavy task unable to fit on devices. Mar 24 21:14:29 only thing I can imagine is as message queue or relay. Mar 24 21:14:45 (which update checking and error relaying matches, too) Mar 24 21:39:46 Hey in Android studio when I debug from another activity how do i reset it to debug from the right start activity/ Mar 24 21:39:56 Do I just debug for there or is there a reset thing? Mar 24 22:00:59 28h of cpu is a shitton Mar 24 22:01:00 for 1 day Mar 24 22:01:04 that's a full core's usage Mar 24 22:01:17 I can guarantee that no place you're getting $6/mo from is giving you even part of a cpu Mar 24 22:01:35 and 1gb of bandwidth per day? Mar 24 22:02:14 pfn: 1TB bandwidth a month. Mar 24 22:02:26 It’s a dedicated system, with setup costs around 30$, though ;) Mar 24 22:02:45 anyway, don't need that much bandwidth for most apps Mar 24 22:02:48 standard atom + smallest RAM chip they could find + cheapest HDD they could find in a rack. Mar 24 22:03:04 yeah, 28h of cpu is way better than any atom Mar 24 22:03:13 even if it's dedicated Mar 24 22:03:32 well, the latest atoms are good enough for my use case. Mar 24 22:03:57 "limited cpu usability" when you have > 1 day of cpu time per day Mar 24 22:04:03 running currently several chat bots, some bouncers, a jenkins, some websites, etc. Mar 24 22:04:08 eh, pfn, no. Mar 24 22:04:15 that’s "> 1 core per day" Mar 24 22:04:31 1 core of anything google has in their dc is better than any atom Mar 24 22:04:33 as soon as you do anything concurrent, you eat your time away instantly. Mar 24 22:04:49 that's fine, it's still plenty of cpu time Mar 24 22:05:48 g00s: Just for future reference. Sqlbrite did the job nicely for listening to a ContentProvider and updating UI with RxJava. Mar 24 22:06:03 free tier Mar 24 22:06:06 codepete nice! Mar 24 22:06:40 appengine, of course, isn't suitable for things like running a bnc, etc. Mar 24 22:06:48 but for web services, you can't beat the deal you get Mar 24 22:07:11 codepete i looked at that once, but didn't see how to use Uri with it Mar 24 22:07:19 yeah, but I have to look at serving a BNC for tenthousands of users – transmitting notifications for every fucking private message received. Mar 24 22:07:43 like I said, different use-case Mar 24 22:08:04 ten thousands? you have more users than freenode has users? Mar 24 22:08:16 per server Mar 24 22:08:32 Well, the issue is having one central server, due to the whole notification debacle. Mar 24 22:08:32 each node only carries about 5k users tops these days Mar 24 22:08:52 keeping the users decentral on the thousands of 2-3 user servers, like we used to, would be amazing. Mar 24 22:09:09 but the legal path is taking its time. Mar 24 22:09:30 g00s: It wraps the ContentProvider with sqlBrite.wrapContentResolver(contentResolver) then you just call briteContentProvider.createQuery(). The parameters are the same as writing a normal call for ContentResolver. It returns a Observable that you can subscribe to. To get a cursor from Query object you just call run(). Mar 24 22:09:44 > No single static data file may be larger than 32MB. Mar 24 22:09:44 > Total storage: 1GB Mar 24 22:09:50 that’s painful for free GAE Mar 24 22:10:41 g00s: No more Loaders, LoaderCallback, CursorLoader. Its pretty sweet. Mar 24 22:11:08 codepete: or you can use an actual ORM for that? Mar 24 22:11:17 that's not painful at all Mar 24 22:11:22 you're joking Mar 24 22:11:31 there's no 1 single file that you need over 32gb in static storage Mar 24 22:11:34 and there's blob storage Mar 24 22:11:36 that you're ignoring Mar 24 22:11:45 32MB Mar 24 22:11:48 not 32GB Mar 24 22:11:53 32MB is easily reached. Mar 24 22:12:10 that’s a single PDF manual with graphics. Mar 24 22:12:28 which doesn’t ever belong into blob storage. Mar 24 22:12:34 justJanne: Yeah. I only decided to use the ContentProvider because it was required. So much boilerplate code. Mar 24 22:14:26 Is writing a tester for an app common practice? Mar 24 22:14:42 I'm talking about the androidTest thing I see in Android Studio Mar 24 22:14:45 related: has anyone here ever used RoboSpock before? Mar 24 22:15:02 And is there a way to do both on-device and robospock unit tests? Mar 24 22:20:07 yonatankoren: Tests are definitely recommend, but it can be a pain depending on how you architect your app. Mar 24 22:21:05 codepete: What exactly do they test? Mar 24 22:21:24 codepete: and yeah I could see how testing is very tricky, sometimes involving more creativity than making the app itself Mar 24 22:21:38 yonatankoren: There is a codelab that demonstrates MVP architecture and testing if you want to check it out https://codelabs.developers.google.com/codelabs/android-testing Mar 24 22:22:20 codepete: thanks for the link Mar 24 22:23:03 codepete: looks complicated lol Mar 24 22:23:40 yonatankoren: API Calls. Flow of application. Making sure your UI is responding correctly to user input or model. etc etc. Mar 24 22:29:18 Guys...I'm on 5.1 and it seems that I have to swipe up and then the pattern screen comes up instead of the pattern screen is shown straight away. I think this is rather "stupid" Mar 24 22:32:00 ReGiStRaS: well, welcome at Android. You have two choices: (a) be a good slave and do what Google wants, (b) modify android yourself and compile it from source. You can also use XPosed to modify it at runtime to do the same. Mar 24 22:32:00 For "accept whateevr google thinks it knows better about me than I do", press #android. For "I want to modify the OS", press #android-root Mar 24 22:32:10 er, 32mb, whatever Mar 24 22:32:16 there is no reason to have a single static file that is bigger than 32mb Mar 24 22:32:23 pfn: large PDFs, as I said. Mar 24 22:32:35 yeah, no Mar 24 22:32:37 you don’t want to store a user manual as blob, do you? Mar 24 22:32:56 and wtf would you be storing a user manual in appengine Mar 24 22:33:00 it's not a static storage host Mar 24 22:33:11 well, and now we get to the actual issue. Mar 24 22:33:12 see, you keep trying to find excuses that says "appengine is unusable" Mar 24 22:33:23 but it is absolutely usable for almost all use-cases Mar 24 22:33:25 with this concept I now need to pay a thousand services, all doing single things. Mar 24 22:33:34 pay a thousand? free tier Mar 24 22:33:35 done Mar 24 22:33:47 making mountains out of molehills Mar 24 22:33:55 That’s almost like is-positive-integer, which has 3 dependencies as npm module, and is used by 70'000 other npm modules! Mar 24 22:34:11 3 dependencies, two of which being "is-integer" and "is-positive"! Mar 24 22:34:22 no idea what you're talking about, but ok Mar 24 22:34:34 * pfn throws back on ignore list Mar 24 22:34:39 hexchat update cleared it for some reason Mar 24 22:34:41 a javascript module that’s equally badly designed. Mar 24 22:34:45 hmm Mar 24 22:35:07 "badly designed" Mar 24 22:35:16 wouldn't know badly designed if it whhacked you upside the head Mar 24 22:35:53 <|PiP|> I'm reading a JSON API that returns models. Performance-wise, is it better to map each JSON model to a Java model, or simply parse the JSON-Object at runtime and use the JSON-Object properties? Mar 24 22:36:14 Running a service that tells an app the latest version available and provides static storage shouldn’t require multiple services or any complex technology. Mar 24 22:36:18 doesn't matter Mar 24 22:36:21 use what is most comfortable Mar 24 22:36:35 gson is a little slow on large documents, but who cares, do it in the background Mar 24 22:36:52 Actually, can’t you just query your build server for the last stable build tagged in git as release? Mar 24 22:38:47 wouldn't it be easy to put apps latest version in GTM container Mar 24 22:38:55 no hosting of anything at all Mar 24 22:39:21 g00s: I suggested those ideas before, pfn said they were impractical for some reasons. Mar 24 22:39:25 huh? Mar 24 22:40:02 ok, I only saw a little of the conversation Mar 24 22:40:35 i was going to use GTM for my kill-switch :D Mar 24 22:40:46 no idea what gtm is Mar 24 22:40:54 google tag manager Mar 24 22:41:31 Is it possible to tell LinearLayoutManager to lay out elements by weight in a recyclerview? Mar 24 22:41:52 I want two elements to occupy equal space in the region of the RecyclerView Mar 24 22:42:17 rohan: that isn’t really possible – how would it work with 3, 4, + elements? Mar 24 22:42:24 g00s: killswitch? Mar 24 22:42:34 You can write your own layout manager, though Mar 24 22:42:59 p_l just general term, in case you need to inform the user of something out of band communication Mar 24 22:43:03 justJanne: um, I'd expect it to work just like LinearLayout usually would.. I think in a LinearLayout you can have 5 elements with zero width and different weights Mar 24 22:43:12 I'm finding one page for everything I want to do sufficient.. are there reasons why one page is not good? Mar 24 22:43:17 g00s: well, I was thinking more of remote device kill :D Mar 24 22:43:27 I feel like if I do multiple pages, I'll increase the apps complexity Mar 24 22:43:27 p_l maybe you had to change the package name, and people aren't aware, for example Mar 24 22:43:30 rohan: well, then use a linearlayout. Recyclerview is for long, scrollable list. Mar 24 22:43:44 guideX: now think about serving both 10" tablets and 3" phones ;) Mar 24 22:43:47 p_l oh yes, like remote car kill switch :D Mar 24 22:44:05 justJanne: I still need it to be scrollable Mar 24 22:44:32 rohan: wrap it in a scrollview? Mar 24 22:44:34 justJanne: I would still do like, panels and such on one page, maybe one for tablet? Mar 24 22:44:48 justJanne: oh interesting, that might work! thanks, I'll give that a shot Mar 24 22:45:25 g00s: I'm going to need a bunch of phone kill-switches :D Mar 24 22:45:31 GTM is cool because you can push out new values to a deployed app in realtime by futzing with the console Mar 24 22:45:46 without pushing new APKs, having to stand up servers for it to hit, etc Mar 24 22:45:57 but GTM is also horrible for users. Mar 24 22:46:12 justJanne oh, why ? Mar 24 22:46:12 And for tests, Mar 24 22:46:15 and for support. Mar 24 22:46:28 as now your server-side config becomes part of front-end support Mar 24 22:46:37 "why is that button not where it was yesterday?" Mar 24 22:46:46 lulz Mar 24 22:47:20 especially annoying when trying to use Google apps yourself >_> Mar 24 22:47:32 notification drawers disappearing or appearing over night, Mar 24 22:47:42 options jumping from drawer to action bar to bottom bar, Mar 24 22:47:49 widgets just disappearing Mar 24 22:48:06 I don’t want to be customer support for that debacle. Mar 24 22:48:06 >.> Mar 24 22:48:59 if you are going to do A/B testing its helpful - you want some people to see X and others to see Y Mar 24 22:49:17 thats kinda the whole point lol Mar 24 22:49:35 if you are going to turn your users into labrats by testing in production Mar 24 22:49:37 FTFY Mar 24 22:50:13 we're all labrats ... Mar 24 22:50:31 d/c so missed out on what all was said -.- Mar 24 22:50:35 no, usually labrats are getting paid for their job Mar 24 22:51:03 even ice cream taste testing is a well-paid job that can support a whole family. Mar 24 22:51:19 Sounds unhealthy though Mar 24 22:51:25 but tastey! Mar 24 22:51:28 justJanne well, at least here in the US we are all labrats when it comes to chemicals, among other things Mar 24 22:51:30 but unhealthy Mar 24 22:51:37 I feel an infinite loop coming Mar 24 22:51:54 imagine if every product of ice cream was tasting different, everyone testing slightly different values. Mar 24 22:52:27 and if the temperature in a room would vary constantly, testing what makes people more comfortable (nest obviously synced with your Android Watch) Mar 24 22:54:10 No, I pretty much like that my washing machine doesn’t randomly change its settings. Mar 24 22:55:55 lol Mar 24 22:56:17 mine only has 2 settings anyhow, off and "destroy clothes" Mar 24 23:03:46 stupid question, but can one use data binding in this example: I have s Java class with final static int X = 1 , static int Y = 2 ... etc Mar 24 23:04:20 and then in resource have {@MyClass.X} Mar 24 23:04:39 or something like that - such a PITA keeping preferences in sync with code constants Mar 24 23:04:45 never really found a good solution Mar 24 23:05:43 well, that wouldn’t help you much anyway, what if you add an option? Mar 24 23:05:55 i guess it would be @{MyClass.X} Mar 24 23:06:21 justJanne yeah it all sucks Mar 24 23:06:24 I’d personally love to be able to mark any static constant field as @Preference(R.plusId.…) or similar. Mar 24 23:06:37 or just use fucking enums for ids Mar 24 23:07:24 ListPreference entries / values are kinda pain; my values are code constants - but stupid thing saves them as strings, when then have to be parsed and converted to ints ugh Mar 24 23:07:44 its been like this since the beginning though Mar 24 23:07:53 well, there are better solutions. Mar 24 23:08:07 like writing your own key-value store ORM for android preferences ;) Mar 24 23:08:12 lol no Mar 24 23:08:20 for the uni project in the past month I hacked one together using reflection, Mar 24 23:08:33 but ideally I’d use something like code generation. Mar 24 23:09:31 we only needed enums, booleans, and floats and strings, so we were able to just match the type of the field, add a preference of the same type, and a matching preference UI field. Mar 24 23:09:58 so you had a java class like (pseudocode): Mar 24 23:10:15 hey, anyone know how to get a View's owning window? Mar 24 23:10:19 Window object Mar 24 23:12:26 g00s: http://hastebin.com/tegotiyexu.java Mar 24 23:12:31 like that we had our code, Mar 24 23:12:37 and everything else was done via reflection Mar 24 23:13:09 Napalm does the android binding stuff just work for layouts Mar 24 23:13:10 you could do new AppPreferences().setContext(this).useGlobalPreferences().renderToPreferenceFragment(this); Mar 24 23:13:28 g00s: yus Mar 24 23:13:40 Napalm so I can't hijack it to substitute values from Java into my preferences.xml Mar 24 23:13:52 or new AppPreferences().setContext(this).useGlobalPreferences().load().getRotation() Mar 24 23:15:18 tbh, reflection is probably still the best way Mar 24 23:24:10 when was the last time anyone saw TacticalJoke ? Mar 24 23:26:26 anyone have a Motorola phone they can test my app on? Mar 24 23:47:55 !s iron man Mar 24 23:48:26 !s iron man Mar 24 23:51:01 I see justJanne doesn't like A/B testing Mar 24 23:52:19 What's the best way to do A/B testing for Android? Mar 24 23:52:32 Zharf: I don’t like A/B testing *in production* ;) Mar 24 23:53:35 A/B testing otherwise makes no sense Mar 24 23:55:12 A/B testing by definition is trying different things to see how it affects users' usage of whatever's being tested Mar 24 23:55:27 with limited sample size the results aren't reliable Mar 24 23:56:40 Can I use JsonDeserializer with Retrofit? Mar 24 23:57:08 Retrofit is format agnostic Mar 24 23:57:16 It cares not what you use Mar 24 23:57:56 Ok, so I understand I can make a class that implements JsonDeserializer, but how do I apply that deserializer to Retrofit.Builder Mar 24 23:58:19 Right now, im just doing .addConverterFacroty( GsonconverterFactory.create() ) Mar 24 23:58:30 Well Retrofit doesn't care about it. Gson does. Mar 24 23:58:42 So I can apply a JsonDeserializer to Gson? Mar 24 23:59:45 Like this: http://pastie.org/private/sbnqzqkkshvhnvbubow1tq Mar 24 23:59:49 If you can get Gson to care about it, then you can get the GsonConverter to care about your Gson, then you can get Retrofit to use your Converter. Mar 25 00:00:28 JakeWharton, did you see the snippet I posted above? Mar 25 00:00:35 Zharf: So no A/B testing is the best? :D Mar 25 00:01:54 I have the Gson instance, but I need to apply it to Retrofit.Builder, thats what I am not sure how to do Mar 25 00:02:35 Well Retrofit only cares about converters Mar 25 00:02:51 So I have to get a GsonConverter from that Gson instance? Mar 25 00:03:06 Other way around Mar 25 00:03:21 I created my icon at 512x512 with 2 pixel lines, imported to AndroidStudio, used Gimp to manually correct blurred lines for the downscaled images. Mar 25 00:03:31 I have to get a Gson instance from GsonConverter JakeWharton ? Mar 25 00:03:32 Is this the wrong way to go? Mar 25 00:04:01 When displayed on the home screen, some of the lines are missing. Mar 25 00:06:33 JakeWharton, if I have a class that Implements JsonDeserializer, can I apply that to Retrofit.Builder? Mar 25 00:07:25 No Mar 25 00:07:44 markyosullivan, if you want to get some results but don't know what makes users use your application like you wish them to, I don't see a much better way Mar 25 00:07:59 Hmm, basically heres the situation, I have a response returning {"stauts","true"} or "false", and I want to parse that string into a boolean Mar 25 00:08:12 I was told I need a custom Deserializer for this to work w retrofit Mar 25 00:09:04 Retrofit doesn't care about the serialization format you are using Mar 25 00:09:17 So this has to do with Gson Mar 25 00:09:19 Gson is the one you need to tell about your deserializer Mar 25 00:09:29 But I need to tell Retrofit about Gson right? Mar 25 00:09:55 Yes Mar 25 00:10:29 Would I do that with .addConverterFactory()? Mar 25 00:10:56 hey guys... so i have an activity that starts another activity via intent... when the child activity finish()'s, i need the parent activity to like.. rerender or something. how can i accomplish this, triggering the parent activity to do an action? Mar 25 00:11:06 Yes. But that doesn't take a Gson instance, right? Mar 25 00:11:12 Correct Mar 25 00:11:24 It takes a fFactory Mar 25 00:11:27 Factory* Mar 25 00:11:32 keady_: startActivityForResult Mar 25 00:11:39 So you need a converter for Gson and to tell that converter about the Gson instance you want it to use. Mar 25 00:11:44 orbyt_, i'll take a look. thanks Mar 25 00:12:07 Nevermind, I found out that Trebuchet was at fault for scaling my icon incorrectly. Mar 25 00:12:33 So I need a converter, is that what is going to parse the string into a boolean? Mar 25 00:14:15 Gson is doing that. The converter is what takes the raw response and passes it to Gson and vise versa for serializing request bodies. Mar 25 00:15:00 But by default Gson will not parse my "true" / "false" string into a boolean, that requires a custom JsonDeserializer? Mar 25 00:17:37 Do I need to write a custom converter? Mar 25 00:17:54 No Mar 25 00:18:08 Ok, sorry I'm just a bit confused as to how to make this happen Mar 25 00:18:08 And correct, Gson does not do that by default Mar 25 00:18:29 So since it doesnt do that by default, I need to write a class that implements JsonDeserializer? Mar 25 00:18:52 Or TypeAdapter / TypeAdapterFactory Mar 25 00:18:58 Which would be better Mar 25 00:19:05 JsonDeserializer is easier Mar 25 00:19:34 Ok, so I have that Mar 25 00:19:41 Now I want to use it Mar 25 00:19:44 Thats where Im lost... Mar 25 00:21:40 Wait... Mar 25 00:21:44 I may have gotten it Mar 25 00:22:29 JakeWharton, would this work? http://pastie.org/private/1nvvsgmsfb3jnktbbrka Mar 25 00:24:15 Yes Mar 25 00:24:33 No way haha Mar 25 00:24:35 cool Mar 25 00:24:57 So what is a "Factory" Mar 25 00:25:06 As in GsonConverterFactory Mar 25 00:26:29 A thing that creates instances Mar 25 00:26:48 In this case, it creates instances of GsonConverters Mar 25 00:27:18 But .addConverterFactory() accepts a Factory type Mar 25 00:27:46 Shouldnt it accept GsonConverter Mar 25 00:27:50 No Mar 25 00:28:16 It wants to create many instances Mar 25 00:29:05 So basically in my Callback I am going to get the item that the custom deserializer I applied created Mar 25 00:29:31 Yes Mar 25 00:30:18 Interesting Mar 25 00:30:32 Thanks for all the help, been amazing Mar 25 00:30:58 Im still a bit confused about the .addConverterFactory method though Mar 25 00:31:06 Why does it accept type Factory Mar 25 00:31:26 When I am passing it a GsonConverterFactory Mar 25 00:31:32 Oh Mar 25 00:31:37 GsonConverterFactory extends Factory Mar 25 00:33:03 Thanks again JakeWharton, sure I'll be back :) Mar 25 00:48:58 so, I can't seem to get gradle to generate a new install task for my custom buildType — anything special I need to do? Mar 25 00:49:33 ah nvm Mar 25 01:03:47 How well does EditText handle large amounts of text. For example, 1MB Mar 25 01:05:29 haha i didn't know Dijkstra said “Object-oriented programming is an exceptionally bad idea which could only have originated in California.” Mar 25 01:08:31 devdean probably ... not a good idea. it has a limit, i can't remember what it is though Mar 25 01:08:58 g00s: wonder which oop it is about, though Mar 25 01:09:06 and a TextView with 1mb test will probably be slow as shit too Mar 25 01:09:12 *1mb text Mar 25 01:11:06 g00s Shouldn't it be buffered? i.e. keep the text in an array and only try to render the visible text Mar 25 01:11:18 Is that too much to keep in system memory? Mar 25 01:11:32 devdean 1mb buffer isn't bad, but it has to layout the whole thing Mar 25 01:40:33 has anyone worked with a device manufacturer to have an app signed with a system certificate before? Mar 25 01:40:49 I’m wondering whether there are gotchas or considerations / downsides to think about. Mar 25 01:41:25 I’d like to do something that may require INSTALL_PACKAGES permission. Mar 25 01:42:16 I can’t think of any reason not to ask for it, but I’ve never done it before Mar 25 01:47:47 <_Atom_> Hello, I'm getting a null pointer error when I try to display result of a text search in a newly created activity Mar 25 01:48:05 <_Atom_> i'm guessing the TextView isn't created till the activity is created Mar 25 01:48:59 <_Atom_> how can i display the results without crashing? Mar 25 01:49:05 have a code snippet? Mar 25 01:49:15 _Atom_ as long as you do it after setContentView it should be OK ... Mar 25 01:55:28 <_Atom_> g00s: i'm doing it after startActtivity(intent); Mar 25 01:55:45 <_Atom_> I guess i should call these methods in the onCreate of the activity Mar 25 01:58:59 yeah Mar 25 01:59:06 lol Mar 25 01:59:39 these things are async; the activity won't be started until some time later after startActivity() Mar 25 02:07:40 I'm confused about AS Design window... there is nothing to see, and I can not drag and drop components like I did last year... I do see the Text/preview system... but I would prefer to get the drag and drop.. whats going on? Mar 25 02:09:38 actually... more important... just to see what would happen, I changed from Stable Channel to Dev Channel...Nothing good happened... so I am trying to change back to Stable Channel.. and I cannot get anything to compile... help on that please... Mar 25 02:17:26 Please help here: http://android.stackexchange.com/questions/139643/google-now-not-speaking-or-executing-comand **** ENDING LOGGING AT Fri Mar 25 02:59:59 2016