Can you make a video player in App Inventor? Not really, unfortunately.

A question from a reader: Can we make a video player in App Inventor?

The short answer is, unfortunately, not really.

In the App Inventor Designer, in the Palette’s Media section, you can drag a Video Player into the viewer. But this Video Player only plays video files (WMV, MP4) that are stored inside your app (not on the web) and these files are limited to just 1 megabyte in size. Therefore, the Video Player feature in App Inventor is so limited as to not be very useful for most applications.


Android battery life – and how to extend your battery power

When I had a Nexus 4 running Android 4.3 and earlier, I used an app called Juice Defender to extend the time between battery charging. I often went 2 days without recharging the battery!

But Juice Defender has not been updated since 2012 and due to Android changes, Juice Defender no longer works well.

Then, Android 5 resulted in worse battery life for many of us! My phone was discharging half the battery in 8 hours, even when not being used.

The only way to extend battery power is to reduce power demand. That means turning off hardware features that may not need to be used all the time (WiFi, Bluetooth, GPS location), dimming the screen or turning it off and so on. Another way to is reduce the frequency that apps wake up to “sync” or go online.

Good “Battery Saver” apps work by intelligently switching features off and reducing their frequency of use. Some battery saver apps are good and some are awful; in fact, some have displayed false battery status to pretend they are saving power! I have tried numerous Battery Savers but found only one that works effectively on the Nexus 5: Avast Battery Manager (see link below).

With that in mind, here are ideas that may help your device reduce its power demand and extend is battery life between charges:

  • Install Avast Battery Manager from Google Play. This works well for me using its “Automatic mode” settings. The app also provides information about which apps are consuming power on your phone. You may choose to stop, disable or uninstall apps that consume excess power.
  • Google Chrome and GMail apps are power hogs relative to other apps. It seems that if you visit a page, like a financial page, that periodically “auto refreshes” (e.g. for stock market data), this auto refresh may continue to occur periodically when you are not using the phone (this is my hypothesis – its not yet verified.) Avoid leaving Chrome on such pages, if you can. In GMail, go to the GMail menu (the one where you can select Inbox, Sent, Outbox, etc), scroll all the way to the bottom and choose Settings. For your GMail account, uncheck Sync GMail – and then manually resync GMail by swiping down from the top when you are using GMail. For POP3/IMAP email accounts (if any), set the sync time to 60 minutes (the longest option available) – or go to Settings | Accounts, select the email account, and turn off sync completely.
  • Many apps start up when your device is powered up and drain a small amount of power running in the background. Even if you never use the apps. Uninstall apps that you no longer use or you do not need.
  • Use Wi-Fi, if available, instead of cellular data. Generally, good Wi-Fi data links are much faster than cellular data, which means data can be uploaded or downloaded in less time. That means the transmitter (which uses more power) is active for less time, helping to reduce power. Further, due to some issues in how the cellular data protocol works, the cellular transmitter remains in an elevated power state for several seconds after being active for a data transmission. Related: While out and about and using only cellular data, turn off WiFi. You may also consider disabling Bluetooth and Location services.
  • If battery life seems to be getting worse, go to Settings | Storage, and scroll down to Cached data. Select “Cached data” and then follow the pop up menu to clear the cached memory. This is not something you do every day – but when the battery has gotten bad, taking this step every once in a while has significantly improved the battery power.
  • If you are using Avast, you can likely skip this step: Go to Settings | Battery and click on the 3 vertical buttons at upper right. Then click on Battery Saver and set this to “On”. Normally, Android’s own battery saver only activates when the battery is very low, but you can activate it manually. This built in Battery Saver reduces app data synchronization with the network, disables location services and does a few other things to reduce power. The Battery Saver is automatically turned off and remains off, once you plug in to a charger.
  • Aggressive: Set your device to Airplane mode. This turns off all built in radios and suspends background apps from doing data communications. Again, if using Avast, you are already getting good power management and this step adds only a little to the battery life. And while its activated, you cannot receive voice or text messages either!

Hopefully these suggestions are helpful to you!

New Arduino Zero controller board

Atmel introduced the new Arduino Zero controller board, which includes new support for Bluetooth, Wi-Fi and sensors, apparently (I do not yet have details). A couple of weeks ago, I showed how to use App Inventor and Bluetooth to communicate with an Arduino board.

Here is a video clip about the new Zero controller board. I think App Inventor will also play an important role in the “Maker” / do-it-yourself community in terms of linking smart phones to external hardware devices, like this controller.

I am back from Maker Faire and will start catching up over the next few days. I was mostly offline while down there.

“Why Learning to Code is So Damn Hard”

Click through for the full post at Viking Code School – as they say, the early part can be easy, then things get tougher, followed by a challenging learning period – until confidence and skills flourish.

What every beginner absolutely needs to know about the journey ahead

Source: Why Learning to Code is So Damn Hard

MIT App Inventor makes many things easier – but eventually one must learn to think like a software developer and become familiar with concepts like data structures, algorithms, design patterns, and software engineering design and project management.

