Entreprenöriell programmering TDP028
2 Översikt Kursupplägg Projekt Examination Öppna upp sin telefon Android introduktion
3 Kurspersonal Rita Kovordanyi, kursansvarig, examinator Android Erik Berglund entreprenöriella aspekter Josef Fagerström handledning Anders Fröberg Android, systemadministration, tekniska frågor Madeleine Häger Dahlqvist kursadministratör
4 Välkomna till i E-huset, 1 tr upp korridor till B-huset Anders Fröberg Erik Berglund Josef Fagerström Rita Kovordanyi
5 Bygga en häftig Android app
6 Vi kör Java för Android https://codinginflow.com/java-or-kotlin-android-beginner
7 Kursmål Eget större projekt Definiera och planera egen produkt Använda API:er/tekniker relevanta för entreprenöriella projekt Bli medveten om hur positionering och marknadsföring påverkar produktutveckling Användning av vetenskaplig litteratur i produktutveckling Öva på muntlig presentation - screencasts
8 Projektet Genomförs individuellt Stöd i föreläsningar, bl.a. Android grunder och best practices Konkurrensanalys Litteratursökning Seminarier Resurstillfällen med öppen dörr till oss
9 Huvudsakliga uppgifter Definiera och bygg en större Android-app på 10 hp Använda vissa centrala APIer - Obs detta påverkar er app och innebär att ni inte riktigt kan bygga helt vad ni vill Versionshantera och skriva relevanta commitkommentarer minst varje vecka under hela kursens gång
10 Mindre uppgifter Freemium-seminarium App-beskrivning Konkurrensanalys-övning Tekniskt PM Två screen-casts
11 Freemium-seminarium Läs och diskutera artiklar: Monitizing an infinite runner Why do players buy in-game content? An empirical study on concrete purchase motivations A Study of Crucial Factors for In-App Purchase of Game Software
12 App-beskrivning Kort intro till appen Tänkt användargrupp Syfte: Vad appen är tänkt att göra Kort beskrivning av användarens väg genom appen
13 Konkurrensanalys-övning Välj existerande app Analysera Vad måste en ny app ha med minst för att kunna konkurrera? Vad kan en ny app ha med för att sticka ut / profilera sig mot den existerande appen?
14 Tekniskt PM Litteratursökning och referenshantering T.ex. hur man kan använda analytics i lean utveckling T.ex. hur man uppnår modularitet i Android-kod Andra aspekter av kodkvalitet
15 Slutpresentation: screencasts Ca. 5 min långa Användardemo Kodgenomgång Tekniska lösningar du vill lyfta fram T.ex. de betygsgrundande features, API:er du har implementerat
16 Examination Du väljer att jobba mot en viss betygsnivå Du kan välja bland poänggivande API:er och tekniska features För olika betyg krävs olika antal poäng (se mer info på hemsidan)
17 I inlämnad readme i repo Förutom app-beskrivning Viktigt att ange betygsambition Vilken betygsnivå du har siktat på Lista av poänggivande API:er i appen, med kort beskrivning av varje Lista av poänggivande tekniska features, med kort beskrivning
18 Projektstyrning Krav på kontinuerliga commits med informativa kommentarer Minst en commit varje vecka, med start denna vecka Förslag på vad som ska göras varje vecka finns på kurshemsidan (Projekt > Examination)
19 Deadline för slutinlämning Måndag vecka 2 i januari, kl 17:00
20 Kurslitteratur Börja läsa här: https://developer.android.com/training/basics/firstap p
21 Schema Tätt med föreläsningar och lektioner i början av ht1 Sedan fri handledning Välkomna med frågor även utanför handledningstid, t.ex. via mail
Developer mode på telefon Eller köra på emulator
23 Praktiska detaljer Anders Fröberg har ett antal telefoner som kan lånas Emulator i programmeringsmiljön Viss funktionalitet begänsad (t.ex. GPS)
24 Installera miljön Android Studio Guide hur man installerar Android Studio: https://developer.android.com/studio/install.html
25 Egen mobil eller platta
26 Felsökning via USB-koppling
27 Emulatorn kontroller
28 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
29 Virtuell kamera Nås genom att klicka på appen Kamera
30 Virtuell GPS
31 Virtuella sensorer
Android introduktion
19-09-02 Vad som skiljer Android från vanliga språk Responsivt Appar får ett par sekunder på sig att reagera på användarinput Resurssnålt Appar i bakgrunden dödas när minnet behövs för annat Så fort app:en hamnar i bakgrunden är det fritt fram för Android att döda den Jfr. Quit på en desktop, som klickas av användaren Viktigt att spara undan viktig info
34 Vanlig java jämfört med Android Lägre minnesanvändning
35 Android app
36 Kompilering Sköts av Gradle Olika inställningsfiler Talar om vilka moduler som ska kompileras Vilka bibliotek man vill ha med Vilken klass som är main
37 Projektstruktur
38 Projektstruktur Kod Resurser
39 Resurser
40 Navigation graphs Kan bygga appen från UI och sedan till kod Obs! mycket kod som genereras! Kan vara bättre att själv skapa koden Bättre kontroll, bättre inlärning
41 Deklarativ layout Skinnet, dvs. användargränssnittet (UI) på appen: t.ex. textfält, knappar Beskrivs i separat textfil (XML) Beteendet Klickhantering, etc. sköts i Java-kod
42 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 när kod körs Dynamiskt tillägg/borttagning av element Fyllning med innehåll
43 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
44 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/inputtext android:inputtype="textautocorrect android:hint="@string/inputtexthint" /> </LinearLayout>
45 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);
46 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) { }
47 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) { }
48 Fördelar med denna lösning Anonym lyssnare Kan ha olika lyssnare kopplade till olika knappar, och input-fält inom samma klass 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
50 Activity En avgränsad mängd funktionalitet som motsvarar en task för en användare T.ex. lista alla mail i inkorgen T.ex. skriva mail Samlas i en klass som ärver från Activity
51 Ingen konstruktor, utan oncreate() public class MainActivity extends Activity { private EditText newtext; @Override protected void oncreate( ) { setcontentview(r.layout.activity_main); metod
52 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 Sköt det i onsaveinstancestate()
Spara undan tillstånd Mobilen harroterats Backat urappen
54 Två viktigaste life cycle metoderna public class MainActivity extends Activity { @Override protected void oncreate( ) { // koppla till xml, hitta textfält, etc. @Override protected void onpause( ) { // spara undan tillstånd
Tack! Frågor? www.liu.se