واجهات برمجة تطبيقات Android 4.2

مستوى واجهة برمجة التطبيقات: 17

Android 4.2 (JELLY_BEAN_MR1) هو تحديث لإصدار Jelly Bean الذي يقدم ميزات جديدة للمستخدمين والتطبيقات المطورين. يقدم هذا المستند مقدمة إلى أهم واجهات برمجة تطبيقات جديدة ومفيدة للمطورين.

وبصفتك مطوِّر تطبيقات، يجب عليك تنزيل صورة النظام لنظام Android 4.2 ونظام SDK الأساسي من مدير SDK في أقرب وقت ممكن. إذا كنت لم يكن لديك جهاز يعمل بنظام التشغيل Android 4.2 حيث يمكنك اختبار تطبيقك عليه، واستخدام نظام Android 4.2 لاختبار تطبيقك على محاكي Android. بعد ذلك صمم تطبيقاتك وفقًا للنظام الأساسي Android 4.2 لتبدأ في استخدام أحدث واجهات برمجة التطبيقات.

لتحسين تطبيقك بشكل أفضل على الأجهزة التي تعمل بنظام التشغيل Android 4.2، يجب ضبط targetSdkVersion على "17"، ثبِّته على نسخة نظام Android 4.2، واختباره، ثم نشر تحديث يتضمّن هذا التغيير

إِنْتَ استخدام واجهات برمجة التطبيقات في الإصدار 4.2 من نظام التشغيل Android مع دعم الإصدارات الأقدم أيضًا من خلال إضافة الشروط إلى الرمز البرمجي الذي يتحقّق من مستوى واجهة برمجة تطبيقات النظام قبل التنفيذ واجهات برمجة التطبيقات غير متوافقة مع minSdkVersion. لمزيد من المعلومات حول الحفاظ على التوافق مع الأنظمة القديمة، اقرأ إنشاء متوافقة مع الإصدارات القديمة واجهات المستخدم:

يتوفّر مزيد من المعلومات حول طريقة عمل مستويات واجهة برمجة التطبيقات في مقالة ما هي واجهة برمجة التطبيقات؟ ما هو المستوى؟

تغييرات مهمة في السلوك

إذا سبق لك نشر تطبيق لنظام Android، يُرجى الانتباه لما يلي: التغييرات التي قد تؤثّر في سلوك تطبيقك:

  • لن يتمّ تصدير موفّري المحتوى بشكل تلقائي. أي أن القيمة الافتراضية بالنسبة إلى السمة android:exported أصبح الآن “false". إذا كان من المهم تعديل التطبيقات الأخرى من الوصول إلى مقدم المحتوى، يجب عليك الآن تعيين android:exported="true".

    لا يسري هذا التغيير إلا في حال ضبط القيمة android:targetSdkVersion أو android:minSdkVersion على 17 أو أعلى. وبخلاف ذلك، ستظل القيمة التلقائية هي “true" حتى عند تشغيله على الإصدار 4.2 من نظام التشغيل Android أو الإصدارات الأحدث.

  • قد تكون نتائج الموقع الجغرافي للمستخدم أقل دقة مقارنةً بالإصدارات السابقة من Android. إذا كان تطبيقك يطلب إذن "ACCESS_COARSE_LOCATION" ولكن لا يطلب إذن ACCESS_FINE_LOCATION.

    تلبية توقعات الخصوصية لدى المستخدمين عندما يطلب تطبيقك إذنًا من أجل الموقع الجغرافي التقريبي (وليس الموقع الجغرافي الدقيق)، لن يوفّر النظام تقديرًا للموقع الجغرافي للمستخدم. أكثر دقة من مبنى سكني في المدينة.

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

    حتى إذا كانت قيمة android:targetSdkVersion وandroid:minSdkVersion أقل من 17، لا يمكن لتطبيقك تعديل الإعدادات التي تحتوي على تم نقلها إلى Settings.Global عند تشغيله على الإصدار 4.2 من Android أو الإصدارات الأحدث.

  • إذا كان تطبيقك يستخدم WebView، يضيف Android 4.2 طبقة إضافية من من الأمان، وبالتالي يمكنك ربط JavaScript بأمان رمز Android إذا قمت بتعيين targetSdkVersion إلى 17 أو أعلى، يجب عليك الآن إضافة التعليق التوضيحي @JavascriptInterface إلى أي طريقة ترغب في توفرها لـ JavaScript (يجب أن تكون الطريقة عامة أيضًا). إذا لم يتم تقديم التعليق التوضيحي، لا يمكن الوصول إلى هذه الطريقة من خلال صفحة ويب في WebView عند تشغيله على الإصدار Android 4.2 أو الإصدارات الأحدث. إذا قمت بتعيين targetSdkVersion إلى 16 أو أقل، ليس هناك حاجة للتعليق التوضيحي، ولكن ننصحك بتحديث الإصدار المستهدف وإضافة تعليق توضيحي لمزيد من الأمان.

    قراءة المزيد عن الربط رمز JavaScript إلى رمز Android.

