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

Android 6.0 (M) ميزات جديدة للمستخدمين ومطوّري التطبيقات. يقدم هذا المستند مقدمة إلى أبرز واجهات برمجة التطبيقات.

ابدأ التطوير

لبدء إنشاء تطبيقات لنظام Android 6.0، يجب عليك أولاً الحصول حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بعد ذلك، استخدِم SDK Manager. لتنزيل النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android 6.0 وصور النظام.

تعديل مستوى واجهة برمجة التطبيقات المستهدَف

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

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

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

مصادقة بصمة الإصبع

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

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

لاستخدام هذه الميزة في تطبيقك، يجب أولاً إضافة السمة إذن USE_FINGERPRINT في ملف البيان.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
جهاز جوّال يعرض وظيفة المصادقة ببصمة الإصبع

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

إذا كنت تختبر هذه الميزة، يُرجى اتّباع الخطوات التالية:

  1. ثبِّت الإصدار 24.3 من أدوات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، إذا لم يسبق لك إجراء ذلك.
  2. يمكنك تسجيل بصمة إصبع جديدة في المحاكي من خلال الانتقال إلى الإعدادات > الأمان > بصمة الإصبع، ثم اتّبِع تعليمات التسجيل.
  3. استخدِم محاكيًا لمحاكاة أحداث لمس بصمة الإصبع باستخدام الأمر التالي. استخدِم الأمر نفسه لمحاكاة أحداث اللمس ببصمة الإصبع على شاشة القفل أو في تطبيقك.
    adb -e emu finger touch <finger_id>
    

    على نظام التشغيل Windows، قد تضطر إلى تشغيل telnet 127.0.0.1 <emulator-id> ثم تليها finger touch <finger_id>

تأكيد بيانات الاعتماد

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

لضبط مدة المهلة التي يمكن خلالها إعادة استخدام المفتاح نفسه بعد إتمام المستخدم بنجاح تمت المصادقة عليه، اتصل بالجديد setUserAuthenticationValidityDurationSeconds() عند إعداد KeyGenerator أو KeyPairGenerator

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

ربط التطبيقات

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

التحميل التلقائي للتطبيقات

ينفِّذ النظام الآن نسخًا احتياطية كاملة من بيانات التطبيقات واستعادتها تلقائيًا. يجب أن يستهدف تطبيقك توفُّر إصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) لتفعيل هذا السلوك ولن تحتاج إلى إضافة أي رمز إضافي. إذا حذف المستخدمون حساباتهم على Google، يتم أيضًا حذف بيانات النسخة الاحتياطية. ولمعرفة كيفية تأثير ذلك وكيفية تكوين ما تريد الاحتفاظ بنسخة احتياطية منه على نظام الملفات، راجع تهيئة التحميل التلقائي للتطبيقات.

المشاركة المباشرة

الجزء السفلي من جهاز جوّال يعرض وظيفة &quot;المشاركة المباشرة&quot;

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

لتفعيل أهداف المشاركة المباشرة، يجب تحديد فئة تُوسّع نطاق صف واحد (ChooserTargetService). يُرجى الإفصاح عن أو خدمة في البيان. ضمن هذا التعريف، حدد إذن BIND_CHOOSER_TARGET_SERVICE و فلتر الأهداف باستخدام الإجراء SERVICE_INTERFACE.

يوضح المثال التالي كيفية الإعلان عن ChooserTargetService في ملف البيان.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

لكل نشاط تريد أن تعرضه ChooserTargetService، إضافة عنصر <meta-data> يحمل الاسم "android.service.chooser.chooser_target_service" في بيان التطبيق.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

التفاعلات الصوتية

يوفّر هذا الإصدار واجهة برمجة تطبيقات جديدة للتفاعل الصوتي مع الإجراءات الصوتية إمكانية إضافة تجارب صوتية حوارية في تطبيقاتك. عليك استدعاء طريقة isVoiceInteraction() لتحديد ما إذا تم تشغيل إجراء صوتي نشاطك. إذا كان الأمر كذلك، يمكن لتطبيقك استخدام يمكنك اختيار فئة واحدة (VoiceInteractor) لطلب تأكيد صوتي من المستخدم. من قائمة الخيارات، وغيرها.

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

