تشغيل مربّع وتحديد أخطاءه وتصحيحها

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

نشر المربّعات

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

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

إنشاء الإعدادات تلقائيًا

إنّ أسهل طريقة لنشر مربّع وتشغيله هي استخدام رمز "تشغيل الخدمة" في الشريط الجانبي. يؤدي ذلك تلقائيًا إلى إنشاء إعداد تشغيل إذا لم يكن متوفّرًا. اطّلِع على إعدادات التشغيل/تصحيح الأخطاء في Wear OS للحصول على مزيد من المعلومات.

لقطة شاشة تتضمّن سهمًا أحمر يشير إلى رمز "▷" في مساحة الهامش
انقر على رمز السهم المتّجه لليسار "▷" في مساحة الهامش
لقطة شاشة تعرض سهمًا أحمر يشير إلى القائمة المنسدلة لإعدادات التشغيل وخيار إعدادات "TestTileService" الذي تم تحديده باللون الأحمر
يتم تلقائيًا إنشاء "إعدادات تشغيل"

إنشاء الإعداد يدويًا

إذا لم تنجح عملية الضبط التلقائي أو كنت تريد التحكّم بشكل أكبر في النتيجة، اطّلِع على التعليمات التالية. لقطات الشاشة مأخوذة من Android Studio Meerkat (2024.3.1).

  1. انقر على رمز "⋮" ("الشرائح الثلاث") من شريط العنوان.

    لقطة شاشة تتضمّن سهمًا أحمر يشير إلى خيار "⋮" ("الشريط المنسدل") من شريط العنوان
  2. انقر على "تعديل…".

    "تعديل…" هو الخيار الأول ضمن قسم "الضبط" في القائمة المنسدلة.
  3. انقر على علامة الإضافة "+" لإضافة عملية ضبط في مربّع الحوار الذي يظهر.

    لقطة شاشة تتضمّن سهمًا أحمر يشير إلى "+"
  4. اختَر "وحدة Wear OS" كنوع الإعداد الجديد.

    لقطة شاشة تتضمّن سهمًا أحمر يشير إلى خيار ضبط "لوحة Wear OS"
  5. أدخِل اسمًا لإعدادك واختَر الوحدة والقسم وفقًا للملاءمة.

    لقطة شاشة تتضمّن ثلاثة أسهم حمراء تشير إلى مناطق في نافذة الحوار
  6. انقر على "حسنًا". ستظهر الإعدادات في شريط العنوان. انقر على الزر "▷" ("تشغيل") وسيتم نشر مربّع الشاشة وتفعيله.

معاينة المربّعات في "استوديو Android"

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

تتطابق أسماء المجموعات في لوحة المعاينة مع اسم المجموعة الوارد في
    تعليق توضيحي للمعاينة.
لوحة معاينة مربّعات المعلومات في "استوديو Android"

إضافة التبعيات

أدرِج التبعيات التالية في ملف build.gradle.kts أوملف build.gradle في تطبيقك:

dependencies {
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.5.0-alpha10")
    debugImplementation("androidx.wear.tiles:tiles-tooling:1.5.0-alpha10")
    implementation("androidx.wear:wear-tooling-preview:1.0.0")
}

ضبط معاينات المربّعات

للاطّلاع على معاينة لشكل مربّع التطبيق على أحجام مختلفة من شاشات Wear OS، أضِف التعليق التوضيحي @Preview وأدخِل المَعلمة device. يُرجى العِلم أنّ annotation @Preview هذا من حزمة مختلفة عن الحزمة التي تستخدمها في المعاينات القابلة للتجميع.

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData(
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

إضافة الموارد وتسجيلها

إذا كانت مربّعة الرموز التعبيرية تستخدم موارد Android، عليك تسجيلها ضمن المَعلمة onTileResourceRequest في TilePreviewData، كما هو موضّح في مقتطف الرمز التالي:

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithResources(context: Context) = TilePreviewData(
    onTileResourceRequest = { request ->
        Resources.Builder()
            .setVersion(myResourcesVersion)
            .addIdToImageMapping(
                    myImageId, getImageById(R.drawable.myDrawableImageId))
            .build()
    },
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

fun getImageById(
    @DrawableRes id: Int,
): ImageResource =
    ImageResource.Builder()
        .setAndroidResourceByResId(
            AndroidImageResourceByResId.Builder()
                .setResourceId(id)
                .build(),
        )
        .build()

عرض قيم معيّنة من مصادر بيانات المنصة

إذا كان مربّع التطبيق يستخدم بيانات المنصة، مثل معدّل ضربات القلب والسعرات الحرارية والمسافة والخطوات، يعرض مربّع التطبيق قيمًا تلقائية لها.

لعرض قيمة معيّنة، اضبط المَعلمة platformDataValues عند إنشاء كائن TilePreviewData، كما هو موضّح في مقتطف الرمز البرمجي التالي:

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithPlatformOverride(context: Context) = TilePreviewData(
    platformDataValues = PlatformDataValues.of(
        PlatformHealthSources.Keys.HEART_RATE_BPM,
        DynamicDataBuilders.DynamicDataValue.fromFloat(160f)
    ),
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

التلاعب بشاشات المعلومات باستخدام adb

يمكن استخدام adb لتثبيت مربّعات البيانات وإزالتها وتفعيلها آليًا أثناء التطوير.

في الأوامر التالية، ComponentName هي سلسلة تتألف من اسم الحزمة وفئة داخل تلك الحزمة، على سبيل المثال com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

تضيف مربّعًا تقدّمه COMPONENT_NAME وتُعرِض الفهرس.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]

مثال على الإخراج:

Broadcast completed: result=1, data="Index=[0]"

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

show-tile

فعِّل المربّع في الفهرس TILE_INDEX.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]

مثال على الإخراج:

Broadcast completed: result=1

remove-tile

تؤدي هذه العملية إلى إزالة جميع مربّعات العرض في لوحة العرض الدوّارة المرتبطة بـ COMPONENT_NAME.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]

مثال على الإخراج:

result=1, data="Tile(s) removed."

القيم المعروضة

  • result=0: لم يستجِب أي مستقبل بث لهذا الأمر، ويعود السبب على الأرجح إلى أنّ إصدار Wear OS قديم جدًا أو أنّ عملية تصحيح الأخطاء غير مفعّلة.
  • result=1: يدلّ ذلك على نجاح العملية.
  • result>1: خطأ.