[برمجة اندرويد] تنفيذ العمليات في الخلفية

عند تنفيذ تطبيق الاندرويد يتم إنشاء عملية أساسية تسمى UI Thread وهي المسؤولة في تنفيذ أوامر التطبيق وعرض النتائج على الشاشة وكذلك الاستجابة لعمليات المستخدم مثل الضغط على الأزرار والكتابة …الخ. في التطبيقات البسيطة تكون تلك العملية قادرة على أداء المهمة بشكل جيد لكن توجد حالات كثيرة يحتاج فيها مطور التطبيق إلى إنشاء عمليات إضافية لكون العملية الأساسية UI Thread غير كافية.

لنفرض مثلا أن التطبيق يقوم بتحميل ملف ويعرض نسبة التحميل على الشاشة بشكل مباشر فهذا يعني أننا نحتاج إلى مراقبة حالة الملف وتعديل البيانات المعروضة على الشاشة بشكل مستمر، لو نفذنا هذه الخطوات باستخدام العملية الأساسية فستجد أن التطبيق سيصبح مشغول في حلقة برمجية (loop) لمراقبة عملية تحميل الملف وتعديل بيانات العرض ولن يكون هناك وقت للتعامل مع المستخدم أو بقية أجزاء التطبيق بمعنى أن التطبيق سيكون في حالة عدم استجابة إلى أن يكتمل الملف وتنتهي الحلقة البرمجية. وستلاحظ كذلك أن حالة تحميل الملف الظاهرة على الشاشة لن تتحدث وستكون صفر عند البداية وستبقى كذلك إلى أن يكتم التحميل وستقفز فجأة إلى 100% والسبب أن العملية الأساسية كما ذكرنا مشغولة بعملية التحميل ولا تستطيع تحديث شاشة التطبيق ليرى المستخدم نسبة تحميل الملف. نفس المشكلة لو كان البرنامج عبارة عن ساعة زمنية أو يقوم بتحريك رسومات أو لعبة.

الحل سهل، وهو بإنشاء عملية أخرى تعمل في الخلفية تقوم هي بمتابعة عملية تحميل الملف وترسل تحديثات عن حالة التحميل إلى العملية الأساسية وهذه العملية تسمى AsyncTask وتعني العملية غير المتزامنة لأنها تعمل بشكل مستقل عن العملية الأساسية. Continue reading “[برمجة اندرويد] تنفيذ العمليات في الخلفية”

Nexus 6P Headset Volume down button fix

Nexus 4 owners, and I am one of them, were disappointed to find out that it only support 1 button headset control, so no buttons for Vol+ and Vol-. When I bought the Nexus 6P I was hoping it will have support for 3 buttons control. After I got the phone I tested it with my Samsung headset, the play/pause button and the Volume Up button work, however, Volume Down didn’t!!!

I was hoping it is a faulty headset since that I can replace easily, but if it was a design mistake in the Nexus then it might be a problem forever. Luckily and after a quick Google search I found a post on reddit from someone asking if the Nexus 6P has support for 3 buttons headset. The answer was yes, so that is a good news, but one of the replies was from a reddit user “buddhra” who was having a similar problem as mine and did a further test to find out that the Nexus 6P acceptable resistance range for the Vol- doesn’t stretch to the maximum range which the Android specs allows.
Here is a snapshot for part of the post:

Reddit Nexus 6P 3 button headset support problemSo I tested mine and found the resistance of the third button (Vol-) to be 630 ohms, which is within the Android specs but seems out of what the Nexus 6P can recognize.  Not sure if it is a software or a hardware problem in the Nexus 6P which I won’t be able to fix easily, but I know that I can instead fix the headset itself to give the readings that the Nexus 6P expects.

So I opened up the headset control, it is very small and was glued together, but using a thin blade i managed to open it up:

Opening up Samsung headset controlZooming into the circuit board and tracing the PCB wires I figured how the resistors were connected and managed to replace one of the resistors (R3 = 356 ohms) with one of a smaller value (200 ohms) and it now works. (The resistors used in the board are size 402, however, I had one with size 603 which is a little bigger but there was enough space to fit it without any problems):

Samsung Headset Fix for Nexus 6PAll Android headset controls follow a similar way to provide the needed resistance, so your control board might differ but it should be similar.

Robo RC

When my son wanted me to buy him a toy robot I asked him if he would like to build one with me instead, he was so interested so I told him that it will be a car robot with two motorized wheels controlled from the phone over bluetooth and he needs to sketch the design then build it using Lego blocks.

IMG_20150110_115340 IMG_20150110_115358 IMG_20150110_115409IMG_20150301_184414 IMG_20150301_184527 IMG_20150301_184516 IMG_20150301_184501 IMG_20150301_184432 device-2015-03-07-210547
 

While he was busy with the sketches I started looking for parts, so I went to eBay and found these wheels


They come in two speeds, I ordered the slower one since it has more torque.
These wheel will need something to control them since the Arduino micro-controller is not strong enough to drive them with enough current so wanted to build an H-bridge using transistors (which I have already) but I found  a module based on the L298 chip  which is very cheap and has a voltage regulator too, awesome.

Next was the bluetooth module, and I went for the HC-06 which is easy to use and also cheap.