“Siri” for Android, written in App Inventor

Eric Payne has created an Apple Siri – like interface in App Inventor.

You can download his App Inventor source code here from Google Drive. Note that Google Drive displays the content of the .aia file (it is just a .zip file). Click on the “download arrow” icon at top center to download the .aia file to your computer, and then import the .aia file into your App Inventor account.

(This is posted here with Eric’s permission. Thanks Eric!)

Also check out the APP INVENTOR STUDY GROUP on Facebook!


How to connect App Inventor apps to Arduino using Bluetooth wireless

How to Connect App Inventor apps to Arduino Using Bluetooth

Bluetooth is a low power, short range wireless technology built in to many phones, tablets and other devices.

MIT App Inventor 2 supports a set of Bluetooth communication functions that may be used to send data between smart phones and tablets (see previous tutorials: Part 1, Part 2)

This capability may be extended so that App Inventor apps can communicate with Arduino-based devices and other embedded systems.

This tutorial describes how to interface App Inventor apps running on Android to Arduino devices, via the Bluetooth wireless link.

What is Bluetooth?

Bluetooth is an industry standard for low power, short range wireless communications between devices such as personal computers, printers, smart phones, tablets, wireless headphones, wireless stereo speakers, sensor systems (like in security alarms) and other applications.

To learn more about Bluetooth technology (and why it has a funny name!), please read our first tutorial on Bluetooth.

What is Arduino?

Arduino is an open hardware, open software platform for building small electronic devices. The Arduino board is a “microcontroller” – that is, a complete – albeit small, inexpensive and with limited function – computer. Arduino is a popular choice for do-it-yourself projects and is well established in the “Maker” community of DIY project builders. (Side note: I will be at the San Francisco Maker Faire on Saturday, May 16th, 2015).

This is not a tutorial about Arduino boards, software or electronics and presumes the reader is familiar with Arduino development. To learn more about Arduino (and you should learn more about it!) start at the Arduino web site.

This tutorial assumes you have the Arduino software development environment installed on your computer and are familiar with Arduino development.

HARDWARE: Setting Up Arduino for Bluetooth Wireless Communications

There are several versions of the Arduino board; I used the Uno version but others should work just fine.

The Arduino board does not contain Bluetooth hardware – to implement Bluetooth requires using a third-party Bluetooth module. I use the JY-MCU Bluetooth module . IMPORTANT – not all Bluetooth modules will work with App Inventor!  While new versions of Android support all versions of Bluetooth, App Inventor (at the time of this writing) supports “classic” Bluetooth only. In particular, App Inventor does not support the newer Bluetooth LE (Low Energy) version, at least it does not support the Bluetooth LE module that I have.

I can confirm that the JY-MCU Bluetooth module works but the Bluetooth LE modules I have do not work with App Inventor.  My phone can see the Bluetooth LE device but the App Inventor source code cannot communicate with the LE devices.

Where to buy the JY-MCU Module online: Amazon (Prime), Amazon (non-Prime)

The module is also available from other vendors.

Photo shows my Arduino UNO board, at left, a prototyping breadboard with a status LED set up, and the JY-MCU Bluetooth module, just above the breadboard.

DSC_1266Click through to  see how the Arduino and Bluetooth module are setup, and get the Arduino source code and the App Inventor source code!

Continue reading How to connect App Inventor apps to Arduino using Bluetooth wireless

Coming soon: Bluetooth to connect Android App Inventor code to Arduino

I  have an App Inventor app running on my Nexus 5 and talking to an Arduino board via Bluetooth. I finally had a chance to work on this!

UPDATE: Here is the link to the final code and tutorial information!

What I have  now is some experimental code not suitable for posting online. I will be revising this code to turn it into a simple example that will provide basic functionality, and then present a tutorial on putting it to use in your own applications.

Update Tuesday Cinco de Mayo (in the U.S.): I have the demo code up and running. Next up is to test and write up the tutorial! It’s coming! The first tutorial will be simple – intended to get you up and running.  I will eventually create some more advanced features.

Longer term, I may create a more general solution for passing data packets back and forth between an Android App Inventor app and an Arduino board, so that many types of applications may be supported using my basic code library.

Arduino is a small microcontroller board used by hobbyists and others to add computing to small devices, art projects, robots, Internet connected devices and much more. Arduino is not part of App Inventor. Arduino is, for an “embedded system” easy to use in terms of building electronics hardware and writing control software. By writing App Inventor code to talk to an Arduino board, we open an entire world of new possibilities using simplified development (App Inventor on Android, and Arduino on the hardware side).

  • Use your phone or tablet to remote control an Arduino device over a Bluetooth link
  • Use an Arduino device to monitor remote sensors, and then link sensor inputs to an Android phone over Bluetooth
  • Conceptually, an Arduino device could monitor local sensors (temperature, humidity, security alarms), and transmit sensor data to an Android phone, which, in turn, could forward the data onto an Internet location.