در پنجرهبندی پیشرفته، صحنه خانه به جای یک فعالیت خاص خانه، از چندین پنل برنامه تعاملی، قابل مشاهده همزمان و یکپارچه تشکیل شده است. پنجرهبندی پیشرفته از یک نسخه خالی از یک فعالیت خانه به عنوان مانعی برای دید وظایف چند پنجرهای استفاده میکند.
اگرچه Setup Wizard (SUW) اغلب به عنوان یک وظیفه خانگی در نظر گرفته میشود، توصیه میکنیم SUW را به عنوان بخشی از یک پنل پیکربندی کنید تا تجربیات خانگی سازگارتر و قابل اعتمادتری ایجاد کنید.
مانع دید خانه را پیکربندی کنید
تأیید کنید که فعالیت مانع دید در خانه، یک فعالیت خانگی آگاه از بوت مستقیم است که برای فیلتر قصد خانه، اولویت بالاتری نسبت به فعالیت SUW دارد.
برای کسب اطلاعات بیشتر، به پلتفرم مرجع در بسته StubCarLauncher مراجعه کنید. توصیه میکنیم این بسته را در ساختهای خود بگنجانید و آن را برای همه کاربران نصب کنید.
پنل SUW را پیکربندی کنید
توصیه میکنیم SUW را در یک پنل اختصاصی قرار دهید تا شرایط منحصر به فرد را مدیریت کند و امکان قرارگیری اختصاصی خارج از وظیفه ریشه پیشفرض را فراهم کند. میتوانید مرزها و لایهبندی این پنل را پیکربندی کنید.
So that SUW is not obstructed from view, we recommend you place the SUW in a relatively high layer. This panel must show and hide the system events of _System_EnterSuwEvent and _System_ExitSuwEvent , respectively. Consider this sample configuration:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
برای هماهنگی با برنامه معمول SUW، اگر پنل SUW هنگام انجام تنظیمات نامرئی شود، کنترلکننده یک سیگنال خانه صریح به فعالیت SUW ارسال میکند تا اعلام کند که SUW پنهان شده است.
این به مواردی میپردازد که SUW میدانست کاربر با مصرف هدف خانه، اما بدون دسترسی به سیگنال خانه از سیستم، در تلاش برای پنهان کردن SUW است.
اگر انتظارات متفاوتی از طراحی SUW خود دارید، میتوانید با جایگزینی SetupPanelController با یک کنترلر سفارشی، رفتار مورد نظر را پیادهسازی کنید.