واجهة برمجة تطبيقات الوسائط المتنقلة من جافا

تُعدّ واجهة برمجة تطبيقات الوسائط المتنقلة ( MMAPI ) مواصفات لواجهة برمجة تطبيقات منصة Java ME لأجهزة CDC و CLDC ، مثل الهواتف المحمولة . وبحسب طريقة تنفيذها، تُمكّن هذه الواجهة التطبيقات من تشغيل وتسجيل الصوت والفيديو، بالإضافة إلى التقاط الصور الثابتة. وقد طُوّرت MMAPI ضمن عملية مجتمع Java تحت مسمى JSR 135.

مفاهيم البرمجة

تعتمد واجهة برمجة تطبيقات الوسائط المتعددة Java على أربعة أنواع رئيسية من الفئات في javax.microedition.mediaالحزمة - وهي Manager، ، Player، ، PlayerListenerوأنواع مختلفة من Control.

يستخدم مبرمجو Java ME الراغبون في استخدام JSR 135 أولاً الطرق الثابتة للفئة Manager. على الرغم من وجود طرق أخرى playTone، إلا أن الطريقة الرئيسية المستخدمة هي createPlayer. تأخذ هذه الطريقة إما URI أو InputStream، ونوع MIME . في معظم الحالات، تُستخدم URIs. تتضمن بروتوكولات URI الشائعة ما يلي:

  • ملف:
  • المورد: (الذي قد يستخرج ملفًا من داخل ملف JAR الخاص بـ MIDlet، ولكنه يعتمد على التنفيذ)
  • http:
  • rtsp:
  • التقاط: (يستخدم لتسجيل الصوت أو الفيديو)

نوع MIME اختياري، ويتم استنتاجه من البيانات التي تم تمريرها إذا لم يتم توفيره.

تُعيد هذه createPlayerالطريقة تطبيقًا للواجهة Player( حتى عند استخدام بروتوكول التقاط URI). تحتوي هذه الواجهة على طرق أساسية قابلة للتطبيق على جميع المشغلات، مثل بدء تشغيل الوسائط وإيقافها، وطلب تكرارها. يمكنك أيضًا setPlayerListenerإنشاء كائن يُطبّق PlayerListenerالواجهة، والذي سيتلقى أحداثًا متنوعة متعلقة بالمقطع (بدء التشغيل، الإيقاف، انتهاء الوسائط، إلخ).

Playerتحتوي الفئات أيضًا على getControlدالة تُعيد تطبيقًا لنوع معين Control. وتتولى هذه الدالة Controlمعالجة أي واجهات برمجة تطبيقات اختيارية غير قابلة للتطبيق على جميع أنواع الوسائط. Playerوقد تتمكن أي فئة معينة من توفير تطبيق لأي نوع معين، أو قد لا تتمكن Control.

(عادةً ما يكون Controlالناتج المُعاد هو Playerنفسه، ولكن هذا ليس مضمونًا).

مجموعة عناصر التحكم التي يتم تنفيذها بواسطة a Playerليست محدودة؛ ومع ذلك، يتم تعريف بعض العناصر القياسية في javax.microedition.media.controlالحزمة بواسطة JSR:

عناصر تحكم MMAPI القياسية
واجهة التحكموصف
التحكم في موضع الإطارأداة تحكم لبيانات الفيديو تسمح بالوصول إلى الإطارات الفردية.
عنصر تحكم واجهة المستخدم الرسوميةعنصر تحكم للبيانات التي تتطلب عرضًا، مثل الفيديو.
عنصر تحكم البيانات الوصفيةتُستخدم لتحديد معلومات البيانات الوصفية المخزنة داخل دفق الوسائط، مثل العنوان وحقوق النشر والمؤلف وما إلى ذلك.
MIDIControlوحدة تحكم كاملة الوظائف تتيح الوصول إلى مشغل MIDI الخاص بالجهاز.
التحكم في درجة الصوتيستخدم للتحكم في درجة الصوت (التردد) للبيانات الصوتية.
التحكم في المعدليُستخدم للتحكم في معدل تشغيل المشغل.
التحكم في السجلاتيتيح لك التحكم في تسجيل البيانات من جهاز التقاط، مثل الفيديو من الكاميرا أو الصوت من مسجل الصوت.
إيقاف التحكم في الوقتعنصر تحكم يسمح لك بتحديد وقت مسبق تريد أن يتوقف فيه المشغل عن التشغيل.
التحكم في الإيقاععلى غرار خاصية التحكم في معدل التشغيل، تتيح لك هذه الخاصية تغيير إيقاع (سرعة) التشغيل لمشغل الصوت، وعادةً ما يكون مشغل MIDI.
التحكم في النغمةوحدة تحكم كاملة الوظائف تتيح لك تشغيل تسلسلات نغمات رتيبة.
التحكم بالفيديويقوم هذا البرنامج بتوسيع واجهة المستخدم الرسومية والتحكم في عرض الفيديو.
التحكم في مستوى الصوتأبسط أداة تحكم تسمح لك بالتحكم في مستوى الصوت في Player.

