wiki:Android

Version 9 (modified by ji, 8 years ago) (diff)

Pahoittelut siirretty oikeaan paikkaan.

Androidin ohjelmointia

Ohjelmien tekemiseen Androidille tarvitset AndroidSDK:n, joka löytyy osoitteesta http://developer.android.com/sdk/index.html SDK:n asennus on helppoa, purat vain lataamasi paketin haluamaasi paikkaan ja lisäät sen ajettavien ohjelmien polkuun (ympäristömuuttuja PATH).

Kehitys onnistuu pelkällä SDK:lla, mutta on usein mukavampaa käyttäen IDE:ä, joten esimerkiksi Eclipselle löytyy Android-liitännäiset osoitteesta http://developer.android.com/sdk/eclipse-adt.html Asennus tapahtuu perinteisesti lisäämällä Adroid-liitännäisen osoite https://dl-ssl.google.com/android/eclipse/ Eclipsen liitänänislistaan ja suorittamalla asennus. Ohjeet tähän löytyvät edellä mainitulta sivustolta http://developer.android.com/sdk/eclipse-adt.html Huomioi käyttämäsi Eclipse-versio.

Androidilaskuri!

Aina kun saa uuden ohjelmointikielen tai kirjaston käyttöönsä, on opettavaista toteuttaa sillä autolaskuri. Androidille käyttäen Eclipseä se menee näin:

  1. Luo uusi Android-projekti:
    • Project Name: Androidilaskuri
    • Build Target: Android 1.5 (versio, joka oli asennettuna kokeilukäytössä olleeseen Samsung Galaxyyn)
    • Application Name: Androidilaskuri
    • Package Name: fi.jyu.mit.android.androidilaskuri
    • Create Activity: Androidilaskuri

Ja sitten klikkaa 'Finish'.

  1. Valitse esille Androidilaskuri -> res -> layout -> main.xml ja saat käyttöösi melko käytettävän GUI-editorin. Lisää TableLayout, siihen kolme TableRow'ta. Ensimmäiselle riville kaksi TextView'tä, toiselle kaksi Buttonia ja kolmannelle yksi Button. TextView't ovat Androideja ja Robotteja, seuraavan rivin Buttonit Androidi ja Robotti, ja viimeinen Button nollaa. Asettele elementtien ympärille vähän tilaa, ja UI on valmis. XML:nä sen pitäisi näyttää jotakuinkin tältä
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01"
             android:layout_width="fill_parent" android:layout_height="fill_parent"
             xmlns:android="http://schemas.android.com/apk/res/android">
 <TableRow android:id="@+id/TableRow01"
              android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView android:text="0" android:id="@+id/Androideja"
              android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:padding="16dip" android:inputType="number">
    </TextView>
    <TextView android:text="0" android:id="@+id/Robotteja"
              android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:padding="16dip" android:inputType="number" android:isScrollContainer="true">
    </TextView>
  </TableRow>
   <TableRow android:id="@+id/TableRow02"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:text="Androidi" android:id="@+id/Androidi"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
            android:layout_marginBottom="5dip" android:layout_marginTop="5dip"
            android:layout_weight="1">
    </Button>
    <Button android:text="Robotti" android:id="@+id/Robotti"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_marginBottom="5dip" android:layout_marginLeft="20dip"
            android:layout_marginRight="20dip" android:layout_marginTop="5dip"
            android:layout_weight="1">
    </Button>
  </TableRow>
   <TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:text="Nollaa" android:id="@+id/Nollaa"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1">
    </Button>
  </TableRow>
</TableLayout>

Lisäsin tuohon rivityksen, jotta tuo olisi luettavissa. GUI-editori kirjoitti jokaisen TableRow'n sisältöineen yhdelle riville. Ei kuitenkaan kiinnitetä GUI:n ulkoasuun enempää huomiota, vaan siirrytään koodiin. Android tukee käyttäjän muokattavia tyylejä ja teemoja, joten niitä hyödyntäen kukin saa juuri haluamansa Androidilaskuriulkoasun... toivottavasti.

  1. Kirjoitetaan ohjelma, eli muokaa metodi onCreate luokassa
    public class Androidilaskuri extends Activity {
        private TextView and;
        private TextView rob;
    
            /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            and = (TextView)findViewById(R.id.Androideja);
            rob = (TextView)findViewById(R.id.Robotteja);
    
            Button ba = (Button)findViewById(R.id.Androidi);
            ba.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    increment(and);
                }
            });
    
            Button ra = (Button)findViewById(R.id.Robotti);
            ra.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    increment(rob);
                }
            });
    
            Button nol = (Button)findViewById(R.id.Nollaa);
            nol.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    and.setText(Integer.toString(0));
                    rob.setText(Integer.toString(0));
                }
            });
        }
    
        private void increment(TextView tv) {
            int i = Integer.valueOf(tv.getText().toString());
            ++i;
            tv.setText(Integer.toString(i));
        }
    }
    

