Вы находитесь на странице: 1из 11

IOIO for Android

IOIO Android
Spr!"#n $ %& IOIO $ Android ' (&) &% %
%*+ *&* * & ,*& $&+ *' -
*%*& &$ . % /0'
- IOIO **1 *. ) 2S345 %& *1
%&%+6 %. Android' 7 * % %)&+ 8. 5951
:;(1 . 51 I<=1 S>I1 2A?@'
A$) % IOIO $B . %** &6&' C %1
$* % $& * % IOIO ) 4
%*1 % $ $&)*' D%) %. %6)
%) %%&65 5 %5 $65' D* EFG4,*1
.. * % %%&) &+ 8+1 % , )) *
$1 * '
H . Spr!"#n & $& % IOIO 1 $+6 %
&% %8. Android I'J $ K ' 7
$* & % . . * * &.1 ** LMN#O S1 LMN#O OnM1
@4PoQiRM SI PoToroR Groid U1 * %B1 ) * %* &*'
Introduction
@ViO iO TVM QMWinnMrO W#idM Xor TVM IOIO Xor Android Qord nd iO inTMndMd Xor #OMrO TVT V0M nM0Mr YriTTMn n
Android pp' @VM WoR oX TViO T#ToriR iO To OVoY VoY To YriTM OiZpRM pp TVT [oZZ#ni[TMO YiTV TVM IOIO
Qord'
IOIO Xor Android
@VM proWrZZinW RnW#WM #OMd To YriTM n Android pp iO /0' IX \o# rM noT XZiRir YiTV /01 TViO T#ToriR
YiRR onR\ Wo o0Mr YriTinW OiZpRM /0 pp #OinW TVM IOIO RiQrr\' @ViO T#ToriR YiRR not [o0Mr VoY To YriTM
/0 [odM nor YiRR iT [o0Mr VoY To #OM TVM ri[V XMT#rMO YiTVin \o#r Android dM0i[M1 Ri!M S>S1 [[MRMroZMTMr1
To#[V O[rMMn1 MT[' On[M \o# WMT To TVM poinT YVMrM \o# YnT To #OM TVM 0OT rr\ oX XMT#rMO on \o#r Android1
YM O#WWMOT XirOT Roo!inW T TVM TM[Vni[R rMOo#r[M OM[Tion on dM0MRopMr'ndroid'[oZ' IX \o# OTiRR [n]T Xind TVM
MNZpRMO \o# rM Roo!inW Xor1 OiZpR\ QroYOinW TVM YMQ YiRR rMO#RT in Ton oX inXorZTion nd MNZpRMO TVT
OVoY \o# VoY To [oZZ#ni[TM YiTV RR oX TVM WrMT piM[MO oX VrdYrM YiTVin \o#r Andriod dM0i[M'
In WMnMrR1 TVM VoR\ WriR Xor dM0MRopinW Android ppO iO dM0MRopMr'ndroid'[oZ' @VMrM1 \o# YiRR Xind ZoOT oX
TVM inXorZTion on Android dM0MRopZMnT' "or do[#ZMnTTion9doYnRodO OpM[iXi[ To TVM IOIO nd Xor ZorM
d0n[Md diO[#OOionO Qo#T TVM IOIO1 OMM TVMOM Rin!O^
IOIO _i!i
ARR oX TVM GoYnRodO \o# nMMd
IOIO diO[#OOion Wro#p
Gathering Your Hardware
`MrM rM TVM piM[MO oX VrdYrM \o# YiRR nMMd To [oZpRMTM TViO T#ToriR^
Android MnQRMd dM0i[M #OinW OS I'J or WrMTMr'
IOIO Xor Android Qord
2S3 [QRM TVT iO [oZpTiQRM YiTV \o#r Android dM0i[M
J4IJa poYMr O#ppR\ YiTV T RMOT IA oX [#rrMnT' bo# YiRR nMMd To poYMr TVM IOIO TVro#WV TVM aIL nd
SLG pinO or TVMrM iO n opTionR /S@ [onnM[Tor on TVM Q[! oX TVM Qord' IT YiRR nMMd To QM OoRdMrMd inTo
pR[M nd [n QM #OMd YiTV TViO dpTMr nd YRR YrT poYMr O#ppR\' PorM inXorZTion T TVM Mnd oX TVM
T#ToriR Xo#nd VMrM'
Installing the Development Environment
@VM F[RipOM IGF cinTMWrTMd dM0MRopZMnT Mn0ironZMnTd1 TVM Android SGe cOoXTYrM dM0MRopZMnT !iTd1 nd TVM
/Ge c/0 dM0MRopZMnT !iTd rM TVM priZr\ piM[MO oX OoXTYrM TVT \o# YiRR nMMd To inOTRR' @VM
pWM dM0MRopMr'ndroid'[oZ VO YriTTMn TVoro#WV inOTr#[TionO on YVT MN[TR\ \o# YiRR nMMd To doYnRod'
>RMOM rMd TVM inOTr#[TionO [rMX#RR\1 TVM\ rM Xo#nd in TVM Rin! QMRoY^
InOTRRinW F[RipOM nd TVM Android SGe
ATTENTION: bo# Z#OT #OM D! v" cnoT 0J or 0fd Xor Android dM0MRopZMnT'
IX \o# V0M n\ proQRMZO1 OMM TVM @ro#QRMOVooTinW OM[Tion XroZ dM0MRopMr'ndroid'[oZ'
_VMn \o# rM[V STMp g in TVM Android SGe T#ToriR1 \o# YiRR T RMOT nMMd To inOTRR TVM SGe [oZponMnTO
rMRM0nT To TVM Android dM0i[M \o# YiRR QM Yor!inW YiTV' "or MNZpRM1 iX \o# V0M n Android pVonM1 WoTo
#ettings $ A%out &hone nd O[roRR doYn To Android aMrOion' bo# Z#OT inOTRR TVM SGe pRTXorZ
[orrMOpondinW To TVM Android 0MrOion oX \o#r dM0i[M'
Import the HelloIOIO E'ample
InOTMd oX [rMTinW nMY prohM[T XroZ O[rT[V1 YM [n iZporT n MNiOTinW IOIO prohM[T TVT VO RR oX TVM XiRMO
rMd\ To Wo' IX \o# nMMd inOTr#[Tion on [rMTinW nMY prohM[T1 OMM TVM `MRRo _orRd MNZpRM on
dM0MRopMr'ndroid'[oZ'
@o iZporT n MNiOTinW prohM[T'''
Id GoYnRod TVM RTMOT ]Android SoXTYrM nd IOIO AppRi[Tion "irZYrM IZWM] iip XiRM cApp4IOIONNNN1
YVMrM NNNN iO TVM OoXTYrM9RiQrr\ 0MrOion n#ZQMrd'
Note: If you are using an older IOIO board1 Z!M O#rM TVM 0MrOion n#ZQMr oX \o#r IOIO RiQrr\ iO RMOO TVn or
Mj#R To TVM 0MrOion n#ZQMr oX \o#r XirZYrM' In oTVMr YordO1 iX \o# [n]T WMT TVM OZpRM pp To Yor! YiTV n
oRdMr IOIO1 #OM onM oX TVM oRdMr RiQrr\ 0MrOionO or #pWrdM TVM XirZYrM on \o#r IOIO #OinW TVM IOIO PnWMr
nd TVMn #OM TVM RTMOT doYnRod'
<d 2niip TVM doYnRodMd p[!WM inTo OXM Ro[Tion YVMrM \o# YnT To !MMp \o#r prohM[T XiRMO'
kd LMNT1 opMn F[RipOM1 TVMn WoTo (ile $ Import) nd OMRM[T E'isting &ro*ects Into +or,space' @VMn ViT Ne't'

gd AnoTVMr YindoY YiRR pop #p cO OVoYn QMRoYd' SMRM[T ]SMRM[T ?ooT GirM[Tor\] nd n0iWTM To TVM XiRM \o#
h#OT #niippMd nd poinT To TVM `MRRoIOIO XoRdMr Xo#nd in 9ppRi[TionO9`MRRoIOIO' 3M O#rM TVM [VM[! QoN iO
OMRM[TMd Xor \o#r prohM[T' LoY ViT (inish'


Jd bo# OVo#Rd noY V0M `MRRoIOIO in \o#r prohM[T MNpRorMr in F[RipOM' LoTi[M TVT TVMrM iO OZRR rMd N nMNT To
TVM prohM[T nZM' @ViO ZMnO TVMrM rM Q#iRd MrrorO1 Oo YVMnM0Mr \o# OMM TViO1 \o# !noY OoZMTVinW nMMdO To QM
XiNMd' In TViO OiT#Tion1 YM nMMd To Rin! TVM IOIO RiQrr\ To o#r prohM[T1 O o#TRinMd in TVM nMNT OTMp'

ld LoY YM nMMd To Rin! TVM IOIO RiQrr\ nd IOIO 3R#MTooTV RiQrr\ To \o#r prohM[T YVi[V YiRR Wi0M \o# X#RR
[[MOO To TVM IOIO A>I' @VM IOIOEiQ nd IOIOEiQ3@ dirM[ToriMO [onTinO TVM RiQrriMO TVT RRoY \o# To
[oZZ#ni[TM To TVM IOIO Qord'
"oRRoY TVM MN[T OZM OTMpO in k nd g Qo0M1 MN[MpT #OM TVM IOIOEiQ XiRM nd TVMn TVM IOIOEiQ3@ inOTMd oX
TVM `MRRoIOIO XiRM'
AXTMr \o# ddMd TVM RiQrr\ XiRMO inTo TVM Yor!Op[M1 OMRM[T TVM `MRRoIOIO prohM[T1 TVMn on TVM Top TooRQr WoTo^
&ro*ect $ &roperties' @VMn1 OMRM[T ]Android] in TVM RiOT To TVM RMXT' In TVM ]EiQrr\] OM[Tion1 [Ri[! dd1 TVMn dd
QoTV TVM IOIOEiQ nd IOIOEiQ3@ RiQrriMO' bo# OVo#Rd OMM QoTV oX TVMZ YiTV WrMMn [VM[! Zr! O OVoYn
QMRoY cnoTM^ iZWM doMOn]T OVoY TVM IOIOEiQ3@1 Q#T iT OVo#Rd QM TVMrM iX #OinW 3R#MTooTVd'
AROo1 Z!M O#rM TVM ]>rohM[T 3#iRd @rWMT] iO propMrR\ OMRM[TMd [[ordinW To TVM OpM[iXi[ Android OS \o# rM
#OinW'
Note: IX \o# M0Mr nMMd To [VnWM \o#r Q#iRd TrWMT cO\ \o# rM #OinW dM0i[M YiTV diXXMrMnT Android OSd1
\o# [n [VnWM iT VMrM'
fd @VM nMNT TVinW \o# nMMd To do iO Z!M O#rM \o#r pp VO inTMrnMT pMrZiOOionO' @o do TViO1 opMn TVM
AndroidPniXMOT'NZR XiRM Ro[TMd in TVM Zin prohM[T TrMM' P!M O#rM \o# rM in TVM pMrZiOOionO TQ1 TVMn [Ri[!
Add $ -sage &ermissions1 TVMn Z!M O#rM TVM ]LZM] XiMRd iO ndroid'pMrZiOOion'IL@F?LF@' SMM TVM pi[T#rM
QMRoY Xor rMXMrMn[M^
AXTMr \o# V0M donM TViO nd O0Md \o#r prohM[T1 TVM prohM[TO MNpRorMr YindoY OVo#Rd Roo! OoZMTVinW Ri!M TViO^
LoTi[M TVM rMd N Mrror XRWO rM WonM'
@VM prohM[T TrMM VO Zn\ XiRMO' bo# rMRR\ don]T nMMd To ZMOO YiTV TVM IOIOEiQ prohM[T TrMM Oo \o# [n
ZiniZiiM TVT onM' @VM XiRM TVT [onTinO TVM h0 [odM Xor TVM IOIO iO in HelloIOIO $ scr $
ioio.e'amples.hello $ /ainActivit0.*ava' Go#QRM [Ri[! on TVM PinA[Ti0iT\'h0 XiRM nd \o# OVo#Rd OMM TViO^
`MrM \o# [n OTrT YriTinW [odM nd [VnWinW TVM `MRRoIOIO O!MT[V' AT TViO poinT \o# [n !MMp rMdinW or h#Zp
iZZMdiTMR\ To OMTTinW #p \o#r IOIO Qord nd TMOTinW TVM pp'
@VM PinA[Ti0iT\'h0 XiRM [onTinO TVM [odM TVT TR!O To TVM IOIO Qord' IX \o# YnT To [VnWM TVM 2I c#OMr
inTMrX[M or WrpVi[Od oX \o#r pp1 TVM res $ la0out $ main.'ml XiRM iO YVMrM \o# Z!M TVM [VnWMO' @VM
Zin'NZR XiRM in TVM `MRRoIOIO MNZpRM #OMO n inTMrX[M TVT Roo!O Ri!M TViO^
"or ZorM inXorZTion on UPE R\o#TO1 OMM TVM VMRRo YorRd MNZpRM on dM0MRopMr'ndroid'[oZ1 TVMn O[roRR
doYn To TVM ]2pWrdM TVM 2I To UPE E\o#T] OM[Tion'
AT TViO poinT \o# OVo#Rd QM rMd\ To YriTM \o#r oYn Android IOIO pp' bo# [n noY !MMp rMdinW or h#Zp
iZZMdiTMR\ To OMTTinW #p \o#r IOIO Qord nd TMOTinW TVM pp'
Trou%leshooting &ro*ect Errors
F[RipOM VO TVM QiRiT\ To [oZpiRM \o#r [odM in rMR TiZM' _VMn TVMrM iO n Mrror1 \o# YiRR OMM rMd N OoZMYVMrM
in \o#r prohM[T' @ViO [n ZMn Zn\ TVinWO' @o XiW#rM o#T YVT TVM MrrorO rM1 F[RipOM VO TQ [RRMd ]>roQRMZO]
TVT OVoYO \o# YVT MrrorO \o# rM WMTTinW' @ViO TQ iO #O#RR\ Xo#nd ToYrdO TVM QoTToZ oX TVM F[RipOM YindoY'
SoZMTiZMO TVM Mrror YiRR TMRR \o# MN[TR\ YVT]O YronW nd OoZMTiZMO TVM MrrorO rM ZorM oQO[#rM'
IX \o# rM WMTTinW #n!noYn MrrorO in \o#r prohM[T1 TVMrM rM XMY TVinWO To [VM[! QMXorM WoinW inTo X#RR on
dMQ#W ZodM'
Id P!M O#rM Z!M O#rM /0 I'l [oZpTiQiRiT\ iO OMRM[TMd in F[RipOM' ?iWVT [Ri[! on M[V prohM[T XiRM ci'M'
`MRRoIOIO1 IOIOEiQ1 nd IOIOEiQ3@d1 TVMn WoTo &roperties $ ava 1ompiler' P!M O#rM TVM Ena%le pro*ect
specific settings [VM[!QoN iO OMRM[TMd1 TVM 1ompiler 1ompliance level iO OMT To I'l1 nd TVM -se default
compliance settings [VM[!QoN iO [VM[!Md' @VMn rMOTrT F[RipOM'
<d IX \o# rM WMTTinW rMd MN[RZTion poinTO YVMn \o#r proWrZ opMnO1 XirOT riWVT [Ri[! on M[V prohM[T XiRM nd
WoTo Android Tools $ (i' &ro*ect &roperties' IX TVT doMOn]T XiN iT1 [VM[! TVT \o# V0M RR oX TVM p[!WMO
inOTRRMd Xor \o#r OpM[iXi[ Android' SoTo +indow $ Android #D! /anager To OMM YVT \o# V0M inOTRRMd
nd [VM[! iX \o# nMMd To #pdTM n\TVinW or inOTRR nMY p[!WMO OpM[iXi[ To \o#r dM0i[M' bo# [n ROo Tr\ To
r#n n F[RipOM #pdTM1 WoTo Help $ 1hec, (or -pdates'
kd P!M O#rM \o# V0M TVM [orrM[T ]>rohM[T 3#iRd @rWMT] OMRM[TMd Xor every prohM[T XoRdMr ci'M' `MRRoIOIO1
IOIOEIQ1 IOIOEiQ3@d' SMM TViO OTMp'
kd P!M O#rM \o# V0M TVM ZoOT [#rrMnT 0MrOion oX AG@ TooRO nd pRTXorZ TooRO c[n #pdTM XroZ TVM Android
SGe ZnWMr XroZ YiTVin F[RipOM or r#n MNTMrnRR\ Q#\ r#nninW TVM ppRi[Tion nZMd mndroidm YiTV no
rW#ZMnTOd'
The E'ample IOIO #,etch
AXTMr \o# V0M iZporTMd TVM `MRRoIOIO XiRM nd Rin!Md TVM IOIOEiQ XiRM1 \o# rM rMd\ To OTrT YriTinW [odM'
@VM MNZpRM O!MT[V diOpR\O ToWWRM Q#TTon on TVM O[rMMn1 YVi[V MnQRMO [onTroR oX TVM on4Qord EFG' @ViO
MNZpRM OVoYO 0Mr\ OiZpRM #OWM oX TVM IOIO nd YiRR Wi0M \o# n idM oX YVT To MNpM[T YVMn
proWrZZinW'
@VM [odM in TVM PinA[Ti0iT\'h0 XiRM iO OVoYn QMRoY'
package ioio.examples.hello;
import ioio.examples.hello.R;
import ioio.lib.api.DigitalOutput;
import ioio.lib.api.exception.ConnectionLostException;
import ioio.lib.util.AbstractIOIOActivity;
import anroi.os.!unle;
import anroi."iget.#oggle!utton;
$%%
% #his is the main activity o& the 'elloIOIO example application.
%
% It isplays a toggle button on the screen( "hich enables control o& the
% on)boar LED. #his example sho"s a very simple usage o& the IOIO( by using
% the *+link AbstractIOIOActivity, class. -or a more avance use case( see the
% 'elloIOIO.o"er example.
%$
public class /ainActivity extens AbstractIOIOActivity *
private #oggle!utton button0;
$%%
% Calle "hen the activity is &irst create. 'ere "e normally initiali1e
% our 23I.
%$
+Overrie
public voi onCreate4!unle saveInstance5tate6 *
super.onCreate4saveInstance5tate6;
setContent7ie"4R.layout.main6;
button0 8 4#oggle!utton6 &in7ie"!yI4R.i.button6;
,
$%%
% #his is the threa on "hich all the IOIO activity happens. It "ill be run
% every time the application is resume an aborte "hen it is pause. #he
% metho setup46 "ill be calle right a&ter a connection "ith the IOIO has
% been establishe 4"hich might happen several times96. #hen( loop46 "ill
% be calle repetitively until the IOIO gets isconnecte.
%$
class IOIO#hrea extens AbstractIOIOActivity.IOIO#hrea *
$%% #he on)boar LED. %$
private DigitalOutput le0;
$%%
% Calle every time a connection "ith IOIO has been establishe.
% #ypically use to open pins.
%
% +thro"s ConnectionLostException
% :hen IOIO connection is lost.
%
% +see ioio.lib.util.AbstractIOIOActivity.IOIO#hrea;setup46
%$
+Overrie
protecte voi setup46 thro"s ConnectionLostException *
le0 8 ioio0.openDigitalOutput4<( true6;
,
$%%
% Calle repetitively "hile the IOIO is connecte.
%
% +thro"s ConnectionLostException
% :hen IOIO connection is lost.
%
% +see ioio.lib.util.AbstractIOIOActivity.IOIO#hrea;loop46
%$
+Overrie
protecte voi loop46 thro"s ConnectionLostException *
le0."rite49button0.isChecke466;
try *
sleep4=<6;
, catch 4InterrupteException e6 *
,
,
,
$%%
% A metho to create our IOIO threa.
%
% +see ioio.lib.util.AbstractIOIOActivity;createIOIO#hrea46
%$
+Overrie
protecte AbstractIOIOActivity.IOIO#hrea createIOIO#hrea46 *
return ne" IOIO#hrea46;
,
,
In TVM [odM Qo0M1 TVMrM rM pRMnT\ oX [oZZMnTO TVT MNpRin YVT M[V RinM doMO' @ViO pp iO WrMT OTrTinW
poinT Xor Z!inW O#rM \o#r dM0MRopZMnT Mn0ironZMnT nd TVM IOIO Qord iO Yor!inW [orrM[TR\'
F[RipOM iO 0Mr\ poYMrX#R TooR nd Wi0MO dMQ#WWinW inXorZTion in rMR TiZM' "or inOTn[M1 iX \o# YriTM [odM
TVT doMOn]T Z!M OMnOM1 F[RipOM YiRR OVoY rMd N nMNT To TVM RinM in j#MOTion nd M0Mn Wi0M \o# O#WWMOTionO O
To VoY To [VnWM TVM RinM oX [odM' SiZpR\ Vo0Mr \o#r Zo#OM [#rOor o0Mr TVM RinM nd \o# YiRR OMM OoZMTVinW
Ri!M TViO^
eMMp in Zind1 iX \o# V0M MrrorO1 \o# YiRR noT QM QRM To [oZpiRM nd r#n \o#r [odM1 \o# YiRR nMMd To XiN n\
MrrorO'
AROo1 TVM IOIOEiQ VO TVoro#WV /0Go[O TVT [n QM WMnMrTMd nd QroYOMd 0i F[RipOM' SoTo &ro*ect $
Generate avadocs'
`MrM rM OoZM ZorM rMOo#r[MO To VMRp \o# o#T YiTV YriTinW [odM^
"or RR Android T\pMO1 OMM TVM Android p[!WM indMN'
"or IOIO T\pMO nd MNZpRMO1 OMM TVM IOIO _i!i'
1ompiling) 2oading) and 3unning the App on Your Android Device
IX \o# [VnWM n\ prT oX TVM [odM1 OiZpR\ O0inW TVM prohM[T [oZpiRMO TVM proWrZ nd [rMTMO nMY
`MRRoIOIO'p! XiRM' An p! XiRM iO [oZprMOOMd Android >[!WM XiRM1 OiZiRr To iip nd hr' XiRMO1 TVT iO #OMd To
[rMTM n pp on \o#r Android dM0i[M' @ViO XiRM [n QM Xo#nd in TVM `MRRoIOIO prohM[T TrMM YiTVin TVM Qin
dirM[Tor\'
`MrM rM TVM OTMpO To WMT TVM MNZpRM pp Yor!inW on n LI Android pVonM r#nninW TVM <'k'k pRTXorZ'
I' FnQRM 2S3 dMQ#WWinW' #ettings $ Applications $ Development $ Ena%le -#4 De%ugging
<' InOTRR TVM p! XiRM' @VM MOiMOT Y\ To WMT TVM p! XiRM on \o#r dM0i[M iO To pR#W TVM dM0i[M inTo \o#r
[oZp#TMr' _VMn proZpTMd To inOTRR dri0MrO1 poinT To TVM dri0Mr Ro[TMd in Android cOVo#Rd QM in >roWrZ "iRMO
Xor _indoYO #OMrOd $ android5sd, $ e'tras $ google $ us%6driver' LMNT1 riWVT [Ri[! on TVM `MRRoIOIO prohM[T
in TVM prohM[T MNpRorMr YiTVin F[RipOM WoTo 3un As $ Android Application cor ViTTinW TVM WrMMn pR\ Q#TTon on
TVM Top TooR Qr r#nO \o#r ppRi[Tion O YMRRd' bo#r p! XiRM OVo#Rd noY QM inOTRRMd on \o#r ndroid dM0i[M'
2npR#W \o#r ndroid dM0i[M XroZ \o#r [oZp#TMr1 TVMn Zo0M To TVM nMNT OTMp' PorM inXorZTion on TVM SooWRM
2S3 dri0Mr iO Xo#nd VMrM'
k' >rMprM TVM IOIO Qord' @VM onR\ TVinW \o# nMMd To do Xor TVM `MRRoIOIO MNZpRM iO poYMr TVM IOIO Qord'
eMMp in Zind1 TVM IOIO Qord YiRR RY\O nMMd n MNTMrnR poYMr O#ppR\ QMTYMMn J4IJa' Single cell LiPos
batteries will NOT work with this connector, you need a 5-5! in"ut# bo# [n [onnM[T TVM poYMr O#ppR\ To TVM
aIL nd SLG pinO cVMdMrO YiRR nMMd To QM OoRdMrMd in pR[Md1 O OVoYn VMrM O?'''
'''\o# [n #OM TVM opTionR /S@ [onnM[Tor on TVM Q[! oX TVM Qord Xor ZorM OM[#rM poYMr [onnM[Tion O OVoYn
QMRoY' @VM O#WWMOTMd prTO rM >?@4nolI<1 @OE4nofkg1 nd poYMr O#ppR\ @OE4no<lp'
g' _iTV TVM IOIO poYMrMd1 \o# [n pR#W TVM 2S3 [QRM inTo TVM IOIO nd inTo \o#r Android dM0i[M' @VM
Android dM0i[M OVo#Rd OVoY TVT 2S3 dMQ#WWinW iO [onnM[TMd in TVM noTiXi[Tion Qr1 in ddiTion1 TVM Android
OVo#Rd indi[TM iT iO [VrWinW' IX \o# don]T OMM MiTVMr oX TVMOM TYo noTiXi[TionO1 Tr\ dh#OTinW TVM ][VW]
poTMnTioZMTMr nMNT To TVM 2S3 [onnM[Tor on TVM IOIO Qord' @VM poTMnTioZMTMr [VnWMO VoY Z#[V [#rrMnT iO
QMinW #OMd Q\ TVM poYMr O#ppR\ To [VrWM TVM pVonM' IX TVMrM iOn]T Mno#WV1 TVMn TVM pVonM ZiWVT noT QM dMTM[TMd
Q\ TVM IOIO'
J' OpMn TVM `MRRo IOIO pp nd ToWWRM TVM Q#TTon1 \o# OVo#Rd OMM TVM \MRRoY OTT EFG [oZM on nd oXX'
=onWrT#RTionOq bo# rM noY on \o#r Y\ To [rMTinW \o#r 0Mr\ oYn IOIO ppOq
LoTM^ @VM QMOT Y\ To dM0MRop IOIO ppO iO To V0M \o#r pVonM pR#WWMd inTo \o#r [oZp#TMr YViRM YriTinW nd
MdiTinW TVM [odM' @VMn r#nninW TVM ppRi[Tion cO OVoYn in OTMp <d YiRR MrOM TVM oRd pp nd Rod TVM nMYR\
MdiTMd pp onTo \o#r pVonM' bo# [n noY #npR#W \o#r pVonM XroZ \o#r [oZp#TMr1 TVMn pR#W iT inTo TVM IOIO To
TMOT YVT \o# V0M donM'
E'ample &ro*ects
_M V0M QRoW poOT TVT OVoYO or VO Rin!O To Zn\ YMRR do[#ZMnTMd MNZpRM prohM[TO1 YiTV Oo#r[M [odM' IT iO
WrMT rMOo#r[M1 Oo pRMOM [VM[! iT o#Tc nd QM O#rM To rMd TVro#WV TVM TMNT Xor Rin!Odq
-pdating the IOIO (irmware
@VM IOIO XirZYrM iO [odM TVT OiTO on TVM >I= Zi[ron[onTroRRMr Ro[TMd on TVM IOIO Qord' SoZMTiZMO nMY
[VnWMO YiRR QM p#OVMd o#T nd \o# ZiWVT V0M n Qord YiTV oRdMr XirZYrM' @VMrM iO 0Mr\ OiZpRM Y\ To
#pdTM TVM IOIO XirZYrM'
IOIO PnWMr _i!i