ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
รายละเอียดทางเทคนิค
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
แผนภาพต่อไปนี้แสดงคอมโพเนนต์ของระบบที่โต้ตอบกับ Dialer

รูปที่ 1 คอมโพเนนต์ที่โต้ตอบกับ Dialer
-
UI ของระบบ แสดงองค์ประกอบการนําทางที่ต่ำกว่าเพื่อโฮสต์ปุ่มโทรศัพท์ ซึ่งจะบันทึก Intent intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end
ซึ่งจะเริ่มต้นกิจกรรมหลักของผู้ใช้ TelecomActivity
-
ตัวเปิดแอป จัดการรายการแอปทั้งหมด Dialer ประกาศ
TelecomActivity ด้วย android.intent.category.LAUNCHER
การเลือกแอปโทรศัพท์จากรายการแอปของ Launcher จะแสดง TelecomActivity
-
วิดเจ็ตหน้าแรก ในข้อมูลอ้างอิง AOSP ไม่มีวิดเจ็ต Home OEM อาจต้องพิจารณาเพิ่มวิดเจ็ตหน้าแรกสำหรับโปรแกรมโทรออกเพื่อแสดงสถานะของโทรศัพท์ที่เชื่อมต่ออยู่ในปัจจุบัน (รวมถึงข้อมูลอื่นๆ)
-
ศูนย์การแจ้งเตือน
-
การแจ้งเตือน Heads Up (HUN) จะแสดงขึ้นเมื่อมีสายเรียกเข้า เมื่อ Dialer ของ InCallServiceImpl
ได้รับสายเรียกเข้า Dialer จะโพสต์ HUN ไปยังศูนย์การแจ้งเตือน ซึ่งจะแสดงรายละเอียดการโทร เช่น หมายเลขโทรศัพท์หรือข้อมูลติดต่อ นอกจากนี้ Dialer ยังแสดงปุ่มดำเนินการ 2 ปุ่ม ได้แก่ รับสายและปฏิเสธ เมื่อแตะปุ่มรับสาย ระบบจะรับสายและ InCallServiceImpl
จะจัดการสายที่ใช้งานอยู่เพื่อแสดง UI ของสายใน Dialer และปิด HUN การคลิก HUN จะแสดงหน้าการโทรแบบเต็มหน้าจอที่มีปุ่มรับสายและปฏิเสธ
-
การแจ้งเตือนจะปรากฏขึ้นสำหรับสายที่ไม่ได้รับซึ่งยังไม่ได้อ่าน การคลิกการแจ้งเตือนจะแสดงหน้าประวัติการโทรและทําเครื่องหมายสายที่ไม่ได้รับว่าอ่านแล้ว การแตะปุ่มโทรกลับจะเป็นการโทรออกและแสดงอินเทอร์เฟซผู้ใช้ระหว่างการโทรของ Dialer
-
Assistant ผู้ใช้สามารถขอให้ผู้ช่วยโทรออกซึ่งอาจแสดงอินเทอร์เฟซผู้ใช้ของแป้นโทรศัพท์ขณะโทร
-
Google Maps การโทรหาผู้ขายจาก Google Maps จะส่ง Intent ของ DIAL พร้อมหมายเลขโทรศัพท์เพิ่มเติม ซึ่งจะเปิดหน้าแป้นโทรศัพท์สำหรับการโทรด่วน
-
CarInputService. ตรวจสอบปุ่มโทรและวางสายบนพวงมาลัย การกดปุ่มต่อไปนี้
-
ปุ่มโทรจากพวงมาลัยเมื่อไม่มีการโทรเข้าจะส่ง Intent ของ DIAL และแสดงหน้าแป้นโทรศัพท์ของ Dialer
-
ปุ่มโทรจากพวงมาลัยเมื่อมีสายเรียกเข้าจะทำให้ TelecomManager รับสาย
-
ปุ่มวางสายจากพวงมาลัยเมื่อมีสายเรียกเข้า TelecomManager จะวางสาย
-
บลูทูธ
-
PBAPClient ดาวน์โหลดรายชื่อติดต่อจากโทรศัพท์และเขียนไปยังผู้ให้บริการรายชื่อติดต่อ ระบบจะสร้างบัญชีสำหรับโทรศัพท์แต่ละเครื่องที่เชื่อมต่อโดยใช้ที่อยู่ MAC ของบลูทูธเป็นชื่อบัญชี และ com.android.bluetooth.pbapsink
(@string/pbap_account_type
ที่ระบุไว้ใน packages/apps/Bluetooth
) เป็นประเภทบัญชี ระบบจะเขียนข้อมูลติดต่อไปยังผู้ให้บริการข้อมูลติดต่อด้วยข้อมูลบัญชีและล้างข้อมูลเมื่อยกเลิกการเชื่อมต่อโทรศัพท์ PBAPClient
จะไม่โต้ตอบกับ Dialer โดยตรง แต่เขียนรายชื่อติดต่อไปยังผู้ให้บริการรายชื่อติดต่อแทน ตัวต่อสายโทรศัพท์อ่านรายชื่อติดต่อจาก Contacts Provider
-
HfpClientConnectionService
จัดการการโทรผ่านบลูทูธผ่าน HFP และรายงานการโทรไปยังบริการโทรคมนาคม
-
โทรคมนาคม เฟรมเวิร์ก Android Telecom จะจัดการการโทรด้วยเสียงและวิดีโอคอลในอุปกรณ์ Android เนื่องจาก Dialer เป็นแอปโทรศัพท์เริ่มต้น จึงจะใช้ InCallService
API และ InCallController
จะเชื่อมโยงการใช้งาน InCallService ของ Dialer เพื่อจัดการการโทร โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อสร้างแอปโทรศัพท์สำหรับใช้แทนและการเป็นแอปโทรศัพท์เริ่มต้น
-
การตั้งค่าระบบ ตัวต่อสายจะตรวจสอบรายการอุปกรณ์ที่เชื่อมต่อ HFP และแสดงข้อความแสดงข้อผิดพลาดเมื่อไม่มีโทรศัพท์เชื่อมต่อกับตัวต่อสายผ่านบลูทูธ ในข้อมูลอ้างอิงของ AOSP ปุ่มเชื่อมต่อกับบลูทูธจะลิงก์ผู้ใช้ไปยังหน้าการตั้งค่าบลูทูธของระบบเพื่อจับคู่อุปกรณ์ใหม่หรือเชื่อมต่อกับอุปกรณ์ที่จับคู่ไว้
-
เครื่องมือตรวจจับการเสียสมาธิของผู้ขับขี่ บริการระบบ Android นี้จะจำกัด UX ตามสถานะการขับขี่ของรถ Dialer ต้องดำเนินการตามข้อจำกัดทั้งหมดที่รบกวน UX ขณะขับรถ โดยต้องฟัง CarUXRestrictionManager และนำนโยบายทั้งหมดไปใช้ Dialer ต้องมีลักษณะดังนี้
-
เชื่อมต่อกับไลบรารี Car และรับอินสแตนซ์ของ CarUXRestrictionManager
-
สมัครรับข้อมูลอัปเดตในรายการ CarUxRestrictions และนำไปใช้งานตามที่ระบุไว้ในเอกสาร
-
สิ่งสำคัญอย่างยิ่งสำหรับ Dialer
-
หน้าการตั้งค่าได้รับการเพิ่มประสิทธิภาพสำหรับยานพาหนะ ผู้ใช้เข้าถึงหน้าการตั้งค่าแป้นโทรไม่ได้ขณะขับรถ เมื่อแตะเมนูการตั้งค่าจากแถบการดำเนินการ ระบบจะแสดงหน้าจอบล็อกเพื่อป้องกันไม่ให้ผู้ใช้เข้าถึงการตั้งค่าขณะขับรถ หากหน้าการตั้งค่าแสดงอยู่แล้ว หน้าจอการบล็อกจะปรากฏขึ้นเพื่อหยุดการโต้ตอบของผู้ใช้
-
เข้าถึงการตั้งค่าระบบขณะขับรถไม่ได้ ในหน้าข้อผิดพลาด เมื่อไม่มีอุปกรณ์บลูทูธเชื่อมต่ออยู่ ปุ่มเชื่อมต่อกับบลูทูธจะแสดงหน้าการตั้งค่าบลูทูธของระบบ UXR ของปุ่มนี้ถูกจํากัดโดยสมบูรณ์
ขณะขับรถ การคลิกปุ่มนี้จะแสดงข้อความแสดงข้อผิดพลาดเพื่อแจ้งให้ผู้ใช้จอดรถก่อนแล้วค่อยดำเนินการ
-
ผู้ใช้ไม่สามารถเริ่มขั้นตอนการเพิ่มรายการโปรดขณะขับรถ ปุ่มเพิ่มรายการโปรดปิดอยู่
โฟลว์ผู้ใช้
Dialer Main
หน้าต่างๆ ของโปรแกรมโทรมีดังนี้