Android-ohjelmissa ei ole main-metodia, kuten Java-ohjelmissa monesti on. Sen sijaan Android-ohjelmat muodostuvat aktiviteeteista, joita meillä on nyt yksi, Androidilaskuri. Aktiviteetin toiminta koostuu eri vaiheista (katso lisää Androidin kehittäjäsivuilta aliotsikosta Activity Lifecycle), joissa kutsutaan aktiviteetin eri metodeja. Tässä käytämme luomisvaiheessa kutsuttavaa onCreate()-metodia.

Metodissa luodaan GUI aiemmin tehdyn XML-tiedoston mukaan metodikutsulla setContentView(R.layout.main). Luodut komponentit löytyvät vastaavilla nimillä, eli esimerkiksi Robotti-nappia klikkaamalla suoritettava laskurin kasvatus lisätään oliolle Button ba, joka löytyy metodille findViewById() annettavalla tarkenteella R.id.Robotteja.

  1. Luo ajoympäristö Android-ohjelmille valitsemalla Eclipsestä Window > Android SDK and AVD Manager, tai klikkaamalla puhelinmen näköistä ikonia työkalurivillä. Virtual Devices listassa pitää olla ainakin yksi laite-emulaatio, jonka voi luoda klikkaamalla New...-nappia listan oikealla puolella. Anna laitteelle nimi, valitse API-versio (vaikka 1.5, niin pysymme synkassa Samsungin Galaxyn kanssa). SD-kortille kannattaa määritellä kokoa vaikka 512 MB, mutta muut asetukset kelpaavat oletuksinaan.
  1. Aja Androidilaskuri valitsemalla Eclipsen valikoista Run > Run, tai klikkaamalla Run-ikonia työkalurivillä. Eclipse kyselee, miten softa ajetaan, valitse Android Application. Jos tulee virheitä tai muita kummallisuuksia, peruuta niistä pois ja varmista, että äsken muokattu java-luokka on valittuna Eclipsen Package Explorer näkymässä.
  1. Jos haluat ajaa ohjelman Android-puhelimessa (tai muussa Android-laitteessa), pitäisi sen onnistua seuraavasti:
    • Laita Android-puhelin debuggaustilaan, mikä löytyy Galaxyn suomennoksessa kohdasta Säätimet > Sovellukset > Kehitys > USB-virheenkorjaus (kyllä, tuo on käännöskukkanen, sillä USB-virheenkorjaushan viittaa USB-liitännän protokollan mahdolliseen virheenkorjaukseen, eikä häröjen perkaamiseen).
    • Varmista, että puhelimesi osaa jutella tietokoneesi ja käyttöjärjestelmäsi kanssa USB:n yli. Mac OS X toimii ilman asennuksia. Windowsissa joudut asentamaan sopivan ajurin. Ubuntu Linuxissa joudut säätämään USB asetuksia. Tarkat ohjeet löytyvät osoitteesta http://developer.android.com/guide/developing/device.html kohdasta Setting up a Device for Development.
    • Aivan kuten edellä, aja tai debuggaa softa Run > Run tai Run > Debug, ja valitse ajokohteeksi puhelimesi.

Kuva ois kiva, joten:

Androidilaskuri Eclipsellä emulaattorissa ajettuna

Jep, kuvassa on eri koodi kuin esimerkissä. Pahoittelen, etten jaksa enää editoida...


Ja sitten vielä varoituksen sanat: Ylläoleva softa on kirjoitettu ihan vaan koodia suoltaen. Se ei välttämättä tai edes todennäköisesti ole hyvä esimerkki siitä, miten Android-ohejlmia tehdään. Tämä on vain siitä, miten Android-softa saadaan aikaiseksi, ajettua ja debugattua, jopa Android-puhelimessa.

Attachments