Daydream

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

يمكنك إنشاء حلم لـ Daydream من خلال تنفيذ فئة فرعية من DreamService. واجهات برمجة تطبيقات DreamService صُممت لتكون مشابهة لتلك الخاصة بـ Activity. لتحديد واجهة المستخدم يمكنك ضبط معرِّف لمورد التنسيق أو View إلى setContentView() في أي وقت بعد حصولك على نافذة، مثل من onAttachedToWindow() معاودة الاتصال.

توفّر الفئة DreamService معاودة الاتصال المهمة الأخرى في مراحل النشاط في أعلى واجهات برمجة تطبيقات Service الأساسية، مثل onDreamingStarted() وonDreamingStopped() وonDetachedFromWindow(). لا يمكنك بدء DreamService من تطبيق — يتم تشغيله تلقائيًا بواسطة النظام.

إذا كان حلمك تفاعليًا، فيمكنك بدء نشاط من الحلم لإرسال المستخدم إلى واجهة المستخدم الكاملة لتطبيقك لمزيد من التفاصيل أو التحكم. يمكنك استخدام finish() لإنهاء الحلم حتى يتمكّن المستخدم من رؤية النشاط الجديد.

لإتاحة أحلام اليقظة للنظام، يجب تعريف جهاز DreamService باستخدام العنصر <service>. في ملف البيان. وعليك بعد ذلك تضمين فلتر أهداف مع الإجراء "android.service.dreams.DreamService". مثلاً:

<service android:name=".MyDream" android:exported="true"
    android:icon="@drawable/dream_icon" android:label="@string/dream_label" >
    <intent-filter>
        <action android:name="android.service.dreams.DreamService" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</service>

هناك بعض الطرق المفيدة الأخرى في "DreamService". أن تكون على دراية بما يلي:

  • يتحكّم setInteractive(boolean) في ما إذا كان يتلقى الحلم أحداث الإدخال أو يخرج على الفور عند إدخال المستخدم. إذا كان الحلم تفاعلية، يمكن للمستخدم استخدام زر الرجوع أو الصفحة الرئيسية للخروج من وضع الحلم أو يمكنك الاتصال finish() لإيقاف الحلم.
  • إذا كنت تريد الحصول على شاشة مجسمة بالكامل، يمكنك الاتصال بـ setFullscreen() لإخفاء شريط الحالة.
  • قبل بدء أحلام اليقظة، يخفت الشاشة لتُبلغ المستخدم عن انتهاء مهلة وضع عدم النشاط. يقترب. يتيح لك الاتصال بالرقم setScreenBright(true) بدلاً من ذلك ضبط الشاشة على مستوى سطوعها المعتاد.

لمزيد من المعلومات، اطّلِع على مستندات "DreamService".

الشاشات الثانوية