รูปที่ 2 หน้าหลักของ Dialer
การจัดการสายเรียกเข้า
ขั้นตอนกระบวนการส่งต่อสายมีดังนี้

รูปที่ 3 การจัดการสายเรียกเข้า
การแจ้งเตือน
หน้าการแจ้งเตือนต่างๆ จะแสดงอยู่ด้านล่าง

รูปที่ 4 การแจ้งเตือน
สถานะระหว่างการโทร
ขั้นตอนในหน้าระหว่างการโทรแสดงอยู่ด้านล่าง

รูปที่ 5 หน้าระหว่างการโทร
ค้นหา
การแสดงผลของ Search มีดังนี้

รูปที่ 6 ค้นหา
การตั้งค่า
ตัวเลือกการตั้งค่ามีดังนี้

รูปที่ 7 การตั้งค่า
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Technical details\n\nThe following diagram illustrates the system components that interact with Dialer:\n\n**Figure 1.** Components that interact with Dialer\n\n- **System UI.** Lower navigation facet to host the Phone button, which\n registers the `intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end` intent.\n This starts the user's main activity, `TelecomActivity`.\n\n- **App Launcher.** Manages the entire app list. Dialer declares\n TelecomActivity with `android.intent.category.LAUNCHER`. Selecting the phone app from\n the launcher's app list displays TelecomActivity.\n\n- **Home widget.** In AOSP reference, there is no Home widget. OEMs might want to\n consider adding a Home widget for Dialer to display the state of the current connected phone (as\n well as other information).\n\n- **Notification Center**\n\n - **Heads Up Notification (HUN) is displayed for incoming calls.** When the Dialer\n `InCallServiceImpl` receives an incoming call, Dialer posts a HUN to the\n Notification center, which shows the call details, such as phone number or contact info.\n Dialer also displays two action buttons, Answer and Decline. By tapping Answer button,\n the call is answered and `InCallServiceImpl` handles the active call to show\n Dialer's in call UI and dismisses the HUN. Clicking on the HUN displays the fullscreen\n InCall page with the Answer and Reject buttons.\n\n - **Notification appears for unread missed calls.** Clicking on the\n notification displays the Call History page and marks missed calls as read. Tapping the\n Call Back button places a call and displays the Dialer's InCall user interface.\n\n- **Assistant.** Users can ask an assistant to make a call that may display the\n Dialer InCall user interface.\n\n- **Google Maps.**Calling a merchant from Google Maps sends the DIAL\n intent with extras of phone numbers which will start Dialpad page for quick dialing.\n\n- **CarInputService.**Monitors the physical key of the Call and End Call\n buttons on the steering wheel. Pressing the:\n\n - Call button from the steering wheel when there is no incoming call sends the DIAL\n intent and displays the Dialpad page of Dialer.\n\n - Call button from the steering wheel when there is an incoming call causes the\n TelecomManager to answer the call.\n\n - End Call button from the steering wheel when there is an incoming call, the\n TelecomManager ends the call.\n\n- **Bluetooth**\n\n - **PBAPClient.** Downloads contacts from a phone and writes to the\n contacts provider. For each phone connected, an account is created with the device's\n Bluetooth MAC address as the account name and `com.android.bluetooth.pbapsink`\n (`@string/pbap_account_type` defined in `packages/apps/Bluetooth`) as\n the account type. Contacts written to the contacts provider are written with the account\n information and are cleared when the phone is disconnected. `PBAPClient` doesn't\n interact directly with Dialer but instead writes contacts to the Contacts Provider. Dialer\n reads the contacts from the Contacts Provider.\n\n - **`HfpClientConnectionService`.** Manages the Bluetooth call\n through HFP and reports the call to the Telecom services.\n\n- **Telecom.** The Android Telecom framework manages audio and video calls on an\n Android device. Since Dialer is the default phone app, it implements the\n [InCallService](https://developer.android.com/reference/android/telecom/InCallService.html)\n APIs and `InCallController` will bind the Dialer's InCallService implementation to\n handle calls. For more details, see\n [Create\n a replacement phone app](https://developer.android.com/guide/topics/connectivity/telecom#replacePhoneApp) and\n [Becoming\n the Default Phone App](https://developer.android.com/reference/android/telecom/InCallService.html#becoming-the-default-phone-app).\n\n- **System Settings.** Dialer monitors the HFP-connected device list and displays\n an error message when no phones are connected to dialer through Bluetooth. In the AOSP\n reference, the Connect to Bluetooth button links users to the system Bluetooth Settings\n page to pair a new device or to connect to a paired device.\n\n- **Driver Distraction Engine.** This Android system service imposes UX\n restrictions based on the driving state of the car. Dialer must execute all UX driving\n distraction restrictions.To do so, Dialer must listen to the\n [CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager)\n and implement all policies. Dialer must:\n\n - Connect to the [Car](https://developer.android.com/reference/android/car/Car)\n library and obtain an instance of\n [CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager).\n\n - Subscribe to updates in the list of\n [CarUxRestrictions](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictions)\n and implement them as documented.\n\n - Of particular importance to Dialer:\n\n - **Settings page is vehicle-optimized.** User could not access the\n Dialer Settings page when driving. By tapping on the Settings menu from the action bar,\n a blocking screen is displayed to prevent the user from accessing Settings while\n driving. If the Settings page is already displayed, the blocking screen will pop up to\n stop the user interaction.\n\n - **System settings cannot be accessed while driving.** On the Error page,\n when no Bluetooth devices are connected, a Connect to Bluetooth button displays the\n system Bluetooth settings page. The UXR of this button is fully restricted.\n While driving, clicking on this button displays an error message to inform the\n user to park the car first and then perform the action.\n\n - **User cannot start the add-to-favorite flow while driving.** The Add a\n Favorite button is disabled.\n\nUser flows\n----------\n\n### Dialer Main\n\nThe different pages for Dialer are provided below.\n\n**Figure 2.** Main Dialer page\n\n### Call handling\n\nThe call handing process flow is presented below:\n\n**Figure 3.** Call handling\n\n### Notifications\n\nThe different notifications pages are displayed below:\n\n**Figure 4.** Notifications\n\n### InCall status\n\nThe InCall page flow is shown below:\n\n**Figure 5.** InCall page\n\n### Search\n\nThe Search displays are:\n\n**Figure 6.** Search\n\n### Settings\n\nThe Settings options are:\n\n**Figure 7.** Settings"]]