لمعرفة المزيد من المعلومات حول تنفيذ الإجراءات الصوتية، يمكنك الاطلاع على الموقع الإلكتروني لمطوّري الإجراءات الصوتية:

واجهة برمجة تطبيقات المساعدة

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

يمكن للتطبيق اختيار عدم مشاركة السياق الحالي مع "مساعد Google" من خلال ضبط علم واحد (FLAG_SECURE) بالإضافة إلى مجموعة قياسية من المعلومات التي تمررها المنصة إلى المساعد، يمكن للتطبيق مشاركة ومعلومات إضافية باستخدام فئة AssistContent الجديدة.

لتزويد المساعد بسياق إضافي من تطبيقك، اتبع الخطوات التالية:

  1. نفِّذ واجهة Application.OnProvideAssistDataListener.
  2. تسجيل هذا المستمع باستخدام registerOnProvideAssistDataListener()
  3. لتقديم معلومات سياقية خاصة بالنشاط، يمكنك إلغاء onProvideAssistData() رد الاتصال، واختياريًا، طريقة onProvideAssistContent() معاودة الاتصال.

أجهزة تخزين قابلة للاستخدام

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

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

لتصحيح أخطاء هذه الميزة، يمكنك تفعيل استخدام محرّك أقراص USB تم توصيلها بجهاز Android من خلال كابل USB أثناء التنقل (OTG)، من خلال تنفيذ الأمر التالي:

$ adb shell sm set-force-adoptable true

الإشعارات

يضيف هذا الإصدار التغييرات التالية في واجهة برمجة التطبيقات للإشعارات:

  • مستوى فلتر جديد على INTERRUPTION_FILTER_ALARMS يتوافق مع وضع "عدم الإزعاج" الجديد المنبهات فقط.
  • قيمة الفئة الجديدة CATEGORY_REMINDER المستخدَمة تمييز التذكيرات المُجدوَلة من المستخدم عن الأحداث الأخرى (CATEGORY_EVENT) والمنبّهات (CATEGORY_ALARM).
  • صف جديد على Icon يمكنك إرفاقه بالإشعارات. من خلال setSmallIcon() وsetLargeIcon() الطرق. وبالمثل، فإن تقبل الطريقة addAction() الآن كائن Icon بدلاً من معرّف المورد القابل للرسم.
  • طريقة getActiveNotifications() جديدة تتيح لك التطبيقات لمعرفة الإشعارات النشطة حاليًا.

دعم قلم الشاشة الذي يتضمّن بلوتوث

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