(قد يتم تعريف الآخرين في JSR 234 ( الملحقات المتقدمة للوسائط المتعددة ).

تم تعريف مجموعة فرعية من JSR 135 في JSR 118 ( MIDP 2.0).

دورة حياة اللاعبين

بغض النظر عن البروتوكول أو نوع الوسائط المستخدمة، فإن Playerالعملية تمر بنفس المراحل المنفصلة خلال دورة حياتها. هذه المراحل مُدرجة في الجدول أدناه.

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

التطبيقات

كما هو الحال مع معظم مواصفات Java ME، تختلف التطبيقات رغم الجهود الحثيثة التي يبذلها واضعو المواصفات لضمان الاتساق. يتمثل مجالان واضحان للاختلاف في عناصر التحكم المدعومة، وفي أنواع URI المقبولة أساسًا. أما المجالات الأقل وضوحًا فتتعلق بدعم المزج ؛ إذ ترغب العديد من الألعاب في تشغيل مقطع موسيقي MIDI وإضافة مؤثرات صوتية PCM فوقه.

يُعدّ الأداء مصدرًا آخر للتفاوت الكبير. على سبيل المثال، عند طلب مقطع فيديو عبر بروتوكول HTTP ، متى يتم تنزيله؟ تُراعي المواصفات هذا الأمر من خلال توفير Playerطريقتين يمكن استدعاؤهما قبل التشغيل الفعلي: realizeو prefetch. اعتمادًا على التنفيذ، قد تُنجز هاتان الطريقتان جزءًا من العمل اللازم لجعل المقطع جاهزًا للتشغيل، مما يُسرّع عملية تشغيله عند الحاجة. بعض التطبيقات متطورة بما يكفي لبثّ المقطع عند الطلب أثناء تشغيله.

يحتوي نظام التشغيل Symbian على تطبيق كامل للغاية لـ JSR 135، ولكن حتى هذا يعتمد بشكل كبير على إمكانيات الوسائط المتعددة الأساسية للجهاز، وقد يختار بعض مصنعي الأجهزة عدم الكشف عن الأجزاء الأكثر غموضًا من Java ME مثل التسجيل.

يتم ضمان اتساق التنفيذ من خلال إلزام جميع التطبيقات باجتياز اختبار مجموعة أدوات توافق تقنية جافا (TCK). يضمن هذا الاختبار فحص كل مخطط URI ونوع MIME وعنصر تحكم مدعوم، ولكنه لا يختبر كل احتمالات هذه الأجزاء الاختيارية.

مثال على الكود

package org.wikipedia.example ;استيراد javax.microedition.midlet.* ; استيراد javax.microedition.media.* ;public class SimplePlayer extends MIDlet { protected void destroyApp ( boolean b ) throws MIDletStateChangeException { // implementation }protected void pauseApp () { // التنفيذ }protected void startApp ( ) throws MIDletStateChangeException { try { String url = "https://file.arabipedia.wiki/wikipedia/commons/a/a0/Bass_sample.mid" ; Player player = Manager.createPlayer ( url ) ; player.start ( ) ; } catch ( Exception e ) { e.printStackTrace ( ) ; } } }

انظر أيضاً

فهرس

  • جويال، فيكرام (1 مايو 2006). Pro Java ME MMAPI: واجهة برمجة تطبيقات الوسائط المتنقلة لجافا، الإصدار المصغر (  الطبعة الأولى). Apress . ص  250. ISBN 1-59059-639-0أُرشف من المصدر الأصلي في 8 يناير 2010. تم الاطلاع عليه في 21 يناير 2010 .