[Powered by Google Translate] [Seminarium] [Android Apps (nu med Jelly Beans!)] [Jordan Jozwiak] [Harvard University] [Detta är CS50.] [CS50.TV] Hej allihopa, och välkomna till Android Apps (nu med Jelly Beans!) Seminar. Det kallas nu med Jelly Beans, naturligtvis, eftersom den senaste versionen av operativsystemet kallas Jelly Bean. När jag talade om Android förra året och gjorde det i stort sett samma seminarium Jag presenterar designmönster och stilistiska val för Gingerbread, även om Ice Cream Sandwich hade kommit ut på tiden, och detta är något vi pratar om att gå framåt en liten bit. Android, naturligtvis, har vissa problem med fragmentering, så den senaste Google operativsystemet är vanligtvis inte riktigt kommer att bli vanligare bland användarna för potentiellt upp till ett år, tyvärr. Men bortsett från det, vi pratar om många skäl till varför Android är mycket bättre än iOS. Okej, vi pratar om Android kontra iOS, några design paradigm, hur du kommer att få ställa upp i bara en bild, och den stora skillnaden mellan denna och förra året är jag bara vill zooma genom några konceptuella saker som arbetar med operativsystemet och sedan gå in i en riktigt grundläggande exempel. I själva verket, bara exempel som Google beskriver för att bygga din första app, och vi ska gå igenom det tillsammans och bara beskriva. Jag vet att många av er bara har kodat i C, så Java är redan på väg att bli ett annat perspektiv, och detta sätt kommer du få fötterna blöta och känna sig lite mer bekväm med det förhoppningsvis. En snabb sammanfattning, Android kontra iOS. I Android finns här en-gång utvecklare avgift på $ 25, inget av detta $ 100 per år sak. Det finns inga restriktioner, vilket innebär att om jag vill skicka en app, Jag skickar bara det, och det finns ingen godkännandeprocessen som det finns för iOS. Du får utvecklas med Java med Eclipse, som är plattformsoberoende, så det spelar ingen roll om du har en Mac, Windows, eller någon Linux-maskin. Naturligtvis med iOS måste du använda Xcode på en Mac, och Android används av många fler människor, så om du vill att din app att ha någon form av synlighet eller kanske tjäna lite pengar från annonser är du förmodligen mer benägna att dra nytta av Android. Och en sak som alltid har varit känt om Android är den extrema mängden av anpassning, medan iOS är mycket fast i sitt sätt så att de kan upprätthålla säkerhet och kontroll över varje liten aspekt av designen inom sitt operativsystem och de enskilda apps. Android är väldigt fri form, och det finns så många fler möjligheter. Okej, några design paradigm. Kallelse här precis som iOS har tabletter och iPhone och iPod Touches de har att stödja, säger, som ett dussin enheter om du vill stödja historiska saker också. Med Android måste du stödja hundratals enheter, så finns det några saker som Google har försökt att genomföra att göra användaren uppleva lite mer konsekvent, men vi kommer också att prata om hur detta innebär att det finns frågor av fragmenteringen att du måste hela tiden vara medveten om att stödja. Fragmentering innebär att det finns många olika operativsystem, många olika telefoner med olika hårdvara som kör Android allt på samma gång, så denna graf går här tillbaka i ca 6 månader. Ja, 6 månader, och du kan se hur den mörkaste bandet på botten är Jelly Bean, som kom ut under sommaren, och du kan se just nu troligen omkring 2% av de telefoner har det. Ice Cream Sandwich kom ut över ett år sedan, och en fjärdedel av de telefoner har det. Det finns fortfarande en hel del telefoner som använder OS version från år sedan. En sak som Google har försökt att göra för att göra användarupplevelsen en mycket mer konsekvent mellan appar börjar med Honeycomb, vilket är tabletten versionen, då Ice Cream Sandwich och Jelly Bean, De försöker verkligen att betona användningen av denna åtgärd bar, vilket är vad du kan se i toppen här, allt rätt här, inklusive denna lilla inställningar. Det är designen val. Nu, när du ser de tre prickarna betyder det klickar på detta, och det kommer att finnas en rullgardinsmeny, som har någon form av inställningar. Detta visar bara upp för att jag klickade på den här knappen. Detta är något som de försöker använda för att göra appar lite mer konsekvent över hela linjen, och så att användaren har en bättre känsla för enhetlig upplevelse. Okej, så om du inte redan har gjort det eller om du tittar på hemmaplan då kan du följa dessa steg för att ställa in kodning miljö. Det kommer att innebära att gå till hemsidan här. Du kan Google installera Android SDK och följer några beskrivningar där. De berättar allt. De har du installerar SDK nedladdning Eclipse Classic version, även om, naturligtvis, vi kodning i Java. De rekommenderar en, och sedan denna ADT, Android Development Tools, är en plugin som du installerar i Eclipse som låter dig ha en mycket mer strömlinjeformad upplevelse med Android i Eclipse. Det kommer att ge dig några grafiska användargränssnitt för att utforma de synpunkter, och det kommer att ge dig mycket mer stöd och möjligheten att starta med emulatorn och allt sånt. Ansökan ram. Jag vill tala om hur projekten inom Android är strukturerade, och sedan går vi in ​​i ett snabbt exempel, och förhoppningsvis Du kan ställa frågor när som helst och känna sig bekväma i slutet av den. Vi har lite jargong först. En aktivitet är som skärmen du ser när du startar ett program. Hela upplevelsen är själva aktiviteten, så du kan se det som en skärm eller en vy, men det är faktiskt källkoden sidan av det. Vi kallar fortfarande själva gränssnittet del av det en vy. Det är ungefär som hur i pset 7 hade vi kontrollern och sedan vyn. Aktiviteten är mer eller mindre den registeransvarige, och vyn är vad vi gör i termer av XML som är associerad med denna verksamhet. Fragment är något som genomförs i Ice Cream Sandwich framöver. Det är bara en idé om att ta delar av vyn eller aktiviteten och delar upp dem i separata områden, så att vi kan göra vår kod mer användbara för dessa många olika enheter att vi måste stödja, och det är bara ett sätt att försöka också faktor ut mer kod. Tjänster är bakgrunden saker som spelar musik eller navigationsriktningar potentiellt. Innehållsleverantörer, dessa API: er i operativsystemet som gör att du kan komma åt delade data såsom kontaktinformation, och sedan en avsiktsförklaring är något vi ska använda när vi vill starta en ny verksamhet från vår nuvarande verksamhet. Hej Android, kommer detta att bli ett projekt som vi pratar om. Jag ska faktiskt göra det åt dig, och då ska vi göra en sak där vi klickar på en knapp med lite text och lansera en ny aktivitet. Mycket enkelt, men jag vill gå igenom vad kommer att gå in i ett projekt som detta. När du gör det nya projektet kommer du se i Eclipse Det är det här projektet heter Hej Android. Sedan finns det en hel massa mappar här. De som du verkligen sysslar med är källan mappen resursen mappen de res, och i viss mån den libs mappen för bibliotek. Och bara så att vi är på samma sida med det om du skulle skapa ett nytt projekt, du kan göra det här, så om jag vill kalla det HelloAndroid, och då gör automatiskt en hel massa av information för oss. Paketets namn är tänkt att vara en unik identifierare som normalt skulle förknippas med webbplatsen, om du hade en. Till exempel kommer jag kalla detta net.cs50.helloandroid. Och jag har redan gjort det här projektet en gång. Okej, sorry. Låt oss kalla det HelloCS50. Och så kommer det att fråga saker som vad för slags ikon vill vi göra. Detta är på grund av Android Developer Tools-gränssnittet, den plugin som vi lagt till Eclipse, så att vi kan välja saker som vilken ikon som vi vill, och det skulle gå in på det djupet om vi vill. Men i slutändan, bara göra projektet, och allt dyker upp just här. Som jag visade på den andra skärmen, vi har den ursprungliga mappen, och jag ska tala om vad allt detta betyder snart, men du kan se att omedelbart tar oss till HelloCS50 skärmen. Det finns några knappar över här för att lägga till text och text fält layouter. Det är ungefär som XCode men tyvärr inte riktigt lika strömlinjeformad. Men klippen kommer att vara din vän och ADT i synnerhet för att göra detta. Okej, är källan mapp där Java filerna hålls, och det är faktiskt lanseringen av ditt program. Det är i princip som de registeransvariga. Resursen mapp eller res är där vi ska hålla skärmlayouter, bilder, ljud, text, animationer och allt annat, libs naturligtvis biblioteken. Och Manifest, det är det sätt som Android-systemet känner hur man interagerar med din app. Den berättar om behörigheter och vilka aktiviteter som faktiskt kommer att köras. Det är all väsentlig information som är nödvändig för att köra appen. Källan mappen är-Om vi ​​vidgar det som ni kan se här. Och ett exempel på att en kod skulle se ut, detta är den ursprungliga koden. Som vi kallade det, MainActivity. Som standard får vi oncreate, vilket är en funktion som kallas då denna verksamhet laster, så du vill ringa oncreate (savedInstanceState). Detta kommer att återställa några bitar av information ifall appen pausades. Det finns en hel verksamhet livscykel diagram som du kan titta på när du får lite mer på djupet i den, men den viktigaste raden i koden finns denna setContentView funktion vilket kommer att ladda resursen filen för layouten. Sedan vad oncreate här är i grunden gör är det att säga när jag skapar denna verksamhet jag vill ladda denna layout. Och vi ska prata om vad som layouten är i en sekund. Om vi ​​skulle starta det här det ser exakt ut som den här, och som standard eftersom vi har Eclipse gör detta och ADT gör det för oss detta är allt standardtext kod som skapas för oss, och vi kan gå vidare och ändra saker som vi gillar. Resursen mappen, som jag sa, det är där vi håller alla layouter, drawables i termer av någon sort av bilder- de kallas drawables-och sedan ljudfiler, menyer. Det är ett sätt för en hel grupp av XML i en sorterad trevligt sätt. Som ni ser, det finns. Hdpi, ldpi, MDPI och xhdpi mappar för drawables. Dessa är olika skärm densiteter, så hög densitet pixel per tum, låg densitet, medelhög densitet, extra hög densitet. Detta är, återigen, så att vi kan stödja alla dessa olika enheter, och helst, kommer du att ha olika bilder för varje annan upplösning. Layouter är där vi är alla olika layouter som kommer att användas i olika verksamheter. De kan också innehålla layouter för fragment, vilket innebär partiella verksamhet i grunden. Om du vill göra något coolt ut när du vrider telefonen du vill att den ska ha en annan layout kan du göra layout-landskapet som en annan mapp, och Android har automatiskt en hel grupp av dessa regler inom resursmapp, så det vet att titta på olika mappar baserat på aktuell inställning av telefonen, vilken typ av hårdvara du använder. Likaså här värden-V11 här och värderingar-v14 och standardvärdena mappen detta är för- väl, värderingar av sig själv, kommer detta att vara standardvärden i alla versioner av operativsystemet. Å andra sidan, v11 och v14 motsvara Honeycomb och Ice Cream Sandwich, respektive. Återigen, detta är ett sätt att-inom dessa mappar är olika strängar och stilar, så du kan anpassa utseendet på din app eller potentiellt ens dess funktionalitet, men som förmodligen skulle vara en dålig idé, beroende på vilken version av operativsystemet. Och jag talade om allt detta här. Återigen, tänjbart, rå, layout, värderingar. Standardinställningarna, om vi går in Hej Android eller Hej CS50 just nu det kommer att se ut precis som denna. Det kommer att säga hej världen. Som ni kan se här med Android text texten till denna text vy, vilket i princip bara en etikett, är vad vi skulle kalla det i iOS. Det har denna roliga notation @ string / hello_world. Det är så vi kan-vi försöka extrahera alla strängar, alla de hårdkodade strängar i Android i en separat mapp, som råkar vara i values.strings. Om vi ​​ser här, kan vi se att vi har en hårdkodad sträng sparas här för hallå världen, och det kallas hallå världen, och detta är en slags gemensam utformning beslut över många plattformar som du vill- strängar är den typ av saker som vi vill att potentiellt kunna ändra. Vi vill inte styra F i vår källkod fil i vår XML. Vi vill kunna ändra detta när vi får chansen. Denna XML-fil, strings.xml, är ett sätt att utvinna hårdkodade strängar som annars skulle vara i vår layout resurser eller i vår källkod. Manifestet är där vi håller denna viktiga information om programmet. Den innehåller paketets namn. Det måste vara en unik identifierare. Till skillnad från App Store för iOS namnen på ansökningarna behöver inte vara unik, och du kan faktiskt ändra namnet på din ansökan efter att du har skickat det, så om jag börjar med Angry Birds, och då jag gör en uppdatering, och jag vill inte att släppa en ny version Jag antar att jag skulle kunna kalla det Angry Birds 2 medan jag är på samma utgåva cykel. Det skulle bara dyka upp som en uppdatering. Det enda som måste vara unik är detta paket namn, vilket inte många människor kommer att se. Tja, skulle du bara se om du tittar på källkoden eller om det finns någon form av fel. Komponenterna innefattar aktiviteter, så vi måste förklara någon form av aktivitet som vi använder. Detta är ett tillstånd sånt. Eftersom Android har inte denna rigorösa ansökningsprocessen för att lämna in program i stället de bara allt baserad bort av behörigheter och förklara saker i manifestet. SDK version är också viktigt. Vi kan ställa användas som SDK minimum version någonting. Självklart vill du skapa kod och design för de nyare operativsystemen. Kanske inte den nyaste, kanske inte Jelly Bean. Kanske vill du designa främst för Ice Cream Sandwich, även om de är ganska mycket samma i termer av designbeslut och de faktiska biblioteken och API: er. Men snarare än att ha folk av den ursprungliga Android-version-liknande Donut väg tillbaka när- som fortfarande råkar använda som försöker hämta din ansökan och sedan säga Det fungerar inte på min telefon kan du ställa in den minsta versionen och har vara den Gingerbread eller Ice Cream Sandwich eller vad du känner dig bekväm skickar. Och detta är ett exempel på Manifest. Vi kan titta på den faktiska en i en bit. Okej, vi ska bara gå vidare med demo nu. Detta är en demo om du Google Android bygga din första app eller något liknande. Vi ska gå igenom allt som händer där, och ledsen, bara för en referens som här vet Java i någon utsträckning? Okej, så Java är nytt kodspråk för de flesta människor som kommer ut av CS50. Kortfattat, för att gå igen vad det står här, Vad vi vill göra är i stället justera denna hello world program att allt det gör är att det startar och det säger hallå världen och det säger hej CS50 upptill eftersom det är verksamheten namn vi kommer att försöka göra ett textfält och en knapp så att när vi trycker på denna knapp kommer det att ta texten från textfältet och lansera en ny verksamhet, och det kommer att säga vad det texten säger i verksamheten, och det är relativt enkelt. Det är inte mycket intressant. Du skulle inte vilja släppa någon app som denna. Men det visar några viktiga designelement saker. Vi måste samverka med Manifest, med layout-filer, med källkoden, och du kan se hur du startar en aktivitet från en annan. Vi börjar med layouten för vår första aktivitet, vilket jag vet att det är typ av små, men som ni kan se just nu, är allt det är det har vår logotyp som vi skapade, aktiviteten namn, och det säger Hej världen i centrum. Istället kommer jag först att göra detta till en linjär layout, en relativ layout, och allt detta är saker du kan titta upp och är värda att gå över någon gång i termer av layouter. Det är mycket som HTML. Vi sade att det är egentligen inte värt att veta i termer av en programmatisk betydelse, men det finns så många olika layouter du kan kontrollera, och det är precis som CSS i termer av stilar. Det finns en hel del på gång just i termer av estetik här, och ja, det är värt att lära sig, men det är den sortens saker du bör se upp som du går och du känner att du behöver något nytt. Jag kan dra nytta av några av de ADT Tools här åtminstone att börja med. Jag ska göra ett textfält, och jag kommer att göra en knapp. Lägg dem bredvid varandra. De ändrar storlek redan på lämpligt sätt. Tyvärr, igen, kommer tillbaka till skillnaden mellan linjära layout och relativ layout, en linjär layout ger en lite mer funktionalitet det gäller att fylla utrymme och att se vi positionerar saker horisontellt eller vertikalt. Den stora skillnaden mellan en linjär layout och en relativ layout är den relativa layouten positioner allt i förhållande till andra vyer, och det är bra med det är att det tar mindre tid att rita eftersom operativsystemet ser på all kod och säger att detta går förhållande till det här, här. Det betyder att det blir färre mätningar än en hel massa kapslade linjära layouter, som jag skulle behöva göra om jag ville att det skulle gå vertikalt hit. Jag har redan en del saker går horisontellt, så jag skulle behöva en annan linjär layout att kapsla dem vertikalt, men om jag gjorde en relativ layout jag kunde säga hålla detta till vänster, detta till höger och dessa saker nedan. Men eftersom jag vill att de ska fylla just nu ska jag använda en linjär layout, och du kan se det redan gör en hel del av dessa saker för oss. Alla synpunkter måste ha en fastighet av bredd och höjd, och det händer att ha en vikt på 1, och detta har en vikt av 1 så att den fyller hela utrymmet. Men bredden och höjden är viktigast. Detta ID-fältet här är inte viktigt i den aktuella layouten såvida vi använder en relativ layout och säger att vi kan referera en vy position i referens till en annan. Om vi ​​hade en relativ layout vi kunde säga läget detta nedan här eller ovanför denna ID, men detta ID kommer att vara viktigt när vi använder det i vår kod för att vi kan referera dessa individuella åsikter på detta sätt. Och sedan kan du se taggen requestFocus, vilket är något du förmodligen såg i pset 7. Det fanns en autofokus tagg eller något i den stilen för ett av fälten. Och en sak, naturligtvis, kan vi göra precis som i HTML, och märker en av de fina sakerna med ADT är att det autocompletes här. Kanske inte så snyggt som det gjorde i Xcode, men det gör det ändå, och vi kan säga ledtråd och sedan ge det någon form av snöre vilja skriva ett meddelande, och om jag ger det en stund, märker också att jag blir lite fel här att säga att vi bör använda en sträng resurs för detta, så om jag låter det göra en del av det hårda arbetet för mig Jag kan välja denna sträng, gör refraktor Android och extrakt Android sträng. Jag kan ge det som namn, skriv ett meddelande, och vad det gjorde nu är det ersatt den hårdkodad sträng med en hänvisning till strängen i strängen. xml-fil, vilket innebär nu detta är här. Och jag vet att verkar lite trivialt och som extra arbete på denna punkt, men när du har en hel massa saker, en massa strängar, det är verkligen viktigt, och särskilt för lokalisering eftersom som jag nämnde tidigare, är Android ett mycket globalt använda operativsystem att du kan enkelt göra värderingar-en eller värden-sp eller något för engelska eller spanska eller andra språk. Och så har du förmodligen inte har haft denna erfarenhet ännu eftersom vi inte göra mycket JavaScript gäller webbprogrammering, men vi kan också göra det här fältet som heter onClick för knapp, och detta är ett sätt att referera inom vår layout att vi vill ha en viss funktion som ska kallas i vår källkod. Jag kommer att kalla detta SendMessage, och för att göra detta arbete som innebär i den huvudsakliga verksamheten här Jag kommer att skapa en funktion som är allmän så att den kan nås av layouten. Det är ogiltiga eftersom du bara inte vill att det ska returnera någonting. Vi kallar det SendMessage, och det tar en vy, vilket är en slags sammanhang som vi kan förankra denna metod till att enskilda vy när vi kör den. Och jag vet inte om du märkt-bra, skulle ni inte har märkt, men på denna punkt just här denna uppfattning är en typ som inte har ännu inte införts, och naturligtvis, vet du allt från CS50 om inte däribland typer. Det fina med IDE som Eclipse är att Om du glömmer att inkludera en typ det kommer att understryka med en liten röd snirkliga och sedan ger dig möjlighet att importera vyn. Ett snabbt sätt att göra detta är kontroll shift O, och det kommer att importera alla filer som den behöver. Nu när vi har denna funktion SendMessage, som kommer att skicka meddelande från MainActivity till en ny verksamhet, vi kommer att behöva använda en avsikt att lansera den nya verksamheten från detta, så vi kommer förmodligen vill skapa en global konstant eller också särskilt en offentlig konstant som hjälper oss att veta hur vi ska referera strängen eftersom när vi skapar en avsikt vi inte bara ringa en ny verksamhet, men vi kan också ge det en bunt av information. En bunt är faktiskt den term som Android använder, och det är ett sätt att säga att ge det extra data, vilket det inte kan vara en mycket sofistikerad datatyp, men vi kan definitivt innehålla booleska eller strängar eller INTS. Sådant. Känn dig fri att fråga om någon av dessa kval här, allmänheten, final, statisk. Offentliga är den viktigaste. Det betyder att vi kan komma åt den här variabeln från övriga källkodsfiler som när vi skapar en ny aktivitet. Vi kan referera till sträng i denna fil. Om det är privat, betyder det att det är begränsat till denna person fil här. Men vi ska kalla detta något extra budskap. Nu har vi gjort den här funktionen, och om vi klickar på knappen, kommer denna funktion att kallas. Men vi har inte gjort någonting, naturligtvis, med funktionen. Vad vi vill göra nu är att skapa en ny verksamhet, den verksamhet som faktiskt kommer att lanseras. I Eclipse kan vi säga nytt, Android aktivitet, tomt aktivitet. Vi kan ge det ett namn. Låt oss kalla det vårt resultat aktivitet. Och sedan denna hierarkiska överordnade fältet är ett sätt att ange hur verksamheten är relaterade till varandra. Eftersom detta kommer att lanseras från annan verksamhet Vi bör ange att den har den förälder huvudsakliga verksamhet. Och jag kunde ha klickat på nästa fält där, vilket skulle ha berättat för oss några valfria fält som det också var inklusive, men det fina med ADT, återigen, är att om jag rulla ner här i Manifest ihåg att allt detta verkligen var med som standard när vi skapade ursprungligen projektet, och nu eftersom vi använde detta skapar en ny aktivitet snarare än bara lägga vår egen klass filen eftersom vi gick igenom deras GUI för att göra detta det läggs redan allt detta till Manifest för oss, vilket betyder bara att nu operativsystemet inte kommer att klaga när vi försöker starta denna verksamhet. Och det också, naturligtvis, gav det en etikett, som också visar upp i strängar. Det gör en hel del saker på baksidan slutet för oss. Hur som helst, nu när vi har detta resultat såväl aktivitet, själva källkoden fil i källan mappen och du kan se-kort beröra detta- eftersom vi veta det om denna hierarkiska förälder det gav detta område android.r.ide.home i denna onOption valda sak. Vad detta i grunden säger är att det finns en meny-knapp nu att i det övre vänstra hörnet av skärmen Om jag går tillbaka till PowerPoint där vi först pratade om action bar på grund av den hierarkiska föräldern nu finns det en liten pil tillbaka hit och detta är klickbar så vi bör kunna-efter att vi faktiskt kör denna app- gå tillbaka, och det är ett sätt att spara oss lite kod där. Nu i detta-ja, det verkar vara klaga på det för ett ögonblick. Låt oss kommentera det ut. Nu, för att faktiskt samverka med dessa två aktiviteter, Vi måste skapa en avsiktsförklaring som omfattar all denna data. I SendMessage nu ska jag kryssning genom några bitar av kod och förklara att när jag går. En avsiktsförklaring, som sagt, är ett sätt att starta en aktivitet från en annan. Intent är typen. Vi håller på att skapa en variabel myIntent. Och detta är faktiskt ett objekt, vilket är anledningen till att vi måste ringa nya. Det är vanligt Java användning där, vilket kan ta lite tid att vänja sig. Detta innebär att vi använder aktiviteten eller klassen MainActivity, och avsikt på detta sätt tar den verksamhet det kommer från och den verksamhet som det kommer att, som vi kallar ResultActivity, och det är dess egen klass. Inkludera det. Och sedan som jag nämnde tidigare, gav vi detta ID till redigera textfältet och texten vyn, så för att programmässigt fånga texten som finns i RedigeraText Vi använder denna funktion kallas findViewByID, som liknar något som du kommer att använda när man försöker få fält från DOM. Kanske David berättar om detta i föreläsningen. Men det är bara ett sätt att få dem-det är därför vi märka dessa saker med dessa områden. Id.editText1. Det är redan autocompleting för mig där. Och sedan ska vi även-denna RedigeraText nu att vi har fältet inom vårt program, gjorde allt som findViewByID var i princip du kan tänka på det som ger oss en hänvisning till detta RedigeraText. Nu vill vi få strängen eller meddelandet inom den RedigeraText som vi kan göra med hjälp av- du kan tänka EditText som en struct- Vi kallar det ett objekt i Java-med en hel massa olika metoder eller fält och attribut fäst vid den. När jag säger RedigeraText. det ger mig chansen att komma en metod såsom Gettext, som kommer att få den aktuella texten i det RedigeraText och sedan konvertera detta uttryckligen till en sträng, och vi har sparat meddelandet. Nu vill vi verkligen göra något med den avsikt vi skapade bara ögonblick sedan. Jag kommer att lägga extra som det kallas i uppsåt, vilket, återigen, som jag sagt tidigare, är detta ett sätt att skapa bunten med en massa data. Extra budskap är vår tag så vi vet vad vi sparar detta under, och då jag även meddelandet. Och då kan vi faktiskt börja verksamheten genom att ge den parametern myIntent. Och detta faktiskt kommer att starta verksamheten, så nu sedan jag uppgraderat till Windows 8 det kan finnas vissa fel som dyker upp snabbt, men försök att ignorera dem. Och detta är den Android-emulator. Förhoppningsvis koden faktiskt kommer dyka upp i ett ögonblick. Återigen, ignorerar alla dessa små saker. Men Android emulator kan emulera någon version av operativsystemet från de tidigaste och kära, Donut, pepparkakor. Detta är Jelly Bean 4.1. Men som ni kan se just nu, är detta något vi gjorde. Detta har MainActivity, RedigeraText, knappen. Jag kan skriva något här, men vad är det vi saknar i detta läge? Vi gjorde det område i MainActivity som kommer att skicka meddelandet till den andra verksamheten, men på denna punkt Vi har inte gjort någonting i den andra verksamheten, så det kommer inte att få någonting. Låt oss sluta upp att en del innan vi går vidare. Detta resultat aktivitet, vad vi behöver göra är att vi behöver göra är att vi måste- Vi kan också referera avsikten inom denna verksamhet, så vi måste fånga uppsåt, vilket är riktigt enkelt. Det är en funktion som ingår i verksamheten klassen, så vi kan bara säga "Få meddelandet från uppsåt." "Intent myIntent = getIntent." Och detta kommer att ge oss-nu myIntent är ett objekt, vilket är en referens till den avsiktsförklaring som ledde oss till denna verksamhet. MainActivity ringer och ger extra information för att leda verksamheten. Resultat aktivitet tittar nu på den avsiktsförklaring som ledde det här, och vi kan komma åt det budskap som vi skapade i den andra, getStringExtra, och detta kommer Komplettera automatiskt för mig. Och sedan minns, hur vi taggade att databit var genom att ge det här området just här, detta offentliga sträng, som är taggen för strängen vi faktiskt ingår. Om jag säger MainActivity.Extra_Message Det är just där, och det är ungefär som parameternamnet när vi passerade koden från kontrollenheten till mallen, när vi skulle säga något titel pil. Det är samma sorts idé där. Nu, kom ihåg detta. Vi hade också denna auto skapat eller auto genererade koden för resultatet aktivitet, vilket inkluderar texten vyn i mitten som säger hej världen. Vi skulle kunna göra det större. Låt oss göra det först. Vi skulle kunna göra det 40 densitet oberoende pixlar. Låt oss se, det är super enorma. Det kommer att bli okej. Och sedan för att referera till denna person textvy inom vår kod Vi måste ge den ett ID, och för att göra det vi säger @ + id, vilket innebär att vi tilldelar det ID. Om vi ​​bara sa @ id det skulle anta att vi refererar ett ID som redan finns, och låt oss kalla detta vår resultTextView. Och märker att i XML finns det inget behov av semikolon eller något. Allt är inom dessa taggar. Det är väldigt likt HTML i många sinnen. Det tar lite tid att vänja sig, men så småningom kommer du att känna ganska bekväm med det. Låt oss uppdatera texten för vårt resultat text vy, och som vi gjorde när vi fick att redigera textfält i vår övriga verksamhet i MainActivity Här kommer vi också på samma sätt- Vi hittar vyn av ID. Och R, ifall jag inte nämnde det förut, är hänvisningen till våra resurser mappen, och sedan ID är en referens till allt i resurser mappen, alla ID, och resultTextView. Och precis som tidigare, är resultTextView ett objekt, vilket innebär att den har alla dessa egenskaper som är associerade med det. När vi använder gettext för edit text för textfältet eller texten vy Vi kan faktiskt använda setText, och sedan fann vi redan budskapet från uppsåt, så jag kan säga budskapet, och det kommer faktiskt in meddelandet. Det tar en stund att starta, och då kan vi se om det kraschar, men några frågor om denna process just där, den sortens interaktion? På många sätt är det enkelt. Anledningen till att jag går igenom något relativt enkelt är, återigen, eftersom du får se samspelet mellan layout, källkoden hur du refererar till saker och kanske få en liten exponering mot hur Java fungerar det. Om jag faktiskt skriva något här, liksom ohai, och då jag klickar på knappen, det startar en ny verksamhet, och att textvy säger ohai. Det är väldigt enkelt, men förhoppningsvis efter det exemplet du slags se hur detta samspel fungerar, och nu röra av filer på vänster sida för alla dessa projekt mappar, förhoppningsvis du vet var du ska leta nu. Detta är din källkod område. Layout är egentligen det enda du ska ta itu med tills du inkludera bilder och drawables eller vad, och värderingar, kommer att innehålla strängar, som vi nämnt, och sedan stilar är något som är ungefär som CSS. Adress när du vill, men tills du känner dig bekväm med att lägga till extra stil att din ansökan finns det ingen anledning att oroa sig för mycket. Bara att slå upp en annan sak du kommer definitivt vill inkludera- antar att du vill integrera häftiga funktioner och spara lite extra kodning- skulle vara att inkludera 3: e parts bibliotek. Här är den lilla Android killen med Sherlock Holmes hatt. Detta är en åtgärd bar Sherlock bibliotek, vilket i princip innebär att åtgärder bar du såg tidigare, som nu är standard i Ice Cream Sandwich och Jelly Bean, om du vill ta med den sortens användarupplevelse för användare på äldre versioner och rädda dig från att behöva oroa hur användaren ska navigera på äldre versioner när det där inte är där du kan inkludera detta bibliotek och sedan är det bara att referens-snarare än standard Android bibliotek för åtgärden bar, refererar du detta stöd bibliotek. Saker som Scoreloop, det är bra om du ska inkludera ett spel. Det låter dig lägga poängtavlor och prestationer till spel. AdMob är ett sätt att sätta annonser i dina applikationer om du vill göra lite pengar på det. Naturligtvis finns det Facebook och Twitter för att integrera det Om du vill dela saker lätt, et cetera. Dropbox, likaså, och Google Analytics är att diagrammet ser man där. Det kommer att vara mycket viktigt om du verkligen vill se vem som interagerar med din app eller vem det är, hur de interagerar, et cetera. Google, som standard, berättar en hel del statistik om vem som har installerat din app och vilka telefoner de har, vilket operativsystem versioner de har. Men om du vill se vem som använder det på en daglig basis och hur de använder det då du vill att inkludera någon form av tracking system sånt. När du är redo att distribuera din app Jag behöver inte gå in på det för mycket djup. Klicka på länken här, Google Play. Det brukade vara den Android marknaden. De skyltas allt med Google Play, så nu du skickar det. Det är mycket enkelt. Du måste inkludera en beskrivning, några skärmdumpar. Som sagt, det finns ingen godkännandeprocess som iOS. Och vart man ska gå härifrån? Jag visade dig en riktigt enkelt exempel. Förhoppningsvis om det verkar fruktansvärt enkelt så det är nog ett gott tecken. Om du alls kändes lite förvirrad eller osäker på exakt vad jag skriver det är också bra, men härifrån går till Google Guides. Detta är ett bra ställe att börja. Det kommer att prata igenom vad de förväntar sig när det gäller ansökan design, hur användarna interagerar normalt med det. Det är mycket mer fri form än iOS, skulle jag säga, där det verkar som om bord vyer-Jag vet inte, det är deras bröd och smör. Allt är en tabell vy glida upp och ner. Med Android de uppmuntrar definitivt folk att titta på det från en hel massa olika perspektiv. När du inkludera Software Development Kit i ADT Som standard har du en hel massa prov projekt i Android. Just här, Android, Android provet Project. Om jag klickar på det, så jag kan välja en version för vilken av provet projekt tillämpas. Det finns en hel massa olika saker här. Det börjar med action bar kompatibilitet, accelerometer lek, säkerhetskopiering och återställning, Bluetooth, gest byggmästare. Jetboy är ett urval spel de ger dig, som är LunarLander. Det finns en hel massa exempelprogram här, och de är alla inriktade på olika aspekter av Android API, och tanken är att när du gör din ansökan Du behöver inte lära dig allt om Android att göra en Android-app. Du behöver bara lära sig om de delar som du faktiskt kommer att använda. Titta på dessa exempel på bibliotek. Känn dig fri att kopiera och klistra in koden och återanvända den. Det är en stor sak att titta på svårare koden och försöka förstå det, är som naturligtvis varför CS50 Vi ger ofta du stora mängder källkod. Titta på några av dessa om du ska använda liknande bibliotek och sedan tillämpa den på din egen kod. Och naturligtvis, det finns tutorials. Sök efter tutorials. Jag hittade en hel del bra sådana på nätet som kan ge dig upp till hastigheten med vilka fragment egentligen är och hur du kan använda dem. Några av dessa nya designen saker, som fragment, du verkligen behöver inte vara orolig om du gör en ganska stora i omfattning projektet. De är saker som Google försöker att fasa in Stackoverflow är naturligtvis din vän. Förhoppningsvis jag sålde dig lite på Android, inser att det är mycket lättare att närma sig i termer av just det kodspråk. Java är Jag skulle säga mycket lättare att förstå än Objective-C. Android växer Jag tror mycket mer än iOS. Jag menar, är uppgifterna där också, bortsett från vad jag tror. Det kommer att vara runt ett tag, och de är några år efter när det gäller deras konstruktion cykler, så det är slags förståeligt att de fortfarande jobbar igenom några av dessa konsistens frågor, som denna åtgärd bar är en ny sak för dem ändå, sorts skapa liknande användarupplevelse i alla sina program. Förhoppningsvis kan du gå vidare nu och öppna upp Eclipse och göra din egen Android-appar. Har någon några frågor innan vi avsluta vad som helst? Jag kan berätta svaret är 42. Tja, glad kodning alla, och lycka till. [CS50.TV]