as it relates to android studio - first in maryland · pdf fileas it relates to android studio...

17
As it relates to Android Studio By Phil Malone: [email protected] *

Upload: truongnguyet

Post on 31-Jan-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

As it relates to Android Studio By Phil Malone: [email protected]

*

*Jargon, Jargon and More Jargon

*Where to find tools/documentation

*The Software Components

*Driver Station

*Robot Controller

*The IDE

*Downloading the Code Template

*The anatomy of an OpMode…

*Creating your own OpMode

*Deployment

*Testing

*

*

*Gradle is a build automation tool that

builds upon the concepts of Apache Ant

and Apache Maven and introduces a

Groovy-based domain-specific language

(DSL) instead of the more traditional XML

form of declaring the project

configuration.

* Android Mobile Phone Operating system, by Google.

Multiple versions with ever growing capabilities.

FTC uses Android 4.4.4 KitKat

* App Application (program that runs on a mobile device)

* IDE Integrated Development Environment.

(Program for writing programs)

* SDK Software Development Kit

(Parts to help you build a program)

Google SDK

FTC SDK

* API Application Programmer Interface

(defines built-in program features)

*Google API Defines built-in Google features

* Android Studio An IDE for writing Java APPs for Android Phones

* Project All the components that go into a specific application.

*Gradle Used to “build” the application from its components.

* Java A high-level text based programming language. A

commonly used foundation for developing and

delivering content on the Web.

* Class A class is template for creating objects by which

defines the object properties and behaviors. Java

class objects exhibit the properties and behaviors

defined by its class. A class can contain fields and

methods to describe the behavior of an object.

*Object Exhibit the properties and behaviors defined by

its class.

* Field Data stored within an object

*Method Action that can be performed by/on an object.

* Refractor Refactoring is the process of changing a software

system in such a way that it does not alter the

external behavior of the code yet improves its

internal structure

* ADB Android Debug Bridge

(A means to deploy and test Apps)

* Deploy Transfer an App to the Android Phone.

(Can be done wired or wirelessly)

* opMode An Operational Mode that defines how your robot

will run during a single match period. One App

contains multiple opModes. These can be for driver

control mode or autonomous.

OpModes are selectable from the Driver Station, prior

to the match starting.

*

*Your team will use Android Studios and the FTC SDK to

write a custom App in Java.

*You will build your app to utilize API 19 which supports

the Android 4.4.4 Operating System (KitKat).

*You will add one or more new classes in the form of

custom opModes.

*You will use Gradle to build the App, and ADB to

deploy it to the ZTE phone on your robot.

** A single App is created which contains all the possible robot operational modes

(opModes).

* All of the typical “App functionality” is already included and locked down.

* Methods are provided for accessing robot hardware and communicating between

Driver Station.

* The App attaches to the hardware using “names” that are set through an offline

“Configuration” process.

* Several sample opModes are included, but need not be used.

* New blank opModes can be added, and then filled in with the desired behavior

code.

* opModes provide several empty “methods” which should be overridden with new

user code.

** init() Called once when the driver selects a new opMode and

presses INIT

* init_loop() Called repeatedly while waiting for driver to hit “PLAY”

button. Robot hardware is updated between each call.

* start() Called once when driver hits “PLAY”

* loop() Called repeatedly while waiting for driver to hit “STOP”

or for a timed match to complete. Robot hardware is

updated between each call.

* stop() Called once when the driver hits “STOP” or a timed

match ends.

* The code in each method should quickly do its job and then return.

**Init() is provided to enable robot setup before the

match begins.

*Devices should be looked up in the Hardware Map,

and made accessible to the rest of the code.

*One-time actions should be performed, like setting

initial servo positions or starting a gyro calibration.

**Init_loop() is provided for ongoing pre-game setup.

*Eg: For proceeding with a gyro calibration that

takes several seconds, or any other action that’s

allowed by the rules prior to the start of the match.

**Start() is provided to set-up any initial match

conditions.

*This could be starting a game clock, or deciding on

an autonomous action.

*Start() can also work in combination with stop() to

allocate/free program storage, or attach/detach

from custom sensors.

**Loop() is the primary control loop.

*Game controller and sensor inputs can be read, and

motor/servo actions can be taken.

*If special timing or sequential actions are required,

one or more state machines may be required to

manage those actions over several loop() calls.

**Stop() is provided to get the robot back to a safre

mode.

*It should be used to end any actions begun in loop()

or close out any resources created in start().

** Strictly speaking you can get by putting code in just two of the

methods.

* init() for connecting with the sensors/motors by name.

(provides a chance to detect bad names prior to running)

* loop() for running the robot during the match.

*Note: There is also a type of opMode called a linearOpMode. This

creates a new thread that lets you write your code in-line, but its

capabilities and limitations were not well defined prior to kickoff. So

we’ll just stick with opMode.

*Now let’s look at the code…

*