السلام عليكم ورحمة الله
اسهل طريقة لبرمجة جافا موبايل هو استخدام NetBeans EE النسخة رقم 7.0 مع جافا ٣٢ بت أي يجب تثبيت ألة جافا الإفتراضية 32 بت (JDK 32 bit) حتى لو كان نظام التشغيل 64 بت.
مثلاً اسم النُسخة لنظام لينكس هي netbeans-7.0-ml-linux.sh ولنظام وندوز netbeans-7.0-ml-windows.exe
أمس اشتريت جهاز Samsung Texto plus، وهو يُعتبر من اﻷجهزة المتوسطة السعر، ويميل إلى الرخيص، حيث كان سعره حوالي 70 دولار. وبالرغم من هذا فهو أغلي موبايل أقوم بشراءه، فلم أكُن أنوي شراء موبايل ذكي (إذا اعتبرنا أنه ذكي، أو أن الذكاء هي أحد ميزات الموبيالات)، كُنت أكتفي باﻷجهزة البسيطة والتي أستطيع من خلالها التحدث وإرسال وإستقبال الرسائل، وسماع القرآن من ملفات MP3، دون أن يقيدني بحمله والحرص عليه طوال الوقت مخافة أن يضيع، فالمبويايل البسيط يُمكن أن تتركه في أي مكان وأنت مطمئن. أما تصفح النت فكنت أفضله، ولا زلت أفضله بإستخدام حاسوب أو لابتوب، وتطوير البرامج بإستخدام لوحة مفاتيح كاملة، وليست لوحة مفاتيح لابتوب، وشاشة خارجية (أكبر من شاشة لابتوب).
في أثناء تفقد ميزات الموبايل وبرامجه- وهو مازال في الشاحن- لفت نظري أن به برامج جافا موبايل، فأسرعت إلى الكمبيوتر لتشغيل Net Beans ووجدت أنه يدعم تطوير Java ME وهي Java Micro Edition، مخصصة للأجهزة المُدمجة والموبايلات. وبخلاف اﻷندويد والـ iOS، فهي غير معتمدة على نوع نظام تشغيل الهاتف، تحتاج لمشغل لها في أنظمة سيمبيان أو أي أنظمة أخرى، ولا أرى ما يمنع أن يتم تطوير هذا المشغل (Virtual machine) في بيئة اﻷندرويد مثلاً.
شعرت بفرح كبير عند تشغيل أول برنامج Hello World، في الموبايل، بعد محاولتين، حيث أن المحاولة اﻷولى فشلت وذللك بسبب عدم معرفتي بنسخة المشغل الموجودة. ويُمكن عمل برامج جافا موبايل في بيئة Net Beans عن طريق:
New Project/Java ME/Mobile Application
ويوجد محاكي موبايل لتشغيل البرنامج. وفي النهاية نقوم بنقل المجلدdist الذي يحتوي على المفات ذات اﻹمتداد jad و jar
بعدها قررت أن أقوم في يوم من اﻷيام بعمل برنامج مواقيت الصلاة لولاية الخرطوم، حيث أنه لدي البيانات اليومية لمواقيت الصلاة كُنت قد كتبتها في عام 1997، وقُمت باستخدامها في أكثر من برنامج. كانت لدي مشاريع أخرى لهذا اليوم، لكن لم استطع أن أقاوم، فهذه أول مرة أقوم بعمل برنامج لموبايل، فجلست باقي اليوم أطور في برنامج مواقيت الصلاة، وقراءة كود الجافا. والحمد لله وجدت دعم كبير في اﻹنترنت لكل مشكلة واجهتي.
وقد قُمت بتجربة البرنامج في موبال آخر صيني، وقد عمل فيه البرنامج أيضاً.
لكن لاحظت أن لغة جافا، وباﻷخص جافا موبايل فيها بعض التعقيد للمهات العادية، كقراءة ملف نصي، أوالتعامل مع التاريخ. فمثلاً هذا كود للقراءة من ملف نصي في لغة Java ME:
class FileRead { public static void main(String args[]) { try{ FileInputStream fstream = new FileInputStream("textfile.txt"); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; while ((strLine = br.readLine()) != null) { System.out.println (strLine); } in.close(); }catch (Exception e){ System.err.println("Error: " + e.getMessage()); } }
وهذه مقارنة لقراءة ملف نصي بلغة أوبجكت باسكال:
procedure ReadTextFile; var List: TStringList; i: Integer; begin try List:= TStringList.Create; List.LoadFromFile('/proc/cpuinfo'); for i:= 0 to List.Count - 1 do Writeln(List[i]); List.Free; except on e: exception do Writeln(e.Message); end; end;
وهذا لقراءة ملف نصي بإستخدام مونو C#
public static void Main (string[] args) { try { using (StreamReader sr = new StreamReader("/proc/cpuinfo")) { String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); }; }
نلاحظ أن لغة جافا إحتاجت لثلاث Classes لقراءة الملف النصي، بينما أوبجكت باسكال وسي شارب إحتاجت لواحد فقط.
وهذه مثال لإضافة ساعتين للوقت الحالي وإظهاره بشكل محدد، في جافا العادية:
Calendar cal = Calendar.getInstance(); Format myTimeFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); cal.add(Calendar.HOUR, 2); System.out.println(myTimeFormat.format(cal.getTime()));
وهذه نفس العملية بلغة أوجكت باسكال:
Writeln(FormatDateTime('yyy-mm-dd hh:nn:ss', Now + EncodeTime(2, 0, 0, 0)));
وهذا نفس الشيء بإستخدام مونو C#:
DateTime dateValue = new DateTime(); dateValue = DateTime.Now.AddHours(2); Console.WriteLine(dateValue.ToString("yyyy-MM-dd hh:mm:ss"));
وفي الختام فإن التجربة كانت ممتعة وتعلمت منها كثيراً. ومع أن برمجة الموبايلات متجهة نحو اﻹندويد وiOS، إلا أنه مايزال عدد كبير من اﻷجهزة الرخصية والمتوسطة السعر تدعم هذه التقنية، حسب إحصائية موقع صن، فإن عدد الموبايلات التي تحتوي على جافا موبايل هي 3 مليارات.
http://mobile.processing.org/
هنا أنت قدمت شيئين جميلين عن الجافا:
* أنها لغةٌ متعددة الأرضيات بامتياز، و لها مكتبةٌ قياسيةٌ قوية بالفعل و تغطي مديً كبيراً للغاية من المجالات البرمجية، و هذا ما أدي إلي أنها الأولي عالمياً من حيث عدد المبرمجين بها (أو الثانية علي الأقل).
* أن مكتبتها تضطرك في بعض الأحيان لقول الكثير حتي تصف ما تريد، بينما هناك لغاتٌ أخري تُنفذ ما تريد من خلال أقل قدرٍ ممكنٍ من الجُمل. و أظن أن هذا راجعٌ إلي ضخامة المكتبة الشديدة، فلا يستطيع مطوروها و لا يُتاح لهم الوقت لكي يكتبوا أصنافاً classes عالية المستوي تختصر الطريق علي المبرمجين بها.
يُمكنك بكل تأكيد كمبرمج منعزلٍ عنهم أن تصنع غلافاً wrapper حول تلك الأصناف التي تحتاجها بكثرة بحيث يلخص الأكواد التي تكتبها بكثرة و تستهلك وقتاً كبيراً، و هذا هو الحل الأفضل في نظري، و ربما بعد فترةٍ زمنيةٍ يتحول الغلاف إلي مكتبةٍ قوية يستطيع الآخرون الاستفادة منها في عملهم، و قد حدث هذا علي سبيل المثال مع مكتبة EZGUI المكتوبة بلغة PoweBasic:
بالنسبة لأنها تخدم تعدد المنصات فهذا صحيح. لكن يوجد فرق بين أوامر جافا للموبايل وباقي اﻷنظمة اﻷخرى، فمثلاً المثال السابق المكتوب لإضافة ساعتين لا يعمل مع الموبايل، جلست أكثر من ساعة أبحث في اﻹنترنت وأجرب لأجد حل، وفي النهاية كان الحل لهذه المشكلة البسيطة حوالي خمسة عشر سطراً فقط لإضافة ساعة وعدد من الدقائق. وحتى البلاك بيري له أوامره للجافا مختلفة أحياناً عن برمجة جافا me
لكن في النهاية الفكرة العامة واحدة، ومن استخدم جافا يستطيع بسهولة الدخول إلى أي من منصاتها المختلفة بسهولة.
المتطلبات البرمجية أصبحت في إزدياد وتعقيد، ويجب لحل المشاكل البرمجية تقديم حلول بسيطة وسهلة، وليس حلول معقدة. لذلك نطلب من كل لغات البرمجة المستقبلية أن توفر حلول سهلة، ومنطقية، ومتوقعة للمسائل البسيطة والمسائل المعقدة.
أستاذي لماذا يجب ليك تعلم الجافا في حين يمكنك برمجة الموبايل بأوبجكت باسكال
طالع هذا الموضوع الذي كتبته في دلفي للعرب
http://www.delphi4arab.com/forum/showthread.php?t=6768
قُمت بإنزال البرنامج في الوندوز، لكنه لم يقم بترجمة البرامج، وقد حاولت تشغيل الآمثلة المصاحبة له بدون فائدة. يظهر أن به مشكلة مع وندوز 7
أعطه كل الصلاحيات run as administrator
نعم نجحت الطريقة في الترجمة وإخراج ملفات تنفيذية. لكن لايوجد محاكي موبايل معه، لذلك أقوم بنقل الملف التنفيذي إلى الموبايل لتجربته، ولاحظت أيضاً أنها لغة باسكال العادية (هيكلية) وليست هدفية (أوبجكت باسكال)
اختلاف الأوامرلفعل نفس الشيء لكل منصة مع أنها لا ترتبط منطقياً بالعتاد شيءٌ غريبٌ بالفعل !
ربما يكون هذا بسبب اختلاف مبرمجي المكتبات لكل منصة، و لكن حتي في هذه الحالة فيجب عليهم أن ينتبهوا إلي جزئية توحيد الواجهة قدر الإمكان حتي يسهل الأمر علي المبرمجين للتنقل بين الأجهزة المختلفة بمنحني تعليمٍ بسيط !
أري أن هذه غلطةٌ هندسيةٌ في تصميم المكتبة، و لكن يمكن حلها أيضاً عن طريق طبقةٍ تغلف كل هذا 🙂
بخصوص اللغات الجديدة: أظن أن البساطة ستكون من اولويات مصممي تلك اللغات.
اﻷخ وائل حسن، هلا ساعدتنا في ترجمة هذا اﻷجراء (تحويل تاريخ ميلادي إلى هجري)، جلست أمس حوالي أربع ساعات لمحاولة تشغيله في الجافا، لكن لم تكن النتائج صحيحة. فقط السنة رجعت صحيحة. وهو مكتوب بلغة أوبجكت باسكال، أريد تحويله إلى جافا العادية:
ها هي ذي الترجمة بالأسفل، حاولت أن أجعل الكود أقرب ما يمكن لما كتبتَه، و لكن في الترجمة ستري أنني لم أستطع تحويل دالة EncodeDate لما يناظرها بالجافا لعدم معرفتي له (أظن أنك قد تجاوزت هذه النقطة في محاولاتك :
معذرةً لم أستطع تنسيق كود الجافا في الرد السابق، لو كان بإمكانك تعديله فافعل مشكوراً.
شكراً لك اﻷخ وائل على هذا المجهود. مع بعض التعديلات أعطاني نفس النتيجة التي أعطانيها البرنامج الذي كتبته أمس وهو يوم 9 شهر 6 سنة 1433، كان المفترض أن يكون 14 شهر 7 عام 1433
وهذا هو الكود بعد التعديل:
وهذا هو نداء الدالة:
ملاحظة:
لتنسيق الكود أكتب كلمة code بين مربعين، ثم في النهاية أكبر /code بين مربعين أيضاً
الشكر لله تعالي.
جربت الكود عندي و فعل ما تقوله بالضبط !
الأمر يبدو غلطةً منطقية، يحتاج هذا مني إلي بعض التفكير بعد الانتهاء من الجزء الذي أعمل عليه في مشروعي.
خذ وقتك، فأنا لست مستعجل، استخدم اﻵن الدالة المكتوبة بلغة أوبجكت باسكال، وهي تعمل منذ عدة سنين:
http://code.sd/hejri.htm
وأردت أن أقوم بترجمتها لإستخدامها في برنامج جافا موبايل
السلام عليكم اريد مساعدة عن برنامج توقيت الصلاة ومع الاذان اخوك سمير من كوردستان العراق
وعليكم السلام، هل تبحث عن برنامج أم تريد برمجة برنامج لمواقيت الصلاة؟
السلام عليكم اخ العزيز اريد قوم بانشاء برنامج مواقيت الصلاة لمدينتنا ومع الاذان حتى الان ماعدنا مواقيت للموبايل مع الاذان
اريد قوم بهذا البرنامج وانت معى حتى النهاية واريد شرح بالفيديو ومع كودات اه لونجحنا بهذا خيرالجاري هذة الفكرة واحد من افكاري في الدونيا و من سيربح المليون والسلام عليكم
يوجد أخ فلسطيني في مصر نسيت اسمه، قد قام بعمل برنامج (إلى صلاتي) وفيه عدد كبير من المُدن، وبرنامجه يعتمد على الموقع الجغرافي للمدينة Long, Lat
بالنسبة للبرنامج الذي قُمت بعمله هو يصلح فقط للخرطوم
يُمكنك اﻹستفادة إيضاً من برنامج minbar في نظام لينكس، فيه اذان أيضاً، وهو مفتوح المصدر على ما أعتقد
انا ابخث في كوكل لايوجد شيء بهذا الاسم مينبر باي برنامج انت صنعت ؟ واذا انت عندك عنوان قول لي باي مشروع عن الصلاة؟ وشكرا لك
منبر برنامج في نظام لينكس، لكن صفحته لا تعمل
هذ صفحة برنامج إلى صلاتي يعمل في وندوز، حاول التواصل مع صاحبه:
http://www.ela-salaty.com/
اخ العزيز اريد مشاريعك او كودك اريد بهذا طريقة صنعت مع سبيل المثال العصر-2:45 موخط جغرافي عندي كودات كامل السنة
أنا لم استخدم خطوط العرض أو الطول، إنما قُمت بكتابة مواقيت الصلاة في الخرطوم لسنة كاملة (إخترت يوم من كل إسبوع). لذلك فهي تصلح فقط للخرطوم. هل تُريدني أن ارسل لك برنامج الجافا الذي يعمل في الموبايل؟
السلام عليك نعم استاذ انااريد نفس خطواطك وافكارك ادخل كل كودات اوقات الصلاة كل يوم وسنةكاملة بس ارسل مشروعك اوقات الصلاةالخرطوم حتى انا تبديل كودات اوقات الصلاة لمدينتنا والى جميع مناطق الكوردستان؟استاذ انامحتاج الى افكارك وشكرا
يُمكنك تحميل المشروع من الرابط التالي:
http://code.sd/khathan/kathan.zip
شكرا لك جزاك الله الجنة واريد البرنامج هذا المشروع :عندي نيت بينس بس صعبة باي برنامج انت صنعت؟
بإستخدام NetBeans، بس تأكد أنها تحتوي على Java ME وهو التي يُمكن بها عمل برامج للموبايل
مايفتح في البرنامج نيت بينس اريد طريقة يفتح المشروع في البرامج؟
توجد نُسخة أخرى من البرنامج مكتوبة بواسطة دلفي 7 وفيها اﻵذان. وتوجد نُسخة أخرى بواسطة لازاراس، هل أرسل أحدهما لك في حالة فشل فتح مشروع NetBeans
نعم ارسل دلفي او لازاراس “””حتى مايفتح برامج جافا(تيم)مي بلات فورم
استاذ اي شي عندك ارسل من مشروع و برامج
هذا نفس البرنامج مكتوب بدلفي 7
http://code.sd/khathan/AthanDelphi.zip
سلام عليك استاذ اذا عندك برامج دلفي7 ارسل لي؟
معظم برامج دلفي 7 قديمة، ربما لا تستفيد منها، وأغلبها برامج بسيطة
ماذا فعلت ببرنامج اﻷذان، هل اشتغل عندك؟
السلام عليكم”انا طالبة جامعية عندي مشروع عاذي السنة رح اعملو حولا تصميم لعبه ع الموبايل “بدي مساعدة منكو يا اساتذة”وشو رايكم بهذا الموضوعط
وعليكم السلام.
المهم تحديد نوع اﻷجهزة المستهدفة، مثلاً أندرويد، أي فون، وندوز فون. ثم تعلم اللغة التي يتم بها البرمجة للنوع الذي تم إختياره
استاذ ما شغلت حيرني يوم بيوم انا عمل عليه حتى الان مايستفيدلي….
مايفتح في اي برامج…………………….
برنامج الدلفي فتح؟
هل عندك دلفي 7؟
ماعندي استاذ…اذاعندك ارسل…………..؟؟؟
ليس لدي
السلام عليكم” استاذ اريد فيديوتعليمى صنع اوقات الصلاة بشكل مقصرمن البدايةالى التهايةببرنامج نيت بينس ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
السلام عليكم
أخى سمير، لا يوجد فيدو مفصل لصنع برنامج صلاة أو برنامج حسابات أو غيرها من البرامج، إنما توجد فقط فيديوهات وكتيب ومواقع لتعليم لغات البرمجة، وإذا أتقنت لغة برمجة تستطيع أن تعمل بها ماتشاء من برامج.
فنصيحتي لك أن تتعلم لغة جافا بواسطة NetBeans ثم بعد ذلك التفكير في عمل برنامج لمواقيت الصلاة
وعليكم السلام”جوابك صح”بس استاذ الان ماعدنا برامج مواقيت الصلاة مع الاذان بلغةجافا في الكوردستان كامل في اي موبايل واي مكان”استاذ انا معلم الان يعني ماكو وقت حتى اقوم بهذا المشروع……………..
استاذ انا اقولك انت قوم بهذا العمل الخيري الجاري بالفيديو تعلمني حتى اقدر اصنع هذا المشروع…………………….
أنا اﻵن أعمل في ثلاث مشاريع في نفس الوقت، وقتي مزدحم جداً.
يُمكنك البحث عن برنامج مواقيت صلاة له إمكانية إضافة خط الطول والعرض لمعرفة مواقيت الصلاة في هذه المدينة
اني عندي برنامج جافا نوعه جات اريد اشغله على نظام ال ios كيف ذلك اشرحلي
السلام عليكم اﻷخ مصطفى،
في الحقيقة أنا لست مبرمج برامج موبايل، وليست لي خبرة في برمجة الـ IOS أو حتى استخدام ال I-Phone. البرنامج الوحيد الذي قُمت بكتابته هو برنامج بإستخدام جافا ME وقُمت بتشغيله في أجهزة الموبايل التي تدعم جافا موبايل.
السلام عليكم اريد من سيادتكم مساعدتي في برنامج بالاندرويد للكشف عن اقؤب مستشفيات موجودة في المنطقة
السلام عليكم اريد من سيادتكم مساعدتي في برنامج بالاندرويد للكشف عن اقرب مستشفيات موجودة في المنطقة اريدكود الجافا وxml ولكم جزيل الشكر
وعليكم السلام.
لم أقم ببرمجة أي برنامج على اندرويد من قبل، فقط جافا موبايل، وليس لدي جهاز أندرويد.
السلام عليك ” ممكن اخي ابو الياس نتواصل معك احكييلي كيف؟؟؟؟ وسلامي”
السلام عليك اخ العزيز: حتى الان انا انتضارك اذا عندك وقت اريد كيفية صنع بالفيديو تعليم خطوة بخطوة عن برامج اوقات الصلاة بالجافا اونيت بينس
وعليكم السلام
السلام عليكم
اﻷخ سمير، للأسف ليس لدي وقت، وقتي مذرحم جداً بحوالي 4 مشاريع أو أكثر أعمل عليهم حالياً وفي نفس الوقت
السلام عليكم استاذ هل عندك برامج فلاش بها تاريخ الهجري الان احتاج ضروري ب تاريخ الهجرة؟استاذ اذا عندك كود تاريخ الهجرة في استعمال في ماكروميديا فلاش او سويش ماكس؟
استاذ والله الان احتاج كود تاريخ الهجرة اذا اقدر اريد فيديو تعليمي كيف يصنع برامج تاريخ الهجرة.
للأسف ليس لي تعامل مع ماكروميديا فلاش أو سويش ماكس كما ذكرت.
السلام عليكم استاذ اريد كود تاريخ الهجرة للنيت بينس بس كامل بدون مشاكل حتى لصق للبرامج نيت بينس. واذا عندك مشروع برامج تاريخ الهجرة ارسل لي.
onSelfEvent (enterFrame)
{
bb= new Date()
day=bb.getDate()
heif=bb.getMonth()+1 // 1-12
if(heif==1)
{
if(day==1)
{a=”06:21″;b=”05:06″;c=”02:45″;d=”12:16″;e=”07:21″;f=”06:02″;g=”05:47″} استاذ كيف اقدرمع هذا الاوقات شغل الصوت يعني العصر(02:45)وشغل الصوت الاذان مع :الان انا كملت برامج الاذان بس اريد مع صوت الاذان.
استاذ في برامج سويش ماكس انا كملت
لم أستطع كتابة كود التحويل إلى التاريخ الهجري بواسطة لغة جافا، وقد حاول الأخ وائل حسن مساعدتي في معرفة المشكلة لكن في النهاية لم ينجح الأمر
السلام عليك كيف اقدرمع هذاكودonSelfEvent (enterFrame)
{
bb= new Date()
day=bb.getDate()
heif=bb.getMonth()+1 // 1-12
if(heif==1)
{
if(day==1)
{a=”06:21″;b=”05:06″;c=”02:45″;d=”12:16″;e=”07:21″;f=”06:02″;g=”05:47″}في برامج سويش ماكس4شغل صوت مع يعني مع هذا الكوداوقات الصلاةplay sound
لم أسمع ببرنام سويش ماكس من قبل
المشكلة في ان الدالة HejriStart.getTimeInMillis() ترجع قيمة غير صحيحة(حسب حساباتي !) ،
حيث يفترض ان تقوم بارجاع الفرق بين التاريخ HejriStart ويوم 1-1-1970
الدالة ترجع القيمة -4.25189E13 ملي ثانية يعني 492117 يوما ، لكن القيمة الصحيحة هي
(1970-623)*365.25 =491991.75
وباضافة الخمسة اشهر 5*30.5 و16 يوم يكون الناتج 492160 يوما الفرق 44 يوما !!
بالنسبة لبرنامج الباسكال الدالة EncodeDate ترجع القيمة 4466582- ولكن بالحساب القيمة الصحيحة هي 466592- الفرق 10 ايام !
ما رأي الأستاذ ابو اياس؟
خلط اللغة العربية بالانجليزية الكلام صعب القراءة فاعذروني.
التاريخ الهجري بالجافا كانت فيه المشكلة التي ذكرتها في الجافا، لكن لم أعد أتذكر جيداً، فقط عملت عليها أيام متواصلة دون أن أصل إلى نتيجة.
هل تستطيع إكمال التجارب في هذا الموضوع في جافا والوصول إلى نتائج؟
لقد عرفت سبب فرق العشرة ايام في كود لازاراس : طريقة التي حسبت بها غير صحيحة، فبعد قراءة هذه المقالة في ويكيبيديا http://ar.wikipedia.org/wiki/تقويم_ميلادي عرفت ان السنة التي تقبل القسمة على 100 تعتبر سنة غير كبيسة الا اذا كانت تقبل القسمة على 400 ، اي ان القاعدة التى نعرفها بان السنة الكبيسة هي التي تقبل القسمة على اربعة غير صحيحة!
الكود التالي يعطي نتائج مطابقة للكود المكتوب بلازاراس لكنه غير قادر على تمييز المدخلات الخاطئة (مثل 29-2-2011) لم اعرف سبب القيم (الغريبة!)الت تعيدها الدالة getTimeInMillis()
لم استطع تنسيق الكود فارجو المعذرة، كيف انسقه؟.
شكراً لك على هذا الاجتهاد. سوف أقوم بتجربتها في أقرب وقت إن شاء الله.
بالنسبة للسنة الكبيسة فهي كانت إضافة ليس لها داعي، قمت بحذفها منذ زمن طويل، نحن لانحتاجها في التحويل. لكن ربما لم أحذفها من المكتبة الموجودة في الموقع
اخي العزيز هناك طريقة اسهل ل تصميم برامج الجوال
,, الطريقة هي
استخدام pys60
و استخدام بايثون لل برمجة
وماهو نظام تشغيل الموبايل المستهدف في هذه الحال، أي أقصد أي نوع موبايل مُستهدف؟
نظام Symbian
py60 عبارة عن interupter للغة بايثون للاجهزة التي تعمل بنظام سيمبيان(اجهزة نوكيا)، للاسف موبايلي ضاع في العيد قبل اخذ فكرة كافية عنها 🙂
http://sourceforge.net/projects/pys60/files/pys60/1.4.5/
ربنا يعوضك خير إن شاء الله
نظام سيمبيان متجه إلى نهاية، انصح بإستثمار التعلم في نُظم تشغيل متجهة إلى المستقبل مثل Android, IOS
مرحبً
اني شخص اعشق البرمجة من صغري
اجيد العديد من لغات البرمجة منهى c c++ java و بايثون و روبي و فري باسكال/لازرس و لغة التجميع
قمت ب تصميم الكثير من البرامج ل الاستخدام الشخصي
و قمت ب كتابت بعض الالمترجمات ل لغات البرمجة لل تسلية
ولاكن المشكلة اني مكفوف (اعمى)
استخدم برنامج قارء شاشة
لذالك اني مقيد ب النسبت ل بعض مكتبات الواجهة الرسومية
ف مثلن برنامج نت بيمز لا استطيع التعامل معه ب سبب عدم دعم برنامج قارؤ الشاشة له
ب النسبة ل برامج الجافا اكتبهى ب برنامج المفكرة
لذالك برمجت java me تبدو لي مستحيلة
السلام عليكم ممكن تساعدني عندي برنامج من سيربح المليون ومابيشتغل الا مرة واحدة بعدها ال داتا بيس تتبعثر
import java.util.Vector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;
public class MillionaireGame extends MIDlet implements CommandListener {
// Form : form : Main Menu
private Command play ;
private Command admin;
private Command back;
private Command exit;
private Display display;
// private welcome;
private Form form;
private String st;
private String st1;
// Form : form1 : Admin
private Form form1;
private TextField txtpassword;
private Command login;
private Alert alert;
// Form2: Menu in admin
private Form form2;
private Command add;
private Command edit;
private Command delete;
private Command menu;
private Command viewQuestion;
//FormAdd
private Form formadd;
private TextField txtquestion;
private TextField txtA;
private TextField txtB;
private TextField txtC;
private TextField txtD;
private TextField txtanswer;
private Vector Vlist= new Vector();
private RecordStore rs=null;
private RecordEnumeration re;
//FormEdit
private List listedit;
private Form formedit;
private Form formshow;
private StringItem storeRecords;
private TextField txteditquestion;
private TextField txteditA;
private TextField txteditB;
private TextField txteditC;
private TextField txteditD;
private TextField txteditanswer;
private Command save;
//FormDelete
private Form formdelete;
private TextField txtdelete;
//Form Play Game
private Form formquestion1;
private Form formquestion2;
private Form formquestion3;
private Form formquestion4;
private Form formquestion5;
private Form formquestion6;
private Form formresult;
private ChoiceGroup cgplay;
private Gauge gshow;
private Ticker tkwinlose;
private Command nextquestion;
private Command select;
private Command start;
private int score=32;
private int win=0;
private int lose=0;
public MillionaireGame()
{
// Form : Main Form
form =new Form(“Millionaire Game App”);
st= “Welcome to Millionaire Game App”;
st1= ” Select Menu to Play Game”;
play= new Command(“Play”, Command.SCREEN,1);
admin=new Command(“Admin”, Command.SCREEN,2);
exit = new Command(“Exit”,Command.EXIT, 1);
back= new Command(“Back”,Command.BACK,1);
form.addCommand(play);
form.addCommand(admin);
form.addCommand(exit);
form.append(st);
form.append(st1);
form.setCommandListener(this);
// form 1 : Form password
form1 = new Form(“Log In to Administrator “);
txtpassword = new TextField(“Password : “, “” , 6,TextField.PASSWORD | TextField.NUMERIC);
form1. append(txtpassword);
login = new Command(“Login”, Command.SCREEN,1);
form1.addCommand(login);
form1.addCommand(back);
form1.setCommandListener(this);
//form 2 : admin
form2 = new Form(” Form Administrator “);
String st2= “Welcome to Administrator”;
form2.append(st2);
add= new Command(“Add”,Command.SCREEN,1);
edit = new Command(“Edit”, Command.SCREEN,2);
viewQuestion= new Command(“View”,Command.SCREEN,2);
menu= new Command(“Log out”, Command.BACK,1);
form2.addCommand(add);
form2.addCommand(viewQuestion);
form2.addCommand(menu);
form2.setCommandListener(this);
//FormAdd:
formadd = new Form(“Form Add record”);
txtquestion= new TextField(“Question : “, “” ,40, TextField.ANY);
txtA = new TextField(“Answer A: “, “” , 25,TextField.ANY);
txtB = new TextField(“Answer B: “, “” , 25,TextField.ANY);
txtC = new TextField(“Answer C: “, “” , 25,TextField.ANY);
txtD = new TextField(“Answer D: “, “” , 25,TextField.ANY);
txtanswer=new TextField(“Answer :”, “” , 10, TextField.ANY);
formadd.append(txtquestion);
formadd.append(txtA);
formadd.append(txtB);
formadd.append(txtC);
formadd.append(txtD);
formadd.append(txtanswer);
formadd.addCommand(back);
formadd.addCommand(add);
formadd.setCommandListener(this);
//Formedit
//listedit= new List(“List Edit Records “, List.IMPLICIT);
formedit = new Form(“Form Edit record”);
listedit = new List(“List Edit Records”,List.IMPLICIT);
txteditquestion= new TextField(“Question : “, “” ,40, TextField.ANY);
txteditA = new TextField(“Answer A: “, “” , 25,TextField.ANY);
txteditB = new TextField(“Answer B: “, “” , 25,TextField.ANY);
txteditC = new TextField(“Answer C: “, “” , 25,TextField.ANY);
txteditD = new TextField(“Answer D: “, “” , 25,TextField.ANY);
txteditanswer=new TextField(“Answer :”, “” , 10, TextField.ANY);
save= new Command(“Save”,Command.SCREEN,1);
formedit.append(txteditquestion);
formedit.append(txteditA);
formedit.append(txteditB);
formedit.append(txteditC);
formedit.append(txteditD);
formedit.append(txteditanswer);
formedit.addCommand(back);
formedit.addCommand(save);
formedit.setCommandListener(this);
//Formdelete
formdelete= new Form(“Form Delete Record By ID”);
txtdelete= new TextField(“Enter Record ID:”,””,2,TextField.NUMERIC);
delete= new Command(“Delete”,Command.SCREEN,1);
formdelete.append(txtdelete);
formdelete.addCommand(delete);
formdelete.addCommand(back);
formdelete.setCommandListener(this);
// Form Play Game
formquestion1= new Form(“Millionaire Game”);
formquestion2= new Form(“Millionaire Game”);
formquestion3= new Form(“Millionaire Game”);
formquestion4= new Form(“Millionaire Game”);
formquestion5= new Form(“Millionaire Game”);
formquestion6= new Form(“Millionaire Game”);
formresult = new Form(“Result”);
select= new Command(“Select”,Command.SCREEN,1);
nextquestion= new Command(“Next”,Command.SCREEN,1);
start= new Command(“Startup”,Command.SCREEN,1);
//Form show Records
formshow = new Form(“Show Records”);
// ChoiceGroup in formplay
}
public void startApp()
{
display=Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
notifyDestroyed();
}
public void commandAction(Command c, Displayable d)
{
//formadd
if (d==formadd) {
if(c==back) {
display.setCurrent(form2);
txtquestion.setString(“”);
txtA.setString(“”);
txtB.setString(“”);
txtC.setString(“”);
txtD.setString(“”);
txtanswer.setString(“”);
}
//Creating recordstore
if(c==add){
OpenRecords(“myRecordStore”);
// Writing Records
WriteRecord(“What is the capital of Thailand?,A.Bangkok,B.Jakarta,C.Phnom Penh,D.Kuala Lumpur,Bangkok”);
WriteRecord(“What is the capital of Cambodia?,A.Bangkok,B.Phnom Penh,C.Jakarta,D.Hanoi,Phnom Penh”);
WriteRecord(“What is the capital of Vietnam?,A.Hanoi,B.Jakarta,C.Tokyo,D.Kabul,Hanoi”);
WriteRecord(“What is the capital of Japan?,A.Beijing,B.Tokyo,C.Hong Kai Do,D.Bangkok,Tokyo”);
WriteRecord(“What is the capital of Oman?,A.Doha,B.Ankara,C.Kabul,D.Muscat,Muscat”);
WriteRecord(“What is the capital of Lao?A.,Amman,B.Astana,C.Vietiane,D.kuwaii,Vietiane”);
// add String from TextField.
// try{
String Data=”” ;
Data= Data + txtquestion.getString() + “,”;
Data= Data + txtA.getString() + “,”;
Data= Data + txtB.getString() + “,”;
Data= Data + txtC.getString() + “,”;
Data= Data + txtD.getString() + “,”;
Data= Data + txtanswer.getString();
WriteRecord(Data);
txtquestion.setString(“”);
txtA.setString(“”);
txtB.setString(“”);
txtC.setString(“”);
txtD.setString(“”);
txtanswer.setString(“”);
ReadRecord();
CloseRecord();
DeleteRecordstore(“myRecordStore”);
}
}
//Form: Main Form
if(d==form)
{
if(c==exit)
{
notifyDestroyed();
destroyApp(false);
}
if(c==admin){
display.setCurrent(form1);
}
if(c==play){
String record1;
record1= Vlist.elementAt(0).toString();
String question=new String(record1.substring(0,record1.indexOf(‘,’)));
String answer = new String(record1.substring(record1.indexOf(‘,’)+1));
String answerA =new String( answer.substring(0,answer.indexOf(‘,’)));
String answer1 =new String( answer.substring(answer.indexOf(‘,’)+1));
String answerB= new String(answer1.substring(0,answer1.indexOf(‘,’)));
String answer2 =new String( answer1.substring(answer1.indexOf(‘,’)+1));
String answerC= new String(answer2.substring(0,answer2.indexOf(‘,’)));
String answer3 =new String( answer2.substring(answer2.indexOf(‘,’)+1));
String answerD=new String( answer3.substring(0,answer3.indexOf(‘,’)));
String answer4 = new String(answer3.substring(answer3.indexOf(‘,’)+1));
// Add Record into ChoiceGroup : record1
cgplay= new ChoiceGroup(question.toString(),Choice.EXCLUSIVE);
int cgdefault= cgplay.append(answerA.toString(), null);
cgplay.append(answerB.toString(), null);
cgplay.append(answerC.toString(), null);
cgplay.append(answerD.toString(), null);
cgplay.setSelectedIndex(cgdefault,true);
formquestion1.append(cgplay);
formquestion1.addCommand(select);
formquestion1.setCommandListener(this);
display.setCurrent(formquestion1);
}
}
// Form1:Admin
if(d==form1)
{
if(c==back) {
display.setCurrent(form);
}
if(c==login)
{
if(txtpassword.getString().equals(“1234”)) {
alert= new Alert (“Successful”,”Log in Successfull”, null , null);
display.setCurrent(alert , form2);
txtpassword.setString(“”);
}
else {
alert = new Alert (“Failure”, “Log in fail, Log in again !” , null, null);
display.setCurrent(alert , form1);
txtpassword.setString(“”);
}
}
}
//form2
if(d==form2)
{
if(c==menu){
display.setCurrent(form);
}
if (c==add){
display.setCurrent(formadd);
}
if(c==viewQuestion){
display.setCurrent(listedit);
}
}
// Form Edit
if(d==listedit)
{
if(c==back)
{ display.setCurrent(form2);}
if(c==edit)
{
// Cut String into Formedit to update
int index= listedit.getSelectedIndex();
String part = listedit.getString(index);
// final int k= part.indexOf(‘,’);
String question=part.substring(0,part.indexOf(‘,’));
String answer = part.substring(part.indexOf(‘,’)+1);
String answerA = answer.substring(0,answer.indexOf(‘,’));
String answer1 = answer.substring(answer.indexOf(‘,’)+1);
String answerB= answer1.substring(0,answer1.indexOf(‘,’));
String answer2 = answer1.substring(answer1.indexOf(‘,’)+1);
String answerC= answer2.substring(0,answer2.indexOf(‘,’));
String answer3 = answer2.substring(answer2.indexOf(‘,’)+1);
String answerD= answer3.substring(0,answer3.indexOf(‘,’));
String answer4 = answer3.substring(answer3.indexOf(‘,’)+1);
// System.out.println( answer4);
// Store in TextField to update
txteditquestion.setString(question);
txteditA.setString(answerA);
txteditB.setString(answerB);
txteditC.setString(answerC);
txteditD.setString(answerD);
txteditanswer.setString(answer4);
display.setCurrent(formedit);
}
// Delete Record
if(c==delete)
{
OpenRecords(“myRecordStore”);
// display.setCurrent(formdelete);
int index;
index= listedit.getSelectedIndex();
listedit.delete(index);
DeleteRecord(index+1);
alert=new Alert(“Delete Record”,”Deleting”,null,null);
display.setCurrent(alert);
ReadRecord();
display.setCurrent(listedit);
CloseRecord();
}
}
if(d==formedit) {
if(c==back){
display.setCurrent(listedit);
}
if(c==save) {
OpenRecords(“myRecordStore”);
//boolean updatestatus= false;
String data1=””;
try{
data1+=txteditquestion.getString()+”,”;
data1+=txteditA.getString() + “,”;
data1+=txteditB.getString() + “,”;
data1+=txteditC.getString() + “,”;
data1+=txteditD.getString() + “,”;
data1+=txteditanswer.getString();
byte[] rec = data1.getBytes();
// int index =0;
int index= listedit.getSelectedIndex();
rs.setRecord(index+1, rec, 0, rec.length);
//updatestatus=true;
alert = new Alert(“Update Record”,”Updating …”,null,null);
//Read again to Listedit after updating ……
// ReadRecord();
try{
listedit= new List(“List Edit Records “, List.IMPLICIT);
for (int i = 1; i win)
{
alert=new Alert(“Millionaire Game”,”You are LOSE”,null,null);
}
else if(win>lose){
alert=new Alert(“Millionaire Game”,”You are WIN”,null,null);
}
alert.setTimeout(3000);
display.setCurrent(alert,form);
//display.setCurrent(form);
}
}
}
public void OpenRecords(String nameRecordStore)
{
try{
rs=RecordStore.openRecordStore(nameRecordStore, true);
} catch(Exception error) {
alert= new Alert(“Error opening”, error.toString(),null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void WriteRecord(String st)
{
// OpenRecords(“myRecordStore”);
try{
byte[] outputRecord = st.getBytes();
rs.addRecord(outputRecord, 0, outputRecord.length);
alert= new Alert(“Writing”, st,null,null);
display.setCurrent(alert);
}catch(Exception error) {
alert = new Alert(“Error Writing”,error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void ReadRecord()
{
try
{
byte[] recData = new byte[7];
int len;
for (int i = 1; i recData.length){
recData = new byte[rs.getRecordSize(i)];
}
len = rs.getRecord(i, recData, 0);
listedit.append(new String(recData,0,len),null);
Vlist.addElement(new String(recData,0,len));
}
listedit.addCommand(back);
listedit.addCommand(edit);
listedit.addCommand(delete);
listedit.setCommandListener(this);
}catch(Exception e)
{
alert = new Alert(“Error Readinging”, e.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void DeleteRecord(int indexRecord)
{
try{
rs.deleteRecord(indexRecord);
rs.getVersion();
}catch(Exception error){
alert = new Alert(“Error Deleting”, error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void UpdateRecord(String st, int index)
{
//boolean updatestatus= false;
try{
byte[] rec = st.getBytes();
rs.setRecord(index, rec, 0, rec.length);
// updatestatus=true;
rs.getVersion();
alert = new Alert(“Update Record”,”Updating …”,null,null);
display.setCurrent(alert);
ReadRecord();
}catch (Exception e){
//updatestatus=false;
alert = new Alert(“Error updating ” ,e.toString(),null,null);
display.setCurrent(alert);
}
}
public void CloseRecord()
{
try {
rs.closeRecordStore();
} catch (Exception error) {
alert = new Alert(“Error Closing”, error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void DeleteRecordstore(String nameRecordStore)
{
try{
if (RecordStore.listRecordStores() != null){
RecordStore.deleteRecordStore(nameRecordStore);
}
}catch (Exception e)
{
alert = new Alert(“Error Deleting RecordStore”, e.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
public void ReadFormVector(int index){
String record1;
record1= Vlist.elementAt(index).toString();
//System.out.println(record1);
//final int k= record1.indexOf(‘,’);
String question=new String(record1.substring(0,record1.indexOf(‘,’)));
String answer = new String(record1.substring(record1.indexOf(‘,’)+1));
String answerA =new String( answer.substring(0,answer.indexOf(‘,’)));
String answer1 =new String( answer.substring(answer.indexOf(‘,’)+1));
String answerB= new String(answer1.substring(0,answer1.indexOf(‘,’)));
String answer2 =new String( answer1.substring(answer1.indexOf(‘,’)+1));
String answerC= new String(answer2.substring(0,answer2.indexOf(‘,’)));
String answer3 =new String( answer2.substring(answer2.indexOf(‘,’)+1));
String answerD=new String( answer3.substring(0,answer3.indexOf(‘,’)));
String answer4 = new String(answer3.substring(answer3.indexOf(‘,’)+1));
}
}
مشكور ولله ممكن ترسل لي البرنامج الصممتو دا بي الإيميل
السلام عليكم ممكن احد يرسلي كود عمل برنامج مواقيت الصلاة بالاندرويد بحيث يرن قبل الصلاة بخمس دقائق ويؤشر على اقرب جامع لي؟ جعلها الله في ميزان حسناتكم امين