(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| //wearversion | |
| //wearlog | |
| //wearvoiceinputenable | |
| //wearvoiceinputdisable | |
| //weargoogleapi | |
| //assert | |
| //pushassert | |
| //uplog | |
| //upcrash | |
| //switchnotificationstatus |
| package com.ryanharter.android.util; | |
| import android.content.Context; | |
| import android.content.SharedPreferences; | |
| /** | |
| * Keeps track of the number of app launches, and days since first launch, and | |
| * provides an easy way to determine whether you should show a rating prompt | |
| * or not. | |
| */ |
| /* | |
| * Copyright (C) 2014 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| public class ColorUtils { | |
| private static final double LM_RED_COEFFICIENT = 0.2126; | |
| private static final double LM_GREEN_COEFFICIENT = 0.7152; | |
| private static final double LM_BLUE_COEFFICIENT = 0.0722; | |
| public static int calculateRelativeLuminance(int color) { | |
| int red = (int) (Color.red(color) * LM_RED_COEFFICIENT); | |
| int green = (int) (Color.green(color) * LM_GREEN_COEFFICIENT); | |
| int blue = (int) (Color.blue(color) * LM_BLUE_COEFFICIENT); | |
| return red + green + blue; |
| #!/bin/bash | |
| # This is a wrapper for adb. If there are multiple devices / emulators, this script will prompt for which device to use | |
| # Then it'll pass whatever commands to that specific device or emulator. | |
| # Run adb devices once, in event adb hasn't been started yet | |
| BLAH=$(adb devices) | |
| # Grab the IDs of all the connected devices / emulators | |
| IDS=($(adb devices | sed '1,1d' | sed '$d' | cut -f 1 | sort)) |
| /* | |
| * Copyright 2014 Chris Banes | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software |
NDK (Native Develop Toolkit) is a toolchain from Android official, originally for users who writes native C/C++ code as JNI library. It's not designed for compiling standalone programs (./a.out) and not compatible with automake/cmake etc.
"Standalone" refers to two meanings:
By default, NDK uses android flavor directory structure when it's finding headers and libs, which is different from GNU flavor, so the compiler cannot find them. For Example:
| android.libraryVariants.all { variant -> | |
| def name = variant.buildType.name | |
| if (name.equals(com.android.builder.BuilderConstants.DEBUG)) { | |
| return; // Skip debug builds. | |
| } | |
| def task = project.tasks.create "jar${name.capitalize()}", Jar | |
| task.dependsOn variant.javaCompile | |
| //Include Java classes | |
| task.from variant.javaCompile.destinationDir | |
| //Include dependent jars with some exceptions |