استخدام طرق وثوابت MotionEvent لرصد زر قلم الشاشة التفاعلات:

  • إذا لمس المستخدم قلم الشاشة بزر على شاشة التطبيق، عمليات إرجاع طريقة getTooltype() TOOL_TYPE_STYLUS
  • بالنسبة إلى التطبيقات التي تستهدف الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)، يجب استخدام واجهة برمجة التطبيقات: getButtonState() تُرجع الطريقة BUTTON_STYLUS_PRIMARY عندما ينقر المستخدم على زر قلم الشاشة الرئيسي. إذا كان قلم الشاشة يحتوي على زر ثانٍ، فإن الطريقة نفسها يتم إرجاعها BUTTON_STYLUS_SECONDARY عندما يضغط المستخدم عليه. إذا ضغط المستخدم كلا الزرين في وقت واحد، تُرجع الطريقة كلتا القيمتين أو يتم جمعهما معًا (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • بالنسبة إلى التطبيقات التي تستهدف إصدارًا أقل للنظام الأساسي، يجب استخدام عمليات إرجاع طريقة getButtonState() BUTTON_SECONDARY (للضغط على زر قلم الشاشة الرئيسي)، BUTTON_TERTIARY (لضغط زر قلم الشاشة الثانوي) أو كليهما.

فحص محسّن باستخدام البلوتوث منخفض الطاقة

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

دعم الإصدار 1 من نقطة الاتصال 2.0

يضيف هذا الإصدار توافقًا مع مواصفات الإصدار 1 من نقطة الاتصال 2.0 على أجهزة Nexus 6 وNexus 9. إلى لتوفير بيانات اعتماد نقطة الاتصال 2.0 في تطبيقك، فاستخدم الطرق الجديدة صف واحد (WifiEnterpriseConfig)، مثل setPlmn() و setRealm() في جلسة المعمل، WifiConfiguration، يمكنك ضبط FQDN و حقلان (providerFriendlyName) تشير طريقة isPasspointNetwork() الجديدة إلى ما إذا تم رصد نقطة وصول إلى نقطة اتصال 2.0.

وضع عرض بدقة 4K

تسمح المنصة الآن للتطبيقات بطلب ترقية درجة دقة العرض إلى عرض بدقة 4K. على الأجهزة المتوافقة. للاستعلام عن درجة الدقة المادية الحالية، استخدم واجهات برمجة تطبيقات Display.Mode. إذا تم رسم واجهة المستخدم بدرجة دقة منطقية أقل بدرجة دقة مادية أكبر، فاعلم أن الدقة المادية قد تختلف عمليات إرجاع الطريقة getPhysicalWidth() عن الطريقة المنطقية درجة الدقة التي تم الإبلاغ عنها من قِبل getSize().

يمكنك أن تطلب من النظام تغيير درجة الدقة الفعلية في تطبيقك أثناء تشغيله، وذلك عن طريق ضبط السمة preferredDisplayModeId في تطبيقك نافذة. وهذه الميزة مفيدة عند الرغبة في التبديل إلى دقة عرض 4K. أثناء استخدام شاشة بدقة 4K يستمر عرض واجهة المستخدم بالدقة الأصلية (مثل 1080p) ويتم تكبير حجمها إلى بدقة 4K، ولكن قد تعرض كائنات SurfaceView المحتوى بدرجة الدقة الأصلية.

قوائم ColorState التي يمكن استخدامها

أصبحت سمات المظاهر متاحة الآن في ColorStateList للأجهزة التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات). تشير رسالة الأشكال البيانية Resources.getColorStateList() و تم استخدام Resources.getColor() طريقة نهائيًا. في حال طلب واجهات برمجة التطبيقات هذه، عليك طلب واجهة برمجة التطبيقات الجديدة Context.getColorStateList() أو Context.getColor() طريقة بدلاً من ذلك. هذه الطرق متوفّرة أيضًا في مكتبة التطبيقات بالإصدار 4 من خلال ContextCompat.

ميزات الصوت

يضيف هذا الإصدار تحسينات إلى معالجة الصوت على Android، تشمل:

  • دعم MIDI مع واجهات برمجة تطبيقات android.media.midi الجديدة. استخدام واجهات برمجة التطبيقات هذه لإرسال MIDI واستلامها أحداث.
  • AudioRecord.Builder وAudioTrack.Builder جديدان لإنشاء تسجيل الصوت الرقمي وكائنات التشغيل على التوالي، وإعداد الصوت خصائص المصدر والمصارف لتجاوز الإعدادات الافتراضية للنظام.
  • هوامش واجهة برمجة التطبيقات (API) لربط أجهزة الصوت والإدخال. ويكون ذلك مفيدًا بشكل خاص إذا كان تطبيقك يسمح هذا الإعداد للمستخدمين ببدء بحث صوتي من وحدة تحكّم في الألعاب أو جهاز تحكّم عن بُعد متصل بجهاز Android. تلفزيون يستدعي النظام واجهة onSearchRequested() معاودة الاتصال عندما يبدأ المستخدم عملية بحث. لتحديد ما إذا كان جهاز إدخال المستخدم مزودًا بأداة الميكروفون، لاسترداد كائن InputDevice من معاودة الاتصال تلك، ثم استدعاء الجديدة hasMicrophone().
  • طريقة getDevices() جديدة تتيح لك قائمة بجميع الأجهزة الصوتية المتصلة حاليًا بالنظام. يمكنك أيضًا تسجيل عنصر واحد (AudioDeviceCallback) إذا كنت تريد أن يرسل النظام إشعارًا إلى تطبيقك. عند اتصال جهاز سماعي أو انقطاع اتصاله.