يسمح Android الآن لتطبيقك بعرض محتوى فريد على الشاشات الإضافية المتصلة إلى جهاز المستخدم عبر اتصال سلكي أو شبكة Wi-Fi. لإنشاء محتوى فريد لعرضه الثانوي، عليك توسيع نطاق Presentation. وتنفذ إحدى استدعاءات onCreate(). ضمن onCreate()، عليك تحديد واجهة المستخدم الخاصة بالشاشة الثانوية عبر الاتصال بـ setContentView(). كإضافة لفئة Dialog، توفّر الفئة Presentation المنطقة التي يمكن أن يعرض فيها تطبيقك واجهة مستخدم فريدة على الشاشة الثانوية.

للتعرّف على شاشات العرض الثانوية التي يمكنك فيها عرض "Presentation"، يُرجى اتّباع الخطوات التالية: استخدِم DisplayManager أو MediaRouter واجهات برمجة التطبيقات. تسمح لك واجهات برمجة التطبيقات DisplayManager بتعداد شاشات متعددة قد تكون متصلة في آنٍ واحد، عليك عادةً استخدام MediaRouter بدلاً من ذلك للوصول سريعًا إلى شاشة العرض التلقائية للنظام وعروضك التقديمية.

للحصول على الشاشة التلقائية للعرض التقديمي، يُرجى الاتصال بالرقم MediaRouter.getSelectedRoute() وتمريره. ROUTE_TYPE_LIVE_VIDEO يؤدي ذلك إلى عرض عنصر MediaRouter.RouteInfo يصف المسار المحدّد حاليًا للنظام. لعروض الفيديو التقديمية. إذا لم يكن MediaRouter.RouteInfo فارغًا، اتّصل getPresentationDisplay() للحصول على Display الذي يمثّل الشاشة المتصلة.

يمكنك بعد ذلك عرض العرض التقديمي من خلال تمرير كائن Display إلى دالة إنشاء لفئة Presentation. سيبدأ عرضك التقديمي الآن تظهر على الشاشة الثانوية.

لرصد الاتصال بشاشة جديدة في وقت التشغيل، أنشئ مثيلاً لـ MediaRouter.SimpleCallback يتم فيه تنفيذ طريقة معاودة الاتصال onRoutePresentationDisplayChanged() التي سيستدعي النظام من خلالها تم توصيل شاشة العرض التقديمي. ثم سجِّل MediaRouter.SimpleCallback من خلال تمريره إلى MediaRouter.addCallback() مع نوع المسار ROUTE_TYPE_LIVE_VIDEO. عندما تتلقى مكالمة إلى onRoutePresentationDisplayChanged()، ما عليك سوى الاتصال بـ MediaRouter.getSelectedRoute() كما هو مذكور أعلاه.

لتحسين واجهة المستخدم في Presentation بشكل أكبر من أجل الشاشات الثانوية، يمكنك تطبيق مظهر مختلف عن طريق تحديد السمة android:presentationTheme في <style> التي التطبيق على تطبيقك أو نشاطك.

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

لمزيد من المعلومات وبعض نماذج الرموز، يُرجى مراجعة Presentation. وثائق الصف.

التطبيقات المصغّرة لشاشة القفل

يسمح Android الآن للمستخدمين بإضافة أدوات التطبيقات إلى شاشة القفل. لإتاحة أداة التطبيق للاستخدام على شاشة القفل، أضِف السمة android:widgetCategory إلى ملف XML الذي يحدّد AppWidgetProviderInfo. تتيح هذه السمة استخدام قيمتَين: home_screen وkeyguard. يتم ضبط السمة تلقائيًا على home_screen كي يتمكّن المستخدمون من إضافة التطبيق المصغَّر إلى الشاشة الرئيسية. إذا أردت أن تكون أداة تطبيقك متاحة أيضًا في وضع القفل الشاشة، أضف قيمة keyguard:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:widgetCategory="keyguard|home_screen">
</appwidget-provider>

