Android översikt. TDDD80 Mobila och sociala applikationer

Relevanta dokument
Android översikt. TDDD80 Mobila och sociala applikationer

Entreprenöriell programmering TDP028

Entreprenöriell programmering. Android översikt

Android fortsättning. TDDD80 Mobila och sociala applikationer

Agil användbarhetsutveckling för handhållna enheter. Per Lind

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

Lab5 för prgmedcl04 Grafik

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Ett enkelt Androidspel, tutorial

Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

PROGRAMMERINGSTEKNIK TIN212

Kommunikation och Användargränssnitt - Androidutveckling

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

TDDD80 Mobila och sociala applikationer. Kursintroduktion

MVC med Javascript och Ajax. Filip Ekberg

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Ett enkelt Androidspel, tutorial

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Windows Forms Winstrand Development

FRÅN MAVEN TILL GRADLE

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Applikationsutveckling för Android

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Webbprogrammering TDDD52

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Grafiska användargränssnitt i Java

Gissa ordet, tutorial

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS

OOP Objekt-orienterad programmering

Tentamen Nätverksprogrammering Lösningsförslag

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

ID1004 Laboration 3, 5-6 November 2012

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDDD80 Mobila och sociala applikationer. Kursintroduktion

C++ Objektorientering - Klasser. Eric Elfving

Klasshierarkier - repetition

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Lektion Händelsehanterare

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Exemple på Tentauppgifter Webbprogrammering

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Properties. Användbara metoder som kan anropas i propertychanged:

Grafiska användargränssnitt i Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Konstruktion av klasser med klasser

Internationalisering/lokalisering på webben

DAT043 - föreläsning 8

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: Copyright Version 1.2 Sidan 1 av 9.

4.4 Swing ett interaktivt grafiskt gränssnitt

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

TDDD78 Viktiga begrepp, del 2

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Lösningar för tenta 3 DAT043,

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

TDDC76 - Programmering och Datastrukturer

Arv. Objektorienterad och komponentbaserad programmering

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Mobila applikationer och trådlösa nät

Högskolan i Gävle. Introduktion till att skapa appar för Android VT Eat App! Jacob Gavin

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Android La sa va rden fra n sensorer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

INTRODUKTION TILL ANGULAR JS

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

ASP.NET Thomas Mejtoft

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Imperativ programmering. Föreläsning 4

Föreläsning 3: Händelsestyrda program och användargränssnitt

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

Lektion 2, Grundläggande funktioner i ASP.NET

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

FactoryCast HMI. Premium & Quantum PLC. Applets

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) Slutrapport

F4. programmeringsteknik och Matlab

TDDC76 - Programmering och Datastrukturer

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Installation X c o v e r 4

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Transkript:

Android översikt TDDD80 Mobila och sociala applikationer

Översikt Köra app på mobil / emulator Android Studio introduktion Android kodning

Android labb 1

Köra på mobil / emulator

Developer mode på mobilen https://www.youtube.com/watch?v=sqcgvqrz8wy

Egen mobil eller platta

Felsökning via USB-koppling

Emulator På IDA: Starta emulatorn från terminalfönster Detta bl.a. för att undvika frågor om att installera API-nivå si och så

Emulatorn kontroller

Internet Emulatorn delar datorns internetuppkoppling Kolla genom att t.ex. öppna emulatorns webläsare, och se om kontakt med internet Annars: Inställningar på datorn för att dela internet

Virtuell kamera Nås genom att klicka på appen Kamera

Appar i emulatorn

My Application

Om My Application behöver GPS

Virtuell GPS

Virtuella sensorer

Android Studio introduktion

IntelliJ

Skapa nytt projekt

Välj API-nivå

API-nivåer

API nivå i nyss skapade projektet

minsdkversion Ska kunna köras på dessa enheter Kommer att kräva användning av kompatibilitetsklasser och metoder i app-koden

targetsdkversion Utnyttjar features på denna API-nivå Ska kunna köra (har testats) på denna API-nivå Hur är det med framåtkompatibiliteten? Kan köras på högre API-nivåer, eftersom Systemet kommer att koppla in framtida standard kompatibilitetsåtgärder T.ex. anpassa utseende till senare API-nivåer Blir kanske inte som man tänkt sig

Java Android Lägre minnesanv.

Android app

Kompilering Sköts av Gradle Olika inställningsfiler Talar om vilka moduler som ska kompileras Vilka bibliotek man vill ha med

Två nivåer av build.gradle Projekt: Googles repo, övergripande dependencies

Två nivåer av build.gradle App: Dependencies för just din app

Projektstruktur

Projektstruktur Kod Resurser

Resurser

Constraint layout tutorial https://www.youtube.com/watch?v=xammbnzi5ve

Android kodning

Android labb 1 Activity

Android labb 1 Textfält, knappar = Views