Bluetooth HC06-2And finally is of course the Arduino board, I got the Arduino Pro Mini for its small size and low cost.

arduino_miniEven though I actually used the Arduino Uno for the development since it is much easier to upload the code and fix mistakes.

I got them all from eBay with the cheapest price I can get so some took about a month to arrive and I wasn’t in a hurry:

2x Car Robot Wheels: $6.00
L298N Dual H Bridge: $3.00
HC-06 Bluetooth Module: $4.00
Arduino Pro Mini: $2.60
40pin Dupont Wires: $1.50
Total = about $17

You will also need an Android Phone or tablet, any with Android 3.0 and up should do. Lego blocks or anything to use for the car body.

Here is a video we made showing how to use the app and explaining the car we built and its main parts:

To get the Andriod app click on the Google play icon below:
Android-app-on-google-play

for the Android source code click here
and for the Arduino code click here

Telegram Ultra

** Due to the irresponsible behavior and awkward policy of Telegram company, and after they have taken my username @Fahad and given it to someone else without even asking me or notifying me I decided to delete my telegram account and stop the development of Telegram Ultra. And whoever was contacting me through that username should stop since it is not me anymore!

** بعد التصرف الغير منطقي و السياسة المتخلفة من شركة تيليقرام حيث قامو بسحب اسم المستخدم  @Fahad مني ومنحة لشخص اخر بدون حتى سؤالي او تنبيهي قررت حذف حساب التيليقرام وايقاف تطروير نسخة الترا. وعلى من كان يتواصل معي بالاسم ان يتوقف لانه ليس انا

التيليقرام عبارة عن برنامج للمحادثة يشابه برامج كثيرة مثل الواتساب ولاين ولكنه يتميز بكونه مفتوح المصدر فبإمكان أي مستخدم تعديل البرنامج حسب ما يناسبه.
لن أتحدث عن امن البرنامج ومقارنته بالبرامج الأخرى، ففي نظري جميع البرامج غير امنه وخصوصا انك لا تعرف ما يحدث فعليا في خوادم الشركات لذلك يجب استخدامها في المراسلات العادية والتي لا تخشى من تسربها أو اطلاع الغير عليها.
المهم، قمت بنسخ مصدر البرنامج من موقع Github واضفت له تعديلات وتطويرات ثم رفعت تلك التغيرات على حسابي في Github على الرابط التالي:

https://github.com/fduraibi/Telegram

بالامكان تحميل احدث اصدارة من متجر قووقل (قووقل بلاي)

Get it on Google Play

التغيرات التي قمت بها هي التالي مع تعديلات المطور: (ساقوم بتحديث هذه القائمة عند اصدار تحديثات جديدة تحت تاريخ التعديل)

Continue reading “Telegram Ultra”

تصفح آمن من جهاز هاتفك

اذا كنت تريد تصفح الانترنت من جهاز هاتفك او استخدام برامج المحادثة والتواصل الاجتماعي ولكن تخشى من ان يقوم احد بالتجسس عليك سواء كان من المتطفلين او من الحكومات الجائرة وكنت تمتلك جهاز بنظام اندرويد (مثل سامسونق قالكسي او سوني اكسبيريا وغيره) فعليك بتركيب برنامج Orbot. اعداد البرنامج سهل ويدعم اللغة العربية بشكل جزئي واليكم بعض الصور من خطوات الاعداد

اذا كان جهازك بدون صلاحيات المستخدم المسؤول (بدون root كأن يكون الجهاز جديدا ولم تقم بعمل تعديلات للنظام لتفعيل تلك الخاصية) فإن امكاناتك ستكون محدودة. كما نرى في الصورة السابقة فالبرنامج يقدم خيار “طلب صلاحيات المستخدم الخارق” في حال وجود root للجهاز او الاستمرار بدونه.

في حال عدم وجود صلاحيات مستخدم مسؤول فعليك تحميل متصفح مخصص لاستخدام برنامج التور Orweb و برنامج اخر يقوم على تشفير بعض برامج المحادثة Gibberbot

اليرامج اللتي تدعم برنامج التور بدون روت

اما في حال وجود صلاحيات الروت (root) فبالامكان اعداد البروكسي الشفاف لكافة البرامج في الجهاز او بعضها لكي تستخدم التور في نقل البيانات كما نرى في الصورة التالية

بعد الانتهاء من اعداد البرنامج قم بضغط زر التشغيل للارتباط بخوادم التور

الامر لم يكمل بعد، بل يجب تجربة الارتباط والتحقق من ان برنامجك متصل عن طريق التور وليس بشكل مباشر. برنامج التور يوفر خاصية اختبار المتصفح، الصور التالية توضح عملية اختبار فايرفوكس (Firefox) بدون التور

وهنا الصور تبين تفعيل صلاحيات المستخدم المسؤول “الروت” واختيار فايرفوكس كأحد البرامج التي يتم تمرير بياناتها عن طريق خوادم التور ثم اعادة عملية الاختبار


مبروك قد تم اعداد المتصفح بشكل صحيح، تصفح آمن.

** ملاحظة: يجب أخذ الحذر عند استخدامها ومحاولة عدم استخدام معلومات شخصية قد تدل عليك، وايضا يجب ان تتقي الله ولا تستخدمها في ما يغضبه.