عليك أيضًا تحديد تنسيق أولي لأداة تطبيقك عندما تكون على شاشة القفل مع السمة android:initialKeyguardLayout. وهي تعمل بالطريقة نفسها المتّبعة في android:initialLayout، إذ إنّها توفر تخطيط يمكن أن يظهر فورًا إلى أن يتم إعداد أداة تطبيقك وتتمكّن من تحديث التصميم.

لمزيد من المعلومات حول إنشاء تطبيقات مصغّرة لشاشة القفل، بما في ذلك إنشاء لتغيير حجم أداة تطبيقك عند ظهورها على شاشة القفل، يُرجى الاطّلاع على دليل أدوات التطبيقات.

عدة مستخدمين

يتيح Android الآن إنشاء مساحات متعدّدة للمستخدمين على الأجهزة القابلة للمشاركة، مثل الأجهزة اللوحية. كل مستخدم في جهازه مجموعة من الحسابات والتطبيقات وإعدادات النظام والملفات الخاصة به البيانات المرتبطة بالمستخدم.

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

حفظ البيانات في بيئة متعددة المستخدمين

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

للتأكّد من أنّ تطبيقك يعمل بشكل صحيح في بيئة متعددة المستخدمين، لا تُشِر إلى دليل التطبيق الداخلي أو موقع وحدة التخزين الخارجية باستخدام مسارات غير قابلة للتغيير في البرنامج، وبدلاً من ذلك لواجهات برمجة التطبيقات المناسبة:

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

تحديد هوية المستخدمين في بيئة متعددة المستخدمين

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

يجب الانتباه إلى أنّه إذا طلب تطبيقك أحد معرّفات الأجهزة (مثل عنوان MAC لشبكة Wi-Fi). العنوان أو رقم SERIAL)، فستقدم القيمة نفسها لكل المستخدم لأن هذه المعرّفات مرتبطة بالجهاز وليس بالمستخدم. ناهيك عن الآخر المشكلات التي تقدمها هذه المعرّفات كما هو موضح في مقالة تحديد مشاركة المدونة عن عمليات تثبيت التطبيقات

إعدادات عامة جديدة

تم تعديل إعدادات النظام لإتاحة العديد من المستخدمين مع إضافة Settings.Global. تشبه مجموعة الإعدادات هذه إعدادات Settings.Secure لأنّها للقراءة فقط، ولكن تنطبق بشكل عام على جميع المواقع الإلكترونية. جميع مساحات المستخدمين على الجهاز.

تم نقل العديد من الإعدادات الحالية هنا من Settings.System أو Settings.Secure. إذا كان تطبيقك جارٍ إجراء تغييرات حاليًا على الإعدادات المحدّدة سابقًا في Settings.System (مثل AIRPLANE_MODE_ON)، فيُفترض أن تتوقع ما يلي: إجراء ذلك لن يعمل على جهاز يعمل بالإصدار 4.2 من نظام التشغيل Android أو الإصدارات الأحدث إذا تم ضبط هذه الإعدادات تم نقل مهمة واحدة إلى Settings.Global. يمكنك مواصلة قراءة الإعدادات المضبوطة على Settings.Global، ولكن لأنّ الإعدادات لم تعُد آمنة. لتغيير التطبيقات، سيتعذّر إجراء ذلك تلقائيًا وسينشئ النظام تحذيرًا سجلّ النظام عند تشغيل تطبيقك على Android 4.2 أو الإصدارات الأحدث.

دعم تنسيق من اليمين إلى اليسار

يوفر Android الآن العديد من واجهات برمجة التطبيقات التي تتيح لك إنشاء واجهات مستخدم بطريقة رشيقة تغيير اتجاه التنسيق لإتاحة اللغات التي تستخدم واجهات المستخدم من اليمين إلى اليسار (RTL) وميزة القراءة "، مثل العربية والعبرية.