Deklarativ layout Skinnet, dvs. användargränssnittet (UI) på appen: t.ex. textfält, knappar Beskrivs i separat textfil (XML) Beteendet Klickhantering, etc. beskrivs i Java-kod

XML extensible Markup Language Ung. som html, fast För vilka data som helst Fritt att bestämma taggar och attribut HTML: <img src="madonna.jpg"> </img> XML: <step number="3">connect A to B.</step>

Android UI layout i XML <LinearLayout xmlns:android="http://schemas.android.com/ " android:orientation= vertical <EditText android:layout_width="wrap_content android:layout_height="wrap_content android:id="@+id/edittext android:inputtype="textautocorrect android:hint="@string/edittexthint" /> </LinearLayout>

XML vs. kod XML Statisk placering och utseende på komponenter (dvs. kan inte ta bort under körning) Java kod Tomma behållare (t.ex. FrameLayout) kan sedan fyllas dynamiskt från kod Dynamiskt tillägg/borttagning av element Fyllning med innehåll

I koden anges vilket XML som ska användas public class MainActivity extends Activity { private EditText newtext; var dekl @Override protected void oncreate( ) { setcontentview(r.layout.activity_main); metod

Android UI layout i XML <LinearLayout xmlns:android="http://schemas.android.com/ " android:orientation= vertical <EditText android:layout_width="wrap_content android:layout_height="wrap_content android:id="@+id/edittext android:inputtype="textautocorrect android:hint="@string/edittexthint" /> </LinearLayout>

Hitta textfält i XML-filen public class MainActivity extends Activity { private EditText newtext; @Override protected void oncreate( ) { setcontentview(r.layout.activity_main); newtext = (EditText) findviewbyid(r.id.edittext);

Fånga upp klick (enkelt) I XML: <Button android:layout_width="wrap_content android:layout_height="wrap_content android:text="@string/button_send android:onclick="sendmessage" /> I Activity-kod: public void sendmessage(view view) { }

Fånga upp klick (rekommenderat) Skapa lyssnare i Activity-koden: Button btn = (Button) findviewbyid(r.id.mybutton); btn.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view view) { sendmessage(view); } }); public void sendmessage(view view) { }

Fördelar med denna lösning Anonym lyssnare som inre klass till Activity Kan ha olika lyssnare kopplade till olika knappar, och input-fält, etc. Skickar anropet direkt vidare till en lokal metod Kan testa (anropa) metoden utan att behöva klicka på knappen varje gång Underlättar automatiska tester

Activity lifecycles

Vad som skiljer Android från Java Resurssnål Appar i bakgrunden dödas när minnet behövs för annat Responsiv Så fort app:en hamnar i bakgrunden är det fritt fram för Android att döda den Jfr. desktop-app som körs tills Quit klickas Appar får ett par sekunder på sig att reagera på användarinput

Ingen konstruktor, utan oncreate() public class MainActivity extends Activity { private EditText newtext; @Override protected void oncreate( ) { setcontentview(r.layout.activity_main); metod

Aktiviteter skapas och dödas av Android Stoppas om T.ex. telefonen roteras Dödas om T.ex. appen hamnat i bakgrunden (och ont om minne) Spara undan tillstånd i god tid. Två sätt: Ge dina vyer Id, och låt systemet spara dessa vyer Override på onsaveinstancestate()

Spara undan tillstånd Mobilen harroterats Backat urappen

Metoder för onpause(), etc. public class MainActivity extends Activity { @Override protected void oncreate( ) { // koppla till xml, hitta textfält, etc. @Override protected void onpause( ) { // spara undan tillstånd

Anropa en annan aktivitet

Anrop med intent Går via OS Vet inte alltid om finns aktivitet som kan ta emot Android kan launcha annan app om nödvändigt

Anrop av aktiviteter med intent Förfrågan att få en uppgift utfört Intent intent = new Intent(Intent.ACTION_VIEW, ); fyll på med extra information att skicka med startactivity(intent);

Anrop av aktiviteter med intent Starta aktivitet i egna appen Intent intent = new Intent(this, NextActivity.class); fyll på med extra information att skicka med startactivity(intent);

Exempel på intent public void createalarm(string message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM).putExtra(AlarmClock.EXTRA_MESSAGE, message).putextra(alarmclock.extra_hour, hour).putextra(alarmclock.extra_minutes, minutes); if (intent.resolveactivity(getpackagemanager())!= null) { startactivity(intent); } } Testa om det finns aktivitet därute som kan svara på anropet

Att ta emot resultat från en aktivitet Callback: Activity1 implementerar onactivityresult() som Android anropar när activity2 är klar @Override protected void onactivityresult(, Intent data) { } Intent med resultat-data

Nästa gång Andra komponenter Fragments Lägg innehåll i UI-komponenter Nätverk Hålla appen synkad mot en server

www.liu.se