Apps can programmatically identify likely device(s) of app developers.
It's due to the fact that app developers usually install their app many times. And, it's possible to watch for those app installs in Android.
Implementing an app that takes advantage of this requires ZERO permissions.
So, I've created two working proof-of-concept apps: One to programmatically identify developer devices, and one to identify those kinds of apps and stop them. Both are open source and can be found on GitHub, and the later one can be found on Google Play.
I'll explain shortly how this is done.
Imagine, if you are an app developer, then your device(s) can be programmatically identified and have special code ran for them and nobody else will experience the same issue or app changes.
Showing posts with label android. Show all posts
Showing posts with label android. Show all posts
2016-03-02
2015-03-02
Level Up - Android Dev: How to get started with Robolectric (Android testing)
I'm finally getting around to trying out a few different libraries that claim to make testing Android apps easier. First up is Robolectric.
For this quick walkthrough, I'm going to show how to start from scratch. You'll need no prior knowledge except for how to make a regular Android app.
In my GitHub repo: How to get started with Robolectric
~ Danial Goodwin ~
For this quick walkthrough, I'm going to show how to start from scratch. You'll need no prior knowledge except for how to make a regular Android app.
In my GitHub repo: How to get started with Robolectric
~ Danial Goodwin ~
2015-02-13
Level Up - Android Dev: OneTimeAlertDialog = Android AlertDialog that only shows once for a given key
Every single one of my apps need something like this. It's boring to explain in more details what's traditionally needed to make sure an AlertDialog is only shown once. Now, with this OneTimeAlertDialog.java, it's much easier to create new AlertDialogs that are only shown once.
/** Prompt that is only shown once to user. */
OneTimeAlertDialog.Builder(this, "my_dialog_key")
.setTitle("My Title")
.setMessage("My Message")
.show();
For something I use so often, I was surprised to not find a similar project on GitHub. So, I've added it: Android OneTimeAlertDialog
~ Danial Goodwin ~
/** Prompt that is only shown once to user. */
OneTimeAlertDialog.Builder(this, "my_dialog_key")
.setTitle("My Title")
.setMessage("My Message")
.show();
For something I use so often, I was surprised to not find a similar project on GitHub. So, I've added it: Android OneTimeAlertDialog
~ Danial Goodwin ~
2015-01-17
Level Up - Android Dev: How to get started with AndroidAnnotations (easy) (and build Chuck Norris app)
AndroidAnnotations is an open source framework for Android. Basically, you provide Java annotations for things, and the framework will auto-generate the necessary boilerplate code so you don't have to write it yourself. Runs at compile-time! (Read: No reflection or startup time impact) And, there's a lot of code AndroidAnnotations saves you from writing manually.
For example, want to run something in a background thread? Annotate the method with `@Background`. Want to run something in the main/UI thread? (rub some bacon on it) Annotate the method with `@UiThread`.
In this article, I provide a quick walkthrough for creating a very simple Chuck Norris facts app. I'll assume that you already have basic Android knowledge (and using Android Studio + Gradle). Then, at the end, I'll explain in more details some issues/gotchas I ran into while using AndroidAnnotations for the first time, and mention other goodies.
Getting started..
For example, want to run something in a background thread? Annotate the method with `@Background`. Want to run something in the main/UI thread? (rub some bacon on it) Annotate the method with `@UiThread`.
In this article, I provide a quick walkthrough for creating a very simple Chuck Norris facts app. I'll assume that you already have basic Android knowledge (and using Android Studio + Gradle). Then, at the end, I'll explain in more details some issues/gotchas I ran into while using AndroidAnnotations for the first time, and mention other goodies.
Getting started..
2014-12-06
Level Up - Android Dev: The default emulator is horrendously slow, use Genymotion!
Many years back when I built and published my first Android apps, I only tested them on the default emulator provided by Google. And, even now, the default emulator is still too slow for my liking. It doesn't allow me to properly test apps. So, I purchased physical devices so that I would never have to touch the Android emulator again.
Genymotion provides a different take on the Android emulator. I've known about it for at least a year, but never got around to trying it because of my really bad experience with the default emulator. I've always heard that it was much faster than Google's implementation, but I didn't think an Android emulator could ever be fast enough for me compared to my physical devices.
I'm always learning something new, and today was finally time for me to learn more about Genymotion and test just how much better it is.
Results: Excellent! So much of a great experience that I had to write this blog post about it! I should have tried Genymotion when I first heard about it, and this is my message to all Android devs to also try it out now!
Sidenote: I was going to compare the default emulator with the Genymotion emulator side-by-side, but it was taking too long to load for me, whereas Genymotion startup was a breeze of fresh air. It runs without any lag. It runs faster than my old API 17 device.
Another great benefit is that Genymotion provides system images for many of the most popular devices, including Samsung Galaxy, Samsung Note, HTC One, Nexus, and more. And, they have a very convenient plugin for Android Studio to launch the emulator.
TLDR: It's fast. I have to make sure I stress that because I didn't believe how fast it would be. Genymotion's Android emulator is much faster and better experience than the default Android emulator.
Here, I even saved enough time to write a quick walkthrough for getting started. ;)
Genymotion provides a different take on the Android emulator. I've known about it for at least a year, but never got around to trying it because of my really bad experience with the default emulator. I've always heard that it was much faster than Google's implementation, but I didn't think an Android emulator could ever be fast enough for me compared to my physical devices.
I'm always learning something new, and today was finally time for me to learn more about Genymotion and test just how much better it is.
Results: Excellent! So much of a great experience that I had to write this blog post about it! I should have tried Genymotion when I first heard about it, and this is my message to all Android devs to also try it out now!
Sidenote: I was going to compare the default emulator with the Genymotion emulator side-by-side, but it was taking too long to load for me, whereas Genymotion startup was a breeze of fresh air. It runs without any lag. It runs faster than my old API 17 device.
Another great benefit is that Genymotion provides system images for many of the most popular devices, including Samsung Galaxy, Samsung Note, HTC One, Nexus, and more. And, they have a very convenient plugin for Android Studio to launch the emulator.
TLDR: It's fast. I have to make sure I stress that because I didn't believe how fast it would be. Genymotion's Android emulator is much faster and better experience than the default Android emulator.
Here, I even saved enough time to write a quick walkthrough for getting started. ;)
- Go to Genymotion.com, click "Get Genymotion".
- Download the free version, you'll have to sign up and confirm your email. (It's quick and it's worth it!)
- Install it along with VirtualBox. For Windows users, they can bundle the two together in the download. For other, you'll have to install VirtualBox separately.
- If you try to run it now, you might get an error that says "genymotion virtualization engine not found. Unable to load VirtualBox engine". So, just restart your computer and that fixed it for me. Some others had to enable the virtualization feature in the BIOS.
- Run! Fast!
- Now, you can click run in Android Studio and you will see an option to load the app in the Genymotion emulator that is running.
Bonus: How to Install the Genymotion Plugin for Android Studio (and, the first time you click on the installed plugin button, you'll have to add the path to where you installed it. Windows default is "C:\Program Files\Genymobile\Genymotion". Mac default is "/Applications/Genymotion.app")
~ Danial Goodwin ~
2014-12-05
Level Up - Android Studio: How to Boost Productivity By Auto-Generating Getters and Setters
A best practice in Java is to encapsulate field variables by making them private and creating a "getter" and "setter" for each of them, as needed. Doing this with many fields can be a lot of boilerplate code to write. But, thankfully, modern IDEs, like Android Studio provide ways to auto-generate code so that you don't have to manually write it.
For example, if you have a class like the following:
public class MyClass {
private int mId;
private String mName;
}
Instead of manually writing each accessor (getter) and mutator (setter), go to the menu and click Code->Generate.. (hotkey `alt+insert), then choose the "Getter and Setter" option.
Done. That was fast. And, it will be just as fast with 20+ fields also.
But, wait! By default, Android Studio will include that "m" prefix (stands for "member" variable) in each of the generated method names, so you'll have method names like "setmId" and "getmId". There is a quick permanent fix for this also!
Go to File->Settings->Code Style->Java->Code Generation, then type a single "m" into the "Field", "Name prefix" field. Hit apply, then you are gone. All future code generations will take those "m" prefixes for field into account. Here's a screenshot to what this sentence means visually.
That's it for this post. There are lots of other useful code generators also. If you are doing mindless work, it's probably been automated (or should be). ;)
~ Danial Goodwin ~
For example, if you have a class like the following:
public class MyClass {
private int mId;
private String mName;
}
Instead of manually writing each accessor (getter) and mutator (setter), go to the menu and click Code->Generate.. (hotkey `alt+insert), then choose the "Getter and Setter" option.
Done. That was fast. And, it will be just as fast with 20+ fields also.
But, wait! By default, Android Studio will include that "m" prefix (stands for "member" variable) in each of the generated method names, so you'll have method names like "setmId" and "getmId". There is a quick permanent fix for this also!
Go to File->Settings->Code Style->Java->Code Generation, then type a single "m" into the "Field", "Name prefix" field. Hit apply, then you are gone. All future code generations will take those "m" prefixes for field into account. Here's a screenshot to what this sentence means visually.
![]() |
| So easy to save a lot of time with Android Studio |
That's it for this post. There are lots of other useful code generators also. If you are doing mindless work, it's probably been automated (or should be). ;)
~ Danial Goodwin ~
2014-11-17
Level Up - Android: How to Root Nexus 4 on Android Lollipop 5.0 (Easy)
In my last post, I explained how to flash Android Lollipop 5.0 system image to Nexus 4. After I did that to my own device, the next thing I did was root it, using fewer steps than that other post. ;)
This will be a quick walk-through for the steps I took to root my Nexus 4. These directions are extended from the site with the great "CF-Auto-Root" tool that we will use.
Prerequisites:
Walk-though for rooting the Nexus 4:
~ Danial Goodwin ~
![]() |
| Rooted Nexus 4 on Android Lollipop 5.0 |
This will be a quick walk-through for the steps I took to root my Nexus 4. These directions are extended from the site with the great "CF-Auto-Root" tool that we will use.
Prerequisites:
- I assume that your bootloader is unlocked. If not, please see my previous post for how to unlock the bootloader.
- I assume you have `adb` added to your environment variable PATH. If not, please see my previous post.
- I assume you are running Windows, but Max and Linux users will be able to use these general directions also.
Walk-though for rooting the Nexus 4:
- Download the LGE Nexus 4 Android 5.0 file from http://autoroot.chainfire.eu/#fastboot
- Unzip the file. You should see two folders and three files in that folder, one should be called "root-windows.bat".
- Connect your Nexus 4 device to computer, then run `adb reboot-bootloader` in your computer's terminal. This will bring your device to the "fastboot" mode.
- Make sure again that your bootloader is unlocked before proceeding (label found at bottom-left).
- Open your computer's terminal to where you downloaded and unzipped the file, and run `root-windows` (Mac and Linux users use your own variant). You should see a red Android if the process is working.
Congrats! When the script is done, it will reboot your device and your Nexus 4 will be rooted!
This process will install the Root Check app so that you can verify a successful root.
More info:
- I didn't have any trouble using these directions for rooting my Nexus 4, so if you have any troubles with the steps, then I'll try to help in my limited capacity.
- Previously, when I was running Android 4.4 rooted, I used ES File Explorer to browse the root directories. But, it didn't work in Android 5.0, so instead I am now using the Root Browser app successfully.
~ Danial Goodwin ~
Level Up - Android: How to Flash (Upgrade) Nexus 4 to Android Lollipop 5.0 (Easy)
If you have a Nexus 4, then you can have Android Lollipop now! Google recently released the factory image, and I'm now successfully running it (with root, which will be explained in a later post).
This will be a short walk-through because I assume you already have the tools needed, but just need the steps to get the flash done. If you have any questions, then please write a comment and I will update as necessary.
Congrats! When the script is done, it will reboot your device and Lollipop will be running. It may take a bit for it to boot the first time.
More info: There sure is a lot more information you could read about this entire process, but that's not what this post is for. These are the minimal instructions (with appropriate warning) for most people wanting to do this. If anybody has some good resources to share, then please add them to the comments.
Now, are you ready to root your Nexus 4?
:)
~ Danial Goodwin ~
![]() |
| Nexus 4 running Android Lollipop 5.0 |
- Download Android Lollipop 5.0 factory image: https://developers.google.com/android/nexus/images#occam
- Uncompress the file, possibly twice. I used 7-zip. You should see six files there, including a zip, which you do not have to unzip.
- Make sure `adb` is in your PATH environment variable, which can be found in %android-sdk%/platform-tools/. Also, you will need `fastboot.exe` from that same folder in your PATH. (I assume you already have the Android SDK and you know what I mean by "Advanced system settings"->Environment Variables->PATH.)
- Connect your Nexus 4 device to computer, then run `adb reboot-bootloader` in your computer's terminal. This will bring your device to the "fastboot" mode.
- At the very bottom-left, you should be able to see whether your bootloader is locked or unlocked. It must be unlocked to flash a new system image. If unlocked, you're good, go to the next step. If locked, then run `fastboot oem unlock`. WARNING: Unlocking will erase all data.
- Open your computer's terminal to where you downloaded and uncompressed the files, and run `flash-all`. That command will run the "flash-all.bat" script which will setup the new system image for you!
Congrats! When the script is done, it will reboot your device and Lollipop will be running. It may take a bit for it to boot the first time.
More info: There sure is a lot more information you could read about this entire process, but that's not what this post is for. These are the minimal instructions (with appropriate warning) for most people wanting to do this. If anybody has some good resources to share, then please add them to the comments.
Now, are you ready to root your Nexus 4?
:)
~ Danial Goodwin ~
2014-08-30
Level Up - Android: Speed up your Gradle build times with one-line!
Whether or not you are using Android Studio, Gradle build times are slow (especially when you don't have continuous automated builds (another discussion)).
Here's one way to improve the speed Gradle commands like `assembleRelease` is to enable the Gradle daemon. I've sped up my release builds by about 20%!
Here's one way to improve the speed Gradle commands like `assembleRelease` is to enable the Gradle daemon. I've sped up my release builds by about 20%!
2014-08-26
Level Up - Paint.NET & Android: How to create new color palettes for Android Holo and Material design
If you work in Android and Paint.NET, here's some quick tips and resources to make both easier to work with. When designing graphics in Paint.NET, it would be really useful to have direct access to all of the Android design guide colors. So, here's how to save and load different color palettes in Paint.NET:
2014-08-18
Level Up - Android: How to get started with Unit Testing in Android Studio
Recently, I finally got around to implementing the native unit testing that is provided within Android Studio (not third-party programs like Robolectric). So, after reading a few different sources, the following is the bare minimum that I would have needed in order to add the basic testing features.
2014-08-13
Level Up - Android: How to get started with Android Wear and the Wearables Emulator
Recently, I started working on Android Wear for the first time. It's been fun playing around with the new platform and form factor. And, of course, the official Android docs that I read could be condensed further for absolute newcomers. So, in the typical fashion, I've created myself a cheat sheet that I would use next time I would want to learn the easiest way for how to best create Wearable apps.
I've open sourced all my code so far on GitHub. It includes how to first set up the virtual Wear device, connect to the handheld device, and how to have the app send and open a notification on the wearable.
https://github.com/danialgoodwin/android-wear
~ Danial Goodwin ~
I've open sourced all my code so far on GitHub. It includes how to first set up the virtual Wear device, connect to the handheld device, and how to have the app send and open a notification on the wearable.
https://github.com/danialgoodwin/android-wear
~ Danial Goodwin ~
2014-06-16
Level Up - Android Dev: Useful and Productive Android Methods
Great Android tidbits that developers should know to be more productive. Included are simple useful classes and methods that may not be well known.
http://blog.danlew.net/2014/03/30/android-tips-round-up-part-1/
~ Danial Goodwin ~
http://blog.danlew.net/2014/03/30/android-tips-round-up-part-1/
~ Danial Goodwin ~
2014-06-04
Level Up - Android Dev: KeyboardlessEditTest
Today, I've released a new open source project that has help me build my latest app. I needed an EditText with full capabilities, except for the keyboard showing up. All of the possible answers that I found on StackOverflow and GitHub all had their limitations, especially the lack of native editing (cut/copy/select/paste) options.
All of the problems have been abstracted out to a simple subclass of EditText that you can use easily in any project.
You can try it out on GitHub now: https://github.com/danialgoodwin/android-widget-keyboardless-edittext
Or, you can go directly to test the APK: https://play.google.com/store/apps/details?id=net.simplyadvanced.simplytonegenerator
If you have any questions or need clarifications on how to use the project, then please let me know.
~ Danial Goodwin ~
All of the problems have been abstracted out to a simple subclass of EditText that you can use easily in any project.
You can try it out on GitHub now: https://github.com/danialgoodwin/android-widget-keyboardless-edittext
Or, you can go directly to test the APK: https://play.google.com/store/apps/details?id=net.simplyadvanced.simplytonegenerator
If you have any questions or need clarifications on how to use the project, then please let me know.
~ Danial Goodwin ~
2014-02-27
Level Up - Android Dev: How To Automatically Extract Hardcoded Strings To res/values/strings.xml
This is just one of the many refactoring features of Eclipse. Using this extract feature, you won't even need to open res/values/strings.xml to add the String resources nor manually write out reference to the resource.
This saves a lot of time, and allows the best practice of putting String constants away from the UI/Java files so that localization can be performed easier. This method I'm about to show you is especially productive because it can change all instances of that particular String to point to the xml string resource so that you don't have to do it individually one-by-one. (I'm doing maintenance on code that has everything hardcoded, so this is a lifesaver.)
To automatically extract the String, it's easy enough:
Step 1: Highlight the entire String that you would like extracted and sent to res/values*/strings.xml
Step 2: From the menu bar, select Refactor->Android->"Extract Android String..."
Step 3: Preview options and confirm changes.
This works in the XML and Java files for your Android application. And, this is much quicker than manually changing all instances of hardcoded Strings to getString() and @string/.
~ Danial Goodwin ~
This saves a lot of time, and allows the best practice of putting String constants away from the UI/Java files so that localization can be performed easier. This method I'm about to show you is especially productive because it can change all instances of that particular String to point to the xml string resource so that you don't have to do it individually one-by-one. (I'm doing maintenance on code that has everything hardcoded, so this is a lifesaver.)
To automatically extract the String, it's easy enough:
Step 1: Highlight the entire String that you would like extracted and sent to res/values*/strings.xml
Step 2: From the menu bar, select Refactor->Android->"Extract Android String..."
Step 3: Preview options and confirm changes.
![]() |
| Step 2: Automatically extracting string menu option. |
![]() |
| Step 3: Many different great refactoring options to choose from. |
This works in the XML and Java files for your Android application. And, this is much quicker than manually changing all instances of hardcoded Strings to getString() and @string/.
~ Danial Goodwin ~
2014-01-29
Level Up - Android: How To Connected a Full-Sized Keyboard to Android Device?
In this post, I will walk you through connecting a computer keyboard to an Android phone or tablet, via WiFi (or USB cable).
Estimated time of completion: About five to ten minutes the first time, and less than minute after your first run through.
Why is this useful?
There are many great apps on smartphones, but some people find it much more comfortable to use a full-sized keyboard for typing, especially for long periods of time. After going through this post, you will be able to use your computer keyboard like an advanced user:
1. For text messages (SMS), WhatsApp, and any other app with an input field.
2. You will be able to copy&paste text.
3. Speeddial. You can set the function keys on keyboard to open any app on the phone.
and more..
You will need:
- A Telnet program, like PuTTY
- A app on your device, called "Remote Keyboard" created by Onyxbits.
- A WiFi connection
Step 1: Download app to your Android device
1.1. Link: https://play.google.com/store/apps/details?id=de.onyxbits.remotekeyboard
1.2. When you open the app, it should look something like the following. Note the host address on there, it will be different for you.
1.3. Click the "Select Keyboard" button on the Action Bar, at the top of the screen and choose "Remote Keyboard"
Step 2: Download PuTTY to your computer
2.1. Link: http://www.putty.org/
2.2. When you open PuTTY, change your configurations in three different places: Host, Port, and Connection type. You will get the port number and host address from the Remote Keyboard app. The connection type should be set to Telnet.
2.3. Click Open.
Step 3: Connect to device via Telnet on the computer
3.1. You should now see a window that looks like the following. And, you when you type into this window, key presses will go straight to your device rather than showing up on this window. Just click on any input field on Android to have the key presses sent there.
Notes:
- For step 3, if you only see a blank screen, then wait a little longer for the connection. Then, possibly try sending a few keystrokes into the window and the Enter key.
- Windows does have a Telnet client, but I didn't get it to work. Using PuTTY was much simpler.
- Telnet connections are not secure. Each input is sent unencrypted.
- To connect more securely over USB, here are some instructions.
~ Danial Goodwin ~
Estimated time of completion: About five to ten minutes the first time, and less than minute after your first run through.
Why is this useful?
There are many great apps on smartphones, but some people find it much more comfortable to use a full-sized keyboard for typing, especially for long periods of time. After going through this post, you will be able to use your computer keyboard like an advanced user:
1. For text messages (SMS), WhatsApp, and any other app with an input field.
2. You will be able to copy&paste text.
3. Speeddial. You can set the function keys on keyboard to open any app on the phone.
and more..
You will need:
- A Telnet program, like PuTTY
- A app on your device, called "Remote Keyboard" created by Onyxbits.
- A WiFi connection
Step 1: Download app to your Android device
1.1. Link: https://play.google.com/store/apps/details?id=de.onyxbits.remotekeyboard
1.2. When you open the app, it should look something like the following. Note the host address on there, it will be different for you.
1.3. Click the "Select Keyboard" button on the Action Bar, at the top of the screen and choose "Remote Keyboard"
![]() |
| Remote Keyboard, Android app |
Step 2: Download PuTTY to your computer
2.1. Link: http://www.putty.org/
2.2. When you open PuTTY, change your configurations in three different places: Host, Port, and Connection type. You will get the port number and host address from the Remote Keyboard app. The connection type should be set to Telnet.
2.3. Click Open.
![]() |
| How to set up a Telnet connection |
Step 3: Connect to device via Telnet on the computer
3.1. You should now see a window that looks like the following. And, you when you type into this window, key presses will go straight to your device rather than showing up on this window. Just click on any input field on Android to have the key presses sent there.
![]() |
| A Telnet connection to an Android smartphone. |
Notes:
- For step 3, if you only see a blank screen, then wait a little longer for the connection. Then, possibly try sending a few keystrokes into the window and the Enter key.
- Windows does have a Telnet client, but I didn't get it to work. Using PuTTY was much simpler.
- Telnet connections are not secure. Each input is sent unencrypted.
- To connect more securely over USB, here are some instructions.
~ Danial Goodwin ~
2013-11-22
Android 4.4 Developer
A few days ago, I had my Nexus 4's OS updated from Android 4.3 to Android 4.4. The system is running very smooth. Two of the first things I did was enable developer mode and then enabled all apps to use the new ART compiler rather than the old Dalvik compiler.
~ Danial Goodwin ~
![]() |
| You are now a developer! Again! |
~ Danial Goodwin ~
2013-11-21
Android Publishers Cannot Purchase Their Own Apps
This is not new news by a longshot. But, through the regular course of my day, I encountered this error again and decided to take a picture so that I can let others know about it too.
In order for developers to have the pro versions of their apps, they must side-load it. And, it is typically a debug (non-public release) build.
Well, I guess it at least saved me 30% of the app cost if I wanted to buy from myself.
NOTE: This only applies to when using Google's in-app billing system. I don't think third-parties care as much about who is giving them money.
~ Danial Goodwin ~
In order for developers to have the pro versions of their apps, they must side-load it. And, it is typically a debug (non-public release) build.
![]() |
| The publisher cannot purchase this item. |
Well, I guess it at least saved me 30% of the app cost if I wanted to buy from myself.
NOTE: This only applies to when using Google's in-app billing system. I don't think third-parties care as much about who is giving them money.
~ Danial Goodwin ~
2013-11-08
Working Title, "Basically, Android Expained"
I am an Android developer. I have been one for a few years now. In that time, I've had the pleasure of helping many people with technical questions. I believe one of my specialties is being able to explain complicated concepts in simple, laymans terms.
Over the years, I was bound to give repeat answers eventually. So, in order to keep myself more efficient, I will start adding all of my layman explanations to a wiki, which I will eventually probably turn into some sort of ebook.
The book will be titled, "Basically, Android Explained". I still have a few working ideas for a tagline.
I chose to title the book this way because almost all my explanations start off with "Basically, ...". This single word is very important to my explanations because it signifies that what follows is NOT everything explained. It is just the easiest explanation for a non-developer or a new developer.
I'm not sure of the entire structure that I want to use for my definitions, but one way is to have the first sentence be "Basically, ...", then the following sentence would be a more technical definition, then after that will be the reasons for using it.
For good measure, here's an except:
~ Danial Goodwin ~
Title: Basically, Android Explained
Description: Where advanced technical concepts are abbreviated to quick/light readings.
Over the years, I was bound to give repeat answers eventually. So, in order to keep myself more efficient, I will start adding all of my layman explanations to a wiki, which I will eventually probably turn into some sort of ebook.
The book will be titled, "Basically, Android Explained". I still have a few working ideas for a tagline.
I chose to title the book this way because almost all my explanations start off with "Basically, ...". This single word is very important to my explanations because it signifies that what follows is NOT everything explained. It is just the easiest explanation for a non-developer or a new developer.
I'm not sure of the entire structure that I want to use for my definitions, but one way is to have the first sentence be "Basically, ...", then the following sentence would be a more technical definition, then after that will be the reasons for using it.
For good measure, here's an except:
KeyStore: (also referred to as a Java keystore or keystore file) A security certificate used for authorization. Basically, an app's signature. It proves that the app was made by a certain developer. This is a precautionary security measure that prevents malicious apps from replacing another app."
That was just a quick rough draft, I have a few more ways to explain this concept. Feedback always welcomed.
That was just a quick rough draft, I have a few more ways to explain this concept. Feedback always welcomed.
Title: Basically, Android Explained
Description: Where advanced technical concepts are abbreviated to quick/light readings.
2013-11-02
Idea: Google and Apple Purposely Produce Less Devices Than Market Demand
The sudden thought occurred to me, though perhaps not new, there's a strong possibility that large companies like Google and Apple and Microsoft purposely supply less than demand. It seems like just about every time a device is produced, it sells out.
I know producing millions of phones is a lot of work, but for the purposes of this post, I'm going to consider that these large companies choose to throttle output.
Determining market demand is not an exact science, but it can be determined to a degree of significance how much demand there is, even just looking at past trends. So, if companies can't determine exact demand, then they will either produce more or less needed (:idea:). If they produce more, then the extras could be sold eventually. If they produce less, then they sell less (at least in the beginning).
Now for more specifics for meeting demand.
If companies produce supply to meet demand, then they do have the opportunity of making more money in the short run, but the long term revenue differences would be insignificant. Another benefit of satisfying demand might be that more consumers have the brand's device in their hands.
On the other hand, there are many benefits to under supplying demand. A list might be easier here:
1. More publicity. Journalists don't know exactly how many devices are produced/shipped, all they know is when something is out of stock.
2. Inflate prices/value. Google sells the Nexus 5 for $349-399, but you can find some pre-orders selling for $600-650. Also, more publicity.
3. The large companies don't have to worry as much about their devices flopping. Aka, mitigating risks.
4. More publicity. This time the reason is for when the large tech companies ship their second and third rounds of devices.
5. Chance to fix some [software] bugs before "everybody" gets the device.
6. Also, minimize costs of a recall... just in case.
Any more thoughts that I missed?
~ Simply Advanced ~
I know producing millions of phones is a lot of work, but for the purposes of this post, I'm going to consider that these large companies choose to throttle output.
Determining market demand is not an exact science, but it can be determined to a degree of significance how much demand there is, even just looking at past trends. So, if companies can't determine exact demand, then they will either produce more or less needed (:idea:). If they produce more, then the extras could be sold eventually. If they produce less, then they sell less (at least in the beginning).
Now for more specifics for meeting demand.
If companies produce supply to meet demand, then they do have the opportunity of making more money in the short run, but the long term revenue differences would be insignificant. Another benefit of satisfying demand might be that more consumers have the brand's device in their hands.
On the other hand, there are many benefits to under supplying demand. A list might be easier here:
1. More publicity. Journalists don't know exactly how many devices are produced/shipped, all they know is when something is out of stock.
2. Inflate prices/value. Google sells the Nexus 5 for $349-399, but you can find some pre-orders selling for $600-650. Also, more publicity.
3. The large companies don't have to worry as much about their devices flopping. Aka, mitigating risks.
4. More publicity. This time the reason is for when the large tech companies ship their second and third rounds of devices.
5. Chance to fix some [software] bugs before "everybody" gets the device.
6. Also, minimize costs of a recall... just in case.
Any more thoughts that I missed?
~ Simply Advanced ~
Subscribe to:
Posts (Atom)











