OS - Android: Difference between revisions
Line 86: | Line 86: | ||
====Hardware==== | ====Hardware==== | ||
If you are having problems running the examples, | |||
If it doesn't work make sure that other devices that are supposed to work with your tablet (USB data keys, keyboards, etc. - the list depending entirely on which tablet) do indeed work. | =====Remote Phidget===== | ||
When using the [[#Webservice|Webservice]] to control a Phidget, the problem may be with the USB connection on the remote computer. Make sure both the server-side of the webservice and the USB connection are working by using the instructions on the [[Software Overview#Operating System Support|page specific to the operating system]] | |||
=====Directly Connected Phidget===== | |||
To check whether a Phidget is correctly connecting in hardware (even if our examples do not work), you can use the kernel logs on your Android tablet in a similar way as you would on [[OS - Linux|Linux]]. | |||
You need to access the logs from your debugging computer - e.g. the computer where you have installed Google's ADB as described above. Plug a USB Phidget into your Android device. Then, as soon as possible, from a command line on that computer use the ADB (Android Debugging Bridge) program to access the program {{Code|dmesg}} on your Android device: | |||
<div class="source"> | |||
<syntaxhighlight lang=bash> | |||
adb shell dmesg | |||
</syntaxhighlight> | |||
</div> | |||
This will print out the entirety of the kernel logs on your Android device. If you have been running your device for only a little while, this could be thousands of lines of output. If you plugged the Phidget in and then ran {{Code|dmesg}} right away, the kernel detection of the Phidget should be almost at the bottom of the logs. If you are on Linux or Mac OS, you can mitigate the length of this output using {{tail -n 50}} or so. If you are on Windows, you may consider using a command redirection operator like {{Code|>}} to write to a file and then view the last 50 or so lines. | |||
Near the end of the output you will find something like this for a successful registration of a Phidget in the Android kernel: | |||
<div class="source"> | |||
<syntaxhighlight lang=text> | |||
<6>[ 3282.554249] usb 1-1.2: new full speed USB device using tegra-ehci and address 5 | |||
<6>[ 3282.612359] usb 1-1.2: New USB device found, idVendor=06c2, idProduct=0032 | |||
<6>[ 3282.612418] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | |||
<6>[ 3282.612466] usb 1-1.2: Product: PhidgetTemperatureSensor | |||
<6>[ 3282.612504] usb 1-1.2: Manufacturer: Phidgets Inc. | |||
<6>[ 3282.612540] usb 1-1.2: SerialNumber: 287638 | |||
<4>[ 3282.612576] device: '1-1.2': device_add | |||
<4>[ 3282.615639] device: '1-1.2:1.0': device_add | |||
<4>[ 3282.618632] device: '0003:06C2:0032.0003': device_add | |||
<3>[ 3282.631412] generic-usb 0003:06C2:0032.0003: claimed by neither input, hiddev nor hidraw | |||
</syntaxhighlight> | |||
</div> | |||
If it doesn't work make sure that other devices that are supposed to work with your tablet (USB data keys, keyboards, etc. - the list depending entirely on which tablet) do indeed work. Not having the Phidget appear in your kernel logs indicates there is a problem with your USB hardware on your Android device. | |||
If it does appear, but your code doesn't run, the problem is probably with your code. Work through the [[Language - Android Java]] page to make sure you have all the libraries, jar files, and permissions set and linked properly to use your Phidget. | |||
====Troubleshooting==== | ====Troubleshooting==== |
Revision as of 16:43, 3 April 2012
Android is a mobile OS commonly used on smartphones and tablet computers.
Tablets with a USB port and Android version 3.1 or greater can control Phidgets directly plugged in to them. Earlier Android versions (tested down to 2.1) can control Phidgets over a network using the Webservice.
Getting Started (Libraries and Drivers)
If this is your first Phidget, we highly recommend working through the Getting Started guide for your specific Phidget device.
Android code is developed on an external platform anyway (i.e. Windows, Mac OS, or Linux), and so getting your Phidget to work locally on that platform first will help you distinguish any issues from network ones later.
Near the end of the Windows, Mac OS, or Linux setup process, we direct you to choose a language. At that point, please remember to return here to this Android Java page.
Alternately, you can first try using mainstream Java. On the mainstream Java page, we provide example code - including code that works on the Android development platform of Eclipse - to test your Phidget directly from your development computer.
Installing
Eclipse (Android Java Development Platform)
Development for your Android OS Phidget application can occur on Linux, Mac OSX, or Windows. We recommend using Eclipse so you can run our provided Phidget examples.
You will need the following:
- The JDK and Java on your development system
- See the mainstream Java page for details on Java for Windows, Mac, and Linux
- Eclipse (a Java Integrated Development Environment) on your development system
- http://www.eclipse.org/downloads/ (for Windows or MacOS)
sudo apt-get install eclipse
(for Linux)- For 64-bit Linux, you will need the
ia32-libs
package as well, try:sudo apt-get install ia32-libs
Android SDK (and ADT Eclipse Plugin)
After installing Java and Eclipse, you can install the Software Developer's Toolkit (SDK) and the plugin for Eclipse (ADT).
- Download and install the Android SDK package for your development system:
- See the download instructions link at http://developer.android.com/sdk/
- Google's instructions for installing are here: http://developer.android.com/sdk/installing.html
- Download and install the ADT Eclipse Plugin for Android
- Follow the instructions at http://developer.android.com/sdk/eclipse-adt.html
To check that the JDK, the Android SDK, and Eclipse have all been configured correctly, use the Google HelloAndroid example:
http://developer.android.com/resources/tutorials/hello-world.html
Once you have confirmed that the Android SDK has been correctly installed, you are ready to begin developing applications with the Android Java libraries and language.
Android SDK and ADT on Linux
Run the Android SDK manager. If android-sdk-linux
is the unpacked directory that was downloaded, try:
android-sdk-linux/tools/android
This will give you the option to download the Android versions you want to support. Running the SDK from within Eclipse (Window
→ Android SDK
) will let you add those Android versions to Eclipse, for emulating them before downloading to an Android device and using with Phidgets.
Then, to add Android support to Eclipse, first make sure adb
is in your path (e.g. by adding it to /etc/environment
Phidget Libraries
The library phidget21.jar
from the Android examples (not the mainstream Java examples, despite the same name) are the libraries for including with your Android code. You can download the examples and extract it specifically if needed:
When you download and unzip the Phidget Library for Android, it will contain three things:
- A libs/ folder
- A jar file containing the general Phidget java library (phidget21.jar)
- A jar file for directly driving USB devices from a USB port on the Android device (PhidgetsUSB.jar)
Feel free to browse around to get a sense of what will be going on the Android OS side. We describe how to link and use this library later on the Write your own Android code section of the Android Java page.
First, though, it will be useful to check to make sure Phidgets work with your Android system.
Checking
Software
The first way to see whether your libraries are set up correctly on
Hardware
If you are having problems running the examples,
Remote Phidget
When using the Webservice to control a Phidget, the problem may be with the USB connection on the remote computer. Make sure both the server-side of the webservice and the USB connection are working by using the instructions on the page specific to the operating system
Directly Connected Phidget
To check whether a Phidget is correctly connecting in hardware (even if our examples do not work), you can use the kernel logs on your Android tablet in a similar way as you would on Linux.
You need to access the logs from your debugging computer - e.g. the computer where you have installed Google's ADB as described above. Plug a USB Phidget into your Android device. Then, as soon as possible, from a command line on that computer use the ADB (Android Debugging Bridge) program to access the program dmesg
on your Android device:
adb shell dmesg
This will print out the entirety of the kernel logs on your Android device. If you have been running your device for only a little while, this could be thousands of lines of output. If you plugged the Phidget in and then ran dmesg
right away, the kernel detection of the Phidget should be almost at the bottom of the logs. If you are on Linux or Mac OS, you can mitigate the length of this output using Template:Tail -n 50 or so. If you are on Windows, you may consider using a command redirection operator like >
to write to a file and then view the last 50 or so lines.
Near the end of the output you will find something like this for a successful registration of a Phidget in the Android kernel:
<6>[ 3282.554249] usb 1-1.2: new full speed USB device using tegra-ehci and address 5
<6>[ 3282.612359] usb 1-1.2: New USB device found, idVendor=06c2, idProduct=0032
<6>[ 3282.612418] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[ 3282.612466] usb 1-1.2: Product: PhidgetTemperatureSensor
<6>[ 3282.612504] usb 1-1.2: Manufacturer: Phidgets Inc.
<6>[ 3282.612540] usb 1-1.2: SerialNumber: 287638
<4>[ 3282.612576] device: '1-1.2': device_add
<4>[ 3282.615639] device: '1-1.2:1.0': device_add
<4>[ 3282.618632] device: '0003:06C2:0032.0003': device_add
<3>[ 3282.631412] generic-usb 0003:06C2:0032.0003: claimed by neither input, hiddev nor hidraw
If it doesn't work make sure that other devices that are supposed to work with your tablet (USB data keys, keyboards, etc. - the list depending entirely on which tablet) do indeed work. Not having the Phidget appear in your kernel logs indicates there is a problem with your USB hardware on your Android device.
If it does appear, but your code doesn't run, the problem is probably with your code. Work through the Language - Android Java page to make sure you have all the libraries, jar files, and permissions set and linked properly to use your Phidget.
Troubleshooting
Programming Languages
Android OS programs are written in Android Java using the Android SDK and the Phidgets library.
Note that Android Java is NOT the same as mainstream Java. Any Java programs you have will probably need significant modification before they run on Android, including our mainstream Java Phidget Examples
Webservice
Setting Up the Webservice
Using the Webservice
Advanced Uses
Common Problems and Solutions
If you are having trouble, ensure your Phidget libraries are up to date.