Takaisin niksinurkkaan

Lähimmän mobiHiisi-kohteen selvittäminen Android-puhelimella

Alempaa löytyy Android-ympäristöön tehty Python-ohjelma, joka selvittää puhelimen sijainnin avulla lähimmän mobiHiidestä löytyvän kohteen ja avaa sen selaimeen. Kohdesivulla olevan "Takaisin vesialueelle" -linkin avulla on sitten mahdollista nähdä lähimmän vesialueen kaikki kohteet ja selailla niitä – samoin kuin mobiHiiden muutakin sisältöä – normaalilla tavalla. Ohjelma tallentaa kohteiden sijaintitiedot puhelimeen ja käyttää tätä tiedostoa lähimmän kohteen etsimiseen mikäli mobiHiiden tietoja ei ole välillä päivitetty.

On toki muistettava, että Android-puhelinten akunkestot ovat varsin rajallisia ja mobiHiiden maastokäyttö tapahtunee siten useimmiten yksinkertaisemmilla puhelimilla. Tämä Python-ohjelma onkin lähinnä esimerkki siitä, miten mobiHiiden tietoja voidaan hyödyntää myös ohjelmallisilla ratkaisuilla. Esimerkkiohjelman riveistä valtaosa kuluu käyttäjän nykyisen sijainnin selvittämiseen ja käyttöliittymän muodostamiseen; varsinainen kohdetietojen haku tapahtuu seuraavilla ohjelmariveillä:

f=urllib.urlopen("https://saja.kapsi.fi/mobiHiisi/kaikki.html")
min_etaisyys = 10000.0
for rivi in f:
  if 'karttapaikka' in rivi:
    a = rivi.split("?y=")[1]
    kohde_pohj = a.split("&x")[0]
    a = rivi.split("&x=")[1]
    kohde_ita = a.split("&srs")[0]
    # Likimaarainen etaisyyslaskenta:
    kohde_etaisyys = (2 * (float(kohde_pohj)-pohj)) ** 2 + (float(kohde_ita) - ita) ** 2
    if kohde_etaisyys < min_etaisyys:
      min_etaisyys = kohde_etaisyys
      a = rivi.split("f=\"kohde")[1]
      kohde = a.split(".html")[0]

# Muodostetaan lahimman kohteen kohdesivun osoite mobiHiidessa:
osoite = "https://saja.kapsi.fi/mobiHiisi/kohde" + kohde + ".html"

Alla oleva Python-ohjelma on tekijänsä ensimmäisiä ohjelmia tällä kielellä ja ylipäätään Android-ympäristössä, joten sen yksityiskohdissa on varmastikin paljon parannettavaa. Ohjelma on testattu Samsung Galaxy Minillä.

Python-ohjelma

Python-ohjelmien ajaminen Android-ympäristössä edellyttää SL4A-sovelluksen ja siihen kuuluvan Python-tulkin asentamista. SL4A (Scripting Layer for Android) antaa mahdollisuuden kirjoittaa ja ajaa Python-ohjelmien lisäksi mm. Perl-ohjelmia suoraan puhelimessa. Tarvittavat asennusohjeet sekä joitakin ohjeita omien ohjelmien tekemiseen ja ajamiseen löytyy seuraavasta.

SL4A:n asentaminen Android-puhelimeen


Viimeksi päivitetty: 9.10.2011