ميزات الفيديو

يضيف هذا الإصدار إمكانات جديدة إلى واجهات برمجة تطبيقات معالجة الفيديو، بما في ذلك:

  • فئة MediaSync جديدة تساعد التطبيقات على عرض المحتوى بشكل متزامن المحتوى الصوتي ومرئيات الفيديو. يتم إرسال المخازن الصوتية المؤقتة بطريقة لا تؤدي إلى حظر الإعلانات عن طريق معاودة الاتصال. ويتيح أيضًا معدل التشغيل الديناميكي.
  • حدث EVENT_SESSION_RECLAIMED جديد، والذي يشير إلى أنّ تم استرداد الجلسة التي فتحها التطبيق من خلال مدير المورد. إذا كان تطبيقك يستخدم جلسات DRM يجب التعامل مع هذا الحدث والتأكد من عدم استخدام جلسة تم استردادها.
  • رمز خطأ ERROR_RECLAIMED جديد، والذي يشير إلى أن مدير المورد قد استرد مورد الوسائط الذي يستخدمه برنامج الترميز. من خلال هذا الاستثناء، يجب إصدار برنامج الترميز لأنّه تم نقله إلى حالة الوحدة الطرفية.
  • واجهة getMaxSupportedInstances() جديدة لعرض تلميح حول الحد الأقصى لعدد الرموز حالات برنامج الترميز المتزامنة.
  • طريقة setPlaybackParams() جديدة لضبط معدّل تشغيل الوسائط بسرعة أو التشغيل بالتصوير البطيء. كما أن ذلك يساعد على تمديد أو تسريع تشغيل الصوت تلقائيًا في مع الفيديو.

ميزات الكاميرا

يتضمن هذا الإصدار واجهات برمجة التطبيقات الجديدة التالية للدخول إلى ضوء الفلاش للكاميرا الكاميرا لإعادة معالجة الصور:

واجهة برمجة تطبيقات ضوء الفلاش

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

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

واجهة برمجة التطبيقات لإعادة المعالجة

تم توسيع Camera2 API لتتوافق مع YUV والخاصة إعادة معالجة الصور ذات التنسيق المعتم. لتحديد ما إذا كانت إمكانات إعادة المعالجة هذه متاحة أم لا، الاتصال بخدمة getCameraCharacteristics() والبحث عن المفتاح REPROCESS_MAX_CAPTURE_STALL. إذا الجهاز يتيح إعادة المعالجة، فيمكنك إنشاء جلسة تصوير كاميرا قابلة لإعادة المعالجة من خلال createReprocessableCaptureSession()، وإنشاء طلبات لإعادة معالجة المورد الاحتياطي للمدخلات

استخدام الفئة ImageWriter لتوصيل تدفّق المخزن المؤقت للإدخال بالكاميرا جارٍ إعادة معالجة الإدخال. للحصول على مخزن مؤقت فارغ، اتبع نموذج البرمجة هذا:

  1. وعليك استدعاء الطريقة dequeueInputImage().
  2. املأ البيانات في المخزن المؤقت للإدخال.
  3. أرسل المخزن المؤقت إلى الكاميرا من خلال استدعاء طريقة queueInputImage().

في حال استخدام كائن ImageWriter مع صورة PRIVATE، يتعذّر على التطبيق الوصول إلى الصورة البيانات مباشرةً. بدلاً من ذلك، يمكنك تمرير صورة PRIVATE مباشرةً إلى ImageWriter عن طريق استدعاء طريقة واحدة (queueInputImage()) بدون أي نسخة احتياطية.

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

ميزات Android for Work