لبدء استخدام تنسيقات من اليمين إلى اليسار في تطبيقك، يجب ضبط السمة android:supportsRtl على العنصر <application> في ملف البيان. وتعيينه “true". عند تفعيل هذه الميزة، سيفعِّل النظام واجهات برمجة تطبيقات RTL مختلفة لعرض تطبيقك بتنسيقات من اليمين إلى اليسار. على سبيل المثال، سيعرض شريط الإجراءات الرمز والعنوان على الجانب الأيمن وأزرار الإجراءات على اليسار، وأي تخطيطات قمت بإنشائها باستخدام سيتم أيضًا إلغاء صفوف View التي يوفّرها إطار العمل.

إذا كنت بحاجة إلى تحسين مظهر التطبيق عند عرضه بتنسيق من اليمين إلى اليسار، هناك مستويان أساسيان للتحسين:

  1. تحويل خصائص التنسيق لليسار واليمين إلى تنسيق موجّه نحو البداية والنهاية المواقع.

    على سبيل المثال، استخدِم android:layout_marginStart. بدلاً من android:layout_marginLeft وandroid:layout_marginEnd بدلاً من android:layout_marginRight.

    توفّر الفئة RelativeLayout أيضًا التنسيق المناسب. لاستبدال المواضع اليسرى/اليمنى، مثل android:layout_alignParentStart إلى استبدال android:layout_alignParentLeft وandroid:layout_toStartOf بدلاً من android:layout_toLeftOf

  2. أو لتقديم تحسين كامل لتخطيطات من اليمين إلى اليسار، يمكنك توفير نماذج منفصلة تمامًا تنسيق باستخدام مؤهِّل موارد ldrtl (يشير ldrtl إلى segmentation-direction-right-to-left}). على سبيل المثال، يمكنك حفظ ملفات التنسيق الافتراضي في res/layout/ وتنسيقات بتنسيق RTL محسَّنة في res/layout-ldrtl/

    يُعدّ مؤهِّل ldrtl مناسبًا للموارد القابلة للرسم ليكون بإمكانك تقديم الرسومات الموجّهة في الاتجاه المقابل لاتجاه القراءة.

تتوفر العديد من واجهات برمجة التطبيقات الأخرى عبر إطار العمل لدعم تخطيطات من اليمين إلى اليسار، كما هو الحال في الفئة View كي تتمكّن من تنفيذ السلوكيات الصحيحة المخصّصة وفي Configuration للاستعلام عن اتجاه التنسيق الحالي.

ملاحظة: إذا كنت تستخدم SQlite ولديك جداول أو أسماء أعمدة و"الرقم فقط" يكون حذر: يمكن أن يؤدي استخدام String.format(String, Object...) إلى حدوث أخطاء حيث تم تحويلها إلى اللغة العربية المكافئة لها إذا كان جهازك مضبوطًا على اللغة العربية. يجب استخدام String.format(Locale,String,Object...) للتأكد من أنّ الأرقام على أنه ASCII. استخدام String.format("%d", int) أيضًا بدلاً من استخدام String.valueOf(int) مقابل تنسيق الأرقام.

أجزاء متداخلة

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

لدمج جزء، ما عليك سوى استدعاء getChildFragmentManager() على Fragment الذي تريد إضافة جزء فيه. يؤدي هذا الإجراء إلى عرض FragmentManager يمكنك استخدامه كما تفعل عادةً من نشاط المستوى الأعلى. لإنشاء معاملات مجزأة. على سبيل المثال، إليك بعض الرموز التي تضيف كسرًا من داخل فئة Fragment حالية:

Kotlin

val videoFragment = VideoPlayerFragment()
childFragmentManager.beginTransaction().apply {
    add(R.id.video_fragment, videoFragment)
    commit()
}

Java

Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();

من داخل جزء مدمج، يمكنك الحصول على إشارة إلى الجزء الرئيسي من خلال استدعاء getParentFragment()

