Az elmúlt pár napban akadtam egy külföldi weblapon arra a lehetőségre, hogy Androidos telefonokon, táblagépeken, stb. lehetőség van PHP-ban írt programok futtatására is.
(Majd később az androidhungary.com oldalon is megleltem ezen információkat.)
A http://www.phpforandroid.net projekt oldalán bővebb infók érhetőek el angolul. Az SL4A projekttel nem csak PHP nyelven, hanem akár Python vagy Perl nyelveken is lehet programozni az okostelefonokat.
Ehhez az alábbiakat kell tenni:
A PHPForAndroid telepítés után az alkalmazások közé felkerül a program, melyet még tovább kell telepíteni egyszer! Ez fontos lépés, különben nem működik sajnos.
Az SL4A programot elindítva pár példaalkamazás is elénk tárul.
Alapesetben közel teljes értékű php fordító áll a rendelkezésünkre. Amint betöltjük az android.php fájlt, és példányosítjuk az Android osztályt, onnantól a $droid objektumon keresztül érjük el az operációs rendszert. Példa:
require_once("Android.php");
$droid = new Android();
Íme egy rövid példa program a GPS adatok lekérésére:
require_once("Android.php");
$droid = new Android();
$droid->startLocating(1);
sleep(10);
$loc = $droid->readLocation();
if (isset($loc['result']->gps)) {
$location = $loc['result']->gps;
$locType = "GPS";
}
elseif (isset($loc['result']->network)) {
$location = $loc['result']->network;
$locType = "Network";
}
echo " Szolgáltató: ".$locType."\n";
echo " Szélesség: ".$location->latitude."\n";
echo " Hosszúság: ".$location->longitude."\n";
if ($locType == "GPS") echo " Sebesség: ".round(($location->speed*3.6),2)." Km/h\n";
if ($locType == "GPS") echo " Magasság: ".$location->altitude." m\n";
echo " Pontosság: ".$location->accuracy."\n";
A sleep(10); azért kell az elejére, mert kb 7-8 mp kell, amíg a szenzorhoz hozzáférünk. Ám ekkor még csak (gsm) network alapú adataink lesznek. Kb 20-30 mp kell, mire GPS adatokat is kapunk. Persze ezen adatok függnek a "látott" műholdaktól és a telefon technikai paramétereitől is!
Mivel a php fájlok szerkesztése a telefonon macerás, valamint az sem egyszerű, ha mindig csatlakoztatjuk a telefont a számítógépünkhöz, rámásoljuk a frissített programunkat, leválasztjuk, és futtatjuk, majd az újabb módosításnál újra-újra-újra....
Ennek kiküszöbölésére javaslom az alábbi egyszerű megoldásnak a használatát: rakjátok ki a kódot egy szerverre, ahova akár ftp-vel is könnyen lehet frissíteni, és minden futásnál szedje le a telefon a legfrissebb fájlt a szerverről. (Később ezt lehet időzíteni vagy új verzió meglétének ellenőrzéséhez kötni, stb..)
Íme egy példakód erre:
$file = "scripts/demo.php";
file_put_contents($file,file_get_contents("http://sajat.serverem.cime/demo.txt"));
$droid->vibrate();
include($file);