يتضمن هذا الإصدار واجهات برمجة التطبيقات الجديدة التالية في Android for Work:

  • عناصر التحكّم المحسَّنة للأجهزة المملوكة للشركة ذات الاستخدام الفردي: مالك الجهاز التحكم في الإعدادات التالية لتحسين إدارة الأجهزة المملوكة للشركة ذات الاستخدام الفردي (COSU):
    • يمكنك إيقاف قفل المفاتيح أو إعادة تفعيله باستخدام طريقة setKeyguardDisabled().
    • عطِّل شريط الحالة أو أعِد تمكينه (بما في ذلك الإعدادات السريعة والإشعارات إيماءة التمرير السريع لأعلى في التنقل والتي تعمل على تشغيل Google Now) باستخدام setStatusBarDisabled() .
    • إيقاف التشغيل الآمن أو إعادة تفعيله باستخدام الثابت UserManager DISALLOW_SAFE_BOOT
    • منع إطفاء الشاشة أثناء توصيل الجهاز بمصدر طاقة ثابت STAY_ON_WHILE_PLUGGED_IN.
  • تثبيت التطبيقات وإلغاء تثبيتها تلقائيًا بواسطة مالك الجهاز: يمكن لمالك الجهاز الآن تثبيت التطبيقات وإلغاء تثبيتها بدون تنبيه باستخدام PackageInstaller هي واجهات برمجة تطبيقات مستقلة عن Google Play for Work. يمكنك الآن توفير المتطلبات اللازمة للأجهزة من خلال مالك الجهاز يجلب ويثبّت التطبيقات بدون تفاعل المستخدم. هذه الميزة مفيدة لتفعيل العمل بلمسة واحدة. توفير أجهزة Kiosk أو غيرها من الأجهزة بدون تفعيل حساب Google.
  • الوصول إلى شهادة المؤسسة الصامتة: عند استدعاء تطبيق choosePrivateKeyAlias(), قبل أن يُطلب من المستخدم اختيار شهادة، يمكن الآن لمالك الجهاز أو الملف الشخصي الاتصال onChoosePrivateKeyAlias() لتوفير الاسم المستعار للتطبيق الذي يطلب الربط بدون تنبيه. تتيح لك هذه الميزة منح وصول التطبيقات المُدارة إلى الشهادات بدون تفاعل المستخدم
  • القبول التلقائي لتحديثات النظام: من خلال ضبط سياسة تحديث النظام مع setSystemUpdatePolicy(), يمكن لمالك الجهاز الآن قبول النظام تلقائيًا تحديث، في حال استخدام جهاز Kiosk مثلاً، أو تأجيل التحديث ومنع حدوثه التي يستغرقها المستخدم لمدة تصل إلى 30 يومًا. علاوة على ذلك، يمكن للمشرف تعيين فترة زمنية يومية في تحديث يجب إجراؤه، خلال الساعات التي لا يكون فيها جهاز Kiosk قيد الاستخدام، على سبيل المثال. فعندما توفّر تحديث للنظام، يتحقّق النظام ممّا إذا كان تطبيق وحدة التحكّم بسياسة الجهاز قد حدّد نظامًا وتحديث السياسة، ويتصرف وفقًا لذلك.
  • تثبيت شهادة تفويض: يمكن الآن لملف شخصي أو مالك الجهاز منح إمكانية طلب شهادة DevicePolicyManager هذه في تطبيق تابع لجهة خارجية واجهات برمجة تطبيقات الإدارة:
  • جهاز جوّال يعرض ميزة إشعارات حالة العمل ضمن Android for Work
  • تتبُّع استخدام البيانات: يمكن الآن لمالك الجهاز أو الملف الشخصي طلب البحث عن إحصاءات استخدام البيانات المرئية في الإعدادات > استخدام البيانات باستخدام NetworkStatsManager طريقة يتم منح مالكي الملفات التجارية تلقائيًا إذن لطلب البحث عن بيانات على الملف الشخصي الذي يديرونه، بينما يمكن لمالكي الأجهزة الوصول إلى بيانات الاستخدام للمستخدم الأساسي المُدار.
  • إدارة أذونات وقت التشغيل:

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

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