تتيح Android Support Library الآن أيضًا استخدام الأجزاء المتداخلة، حتى تتمكن من تنفيذ الأجزاء المتداخلة تصميمات مجزأة على نظام التشغيل Android 1.6 والإصدارات الأحدث.

ملاحظة: لا يمكنك تضخيم تنسيق إلى جزء عند ذلك التنسيق. يتضمّن <fragment>. لا يتم دعم الأجزاء المتداخلة إلا عند إضافتها إلى بشكل ديناميكي.

نص Renderscript

تم تحسين وظيفة احتساب Renderscript باستخدام الميزات التالية:

العناصر الأساسية للنصوص البرمجية

يمكنك استخدام العناصر الأساسية المضمّنة في النص البرمجي في Renderscript والتي تنفذ العمليات المشتركة لك مثل:

لاستخدام نص برمجي أساسي، يجب استدعاء طريقة create() الثابتة لكل كلمة أساسية لإنشاء مثيل للنص البرمجي. يمكنك بعد ذلك الاتصال بـ set() المتاح. لكل برنامج نصي أساسي لتعيين أي إدخالات وخيارات ضرورية. وأخيرًا، اختَر "forEach()" لتنفيذ النص البرمجي.

مجموعات النصوص البرمجية

تتيح لك علامات ScriptGroup ربط سلسلة Renderscript ذات الصلة معًا. النصوص البرمجية وتنفيذها باستدعاء واحد.

استخدِم ScriptGroup.Builder لإضافة جميع النصوص البرمجية إلى المجموعة. عبر الاتصال بـ addKernel(). بمجرد وإضافة جميع النصوص البرمجية، وأنشئ الاتصالات بين النصوص البرمجية من خلال الاتصال بـ addConnection(). عند الانتهاء من إضافة عمليات الربط، اتّصِل بالرقم create(). لإنشاء مجموعة النصوص البرمجية. قبل تنفيذ مجموعة النصوص البرمجية، حدِّد المُدخل. Allocation والنص البرمجي الأولي المطلوب تشغيله مع setInput(Script.KernelID, Allocation) وتقديم المخرجات Allocation حيث تتم كتابة النتيجة إلى النص البرمجي النهائي إلى تم تنفيذها باستخدام setOutput(). أخيرًا، اتصل execute() لتشغيل مجموعة النصوص البرمجية.

نص الفلتر

تحدد عوامل التصفية القيود المفروضة على واجهات برمجة تطبيقات Renderscript الحالية التي تسمح بتشغيل التعليمة البرمجية الناتجة باستخدام مجموعة متنوعة من المعالجات (وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU) ومعالجات الأجهزة الرقمية (DSP). لإنشاء ملفات filterscript، عليك إنشاء .fs. ملفات بدلاً من .rs ملف، وتحديد #pragma rs_fp_relaxed إلى إعلام وقت تشغيل Renderscript بأن النصوص البرمجية لا تتطلب دقة النقطة العائمة الصارمة من الإصدار IEEE 754-2008. وتتيح هذه الدقة انحدار صفر إلى الصفر مع الأواني المتنقلة وتقريبها من الصفر. بالإضافة إلى ذلك، قد يؤثر الفلتر يجب ألا تستخدم النصوص البرمجية أنواعًا مضمَّنة 32 بت ويجب أن تحدد دالة جذر مخصصة باستخدام __attribute__((kernel)) لأن filterscript لا تتوافق مع المؤشرات، التي يحدد التوقيع التلقائي للدالة root().

ملاحظة: على الرغم من توفر دعم filterscript في النظام الأساسي، إلا أن المطوّر سيتوفّر الدعم في الإصدار 21.0.1 من أدوات SDK.

للحصول على عرض تفصيلي لجميع تغييرات واجهة برمجة التطبيقات في Android 4.2، يمكن الاطّلاع على تقرير اختلافات واجهة برمجة التطبيقات