السبت، 1 يونيو 2013
11:22 ص

برمجة تطبيقات اندرويد عبر PHP الآن !


هي تقنية جديدة أخرجتها شركة اسبانية تدعي Irontec، ابتكرها مهندس برمجيات فى تلك الشركة يدعي Ivan Mosquera Paulo ، وطوّرها مع صديقه Javier Infante Porro.
لا توجد آية معلومات حتى الآن عن تلك التقنية؛ وذلك لأن الشركة لم تصدر حتى الآن الـDocumentation الخاص بها؛ لكن توجد بعض الأمثلة لبعض التطبيقات المبرمج بـPHP لتعمل على أندرويد.
وسأقوم فى تلك التدوينة بعرض بعض الأسئلة وإجاباتها عن تلك التقنية ومؤسسينها، وفى نهاية التدوينة سأعرض لكم بعض الأمثلة لبعض التطبيقات المبرمجة من الشركة المؤسسة.
* كيف بدأ هذا المشروع؟
- الإجابة موجودة فى هذا الرابط ، لكنه للأسف باللغة الإسبانية وغير متوفر بالإنجليزية.
* هل يحتاج لتشغيل تلك التطبيقات وجود سيرفر ويب على جهاز اندرويد؟
- لا يحتاج إلى وجود سيرفر ويب.
* هل أحتاج إلى وجود جهاز اندرويد حقيقي لتجربة برامجي؟
- لا، يمكنك تجربته عبر Android emulator.
* هل تعمل تلك التطبيقات على انواع معينة من الأجهزة ولا تعمل على الآخر؟
- لا، هي تعمل تقريبًا على كل أنواع الأجهزة ، سواءًا كانت مبنية على AMD او Interl ، أو أى نوع، مع العلم أنه توجد بعض المشكلات مع بعض الأجهزة التي تعمل على ASE، لكنها ليست مشكلات منتشرة حتى الآن.
* هل تعتقدون أن تلك التقنية ستقدم فرص جديدة للمبرمجي الـPHP؟
- نأمل ذلك، حيث أننا نتطلع أن يستغل المبرمجين الـPHP معرفتهم الحالية للإنتقال إلى منصات أوسع ومنها أندرويد.
* ما الموجود فى PhpForAndroid.apk؟
- موجود Intaller يقوم بتنصيب الملفات التالية:
   1- php_rX.zip → PHP binary.
   2- php_extras_rX.zip → Android.php and php.ini.
   3- php_scripts_rX.zip → بعض البرامج التجريبية.
* هل اتبعتم أى Coding Standard؟
- نعم أتبعنا Zend Coding Standard.

الموقع الرسمي لتلك التقنية: من هنا.

- بعض الأمثلة:
<?php
require_once("Android.php");
$droid = new Android();
$name = $droid->getInput("Hi!", "What is your name?");
$droid->makeToast('Hello, ' . $name['result']);
?>


<?php
require_once("Android.php");
phpinfo();
?>


<?php
// @author: Gorka Gorrotxategi <zgor@irontec.com>
// Thanks Ktulur!!!

/* Initial Stup for PFA Fun!*/
require_once("Android.php");
$droid = new Android();

/* Some GUI for the user */
$droid->dialogCreateAlert("AstMofix","Ready to connect to your Asterisk powered BOX and get simple event stats");
$droid->dialogSetNeutralButtonText("I'm Ready to fun!");
$droid->dialogShow();
$result = $droid->dialogGetResponse();

/* Get parameters */
/* 1- Remote AMI server */
$server=$droid->getInput("Please enter IP/Hostname of your Asterisk BOX","");
/* 2- Remote AMI port */
$port=$droid->getInput("Please enter TCP Port","");
/* 3- Remote user */
$user=$droid->getInput("Please enter username","");
/* 4- Remote pass */
$pass=$droid->getPassword("Please enter password","");
$server=$server['result'];
$port=$port['result'];
$user=$user['result'];
$pass=$pass['result'];

echo "Ready to connect to $server:$port with $user/$passn";
/* TCP Connection */
$astSocket = fsockopen($server, $port, $errno, $errstr, 30);
if (!$astSocket)
{
$droid->dialogCreateAlert("AstMofix","Sorry, TCP Connection on $server : $port was not possible :r(");
$droid->dialogSetNeutralButtonText("I will try again :D)");
$droid->dialogShow();
$result = $droid->dialogGetResponse();
exit(1);
}

/* Authentication process ... */
$droid->dialogCreateSpinnerProgress("Connection Successfull!!!nNow: Trying to Authenticate","Please wait");
$droid->dialogShow();

$login = "Action: Loginrn";
$login .= "Username: $userrn";
$login .= "Secret: $passrnrn";
echo "Sending:rn $login rn";
fwrite($astSocket,$login);
$response=fgets($astSocket); // "Asterisk Call Manager..."
$response=fgets($astSocket); // "Response: Success..."

if (strpos($response,"Success") == false)
{
$droid->dialogDismiss();
$droid->dialogCreateAlert("AstMofix","Sorry, AMI Auth Failed $server : $port with $user/$pass n");
$droid->dialogSetNeutralButtonText("I will try again :D)");
$droid->dialogShow();
$result = $droid->dialogGetResponse();
exit(1);
}
$droid->dialogDismiss();
$droid->dialogCreateSpinnerProgress("Auth Sucessfull !!! Ready to play ;)","Fetching some initial info, please wait");
$droid->dialogShow();
sleep(10);
$droid->dialogDismiss();
$eventsArray=array();
$timetorefresh=time();
/* MAIN BIG LOOP */
while (1)
{
// Receive ...
$line = fgets($astSocket);
//echo ">> $line";
if (substr($line,0,5) == "Event")
{
$parts = explode(":",$line);
$event=$parts[1];
$eventsArray["$event"]=$eventsArray["$event"]+1;
}
$lastupdate=time()-$timetorefresh;
if ( $lastupdate > 15)
{
$values=var_dump($eventsArray);
$droid->dialogDismiss();
$droid->dialogCreateSpinnerProgress("Updated info",$values);
$droid->dialogShow();
$lastupdate=time();
}
}
?>

للعلم: سأسعي جاهدًا إلى دراسة تلك التقنية وإفادتكم -إن شاء الله-.

المزيد من المواضيع:

0 التعليقات:

إرسال تعليق