ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
การปรับเสียง
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
การอุ่นเครื่องเสียงคือเวลาที่ใช้ในการจ่ายไฟให้วงจรขยายเสียงในอุปกรณ์จนเต็มและเข้าสู่สถานะการทำงานปกติ ปัจจัยหลักที่ส่งผลต่อเวลาอุ่นเครื่องของเสียงคือการจัดการพลังงานและตรรกะ "ลดเสียงป๊อป" เพื่อทำให้วงจรเสถียร
เอกสารนี้จะอธิบายวิธีวัดเวลาอุ่นเครื่องของเสียงและวิธีต่างๆ ที่เป็นไปได้ในการลดเวลาอุ่นเครื่อง
วัดการอุ่นเครื่องเอาต์พุต
เทรด FastMixer ของ AudioFlinger จะวัดการอุ่นเครื่องเอาต์พุตโดยอัตโนมัติ และรายงานเป็นส่วนหนึ่งเอาต์พุตของคำสั่ง dumpsys media.audio_flinger
ในการอุ่นเครื่อง FastMixer จะเรียก write()
ซ้ำๆ จนกว่าเวลาระหว่าง write()
2 รายการจะเท่ากับจำนวนที่คาดไว้
FastMixer จะกำหนดเวลาอุ่นเครื่องเสียงโดยดูว่าเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) write()
ใช้เวลานานเท่าใดในการทำให้เสถียร
หากต้องการวัดเวลาในการอุ่นเครื่องของเสียง ให้ทำตามขั้นตอนต่อไปนี้สำหรับลำโพงในตัวและหูฟังแบบใช้สาย และวัดในเวลาต่างๆ หลังจากการบูต โดยปกติแล้วเวลาอุ่นเครื่องจะแตกต่างกันไปสำหรับอุปกรณ์เอาต์พุตแต่ละเครื่อง และหลังจากบูตอุปกรณ์
- ตรวจสอบว่าได้เปิดใช้ FastMixer แล้ว
- เปิดใช้เสียงสัมผัสโดยเลือกการตั้งค่า > เสียง > เสียงสัมผัสในอุปกรณ์
- ตรวจสอบว่าเสียงปิดอยู่อย่างน้อย 3 วินาที 5 วินาทีขึ้นไปจะดีกว่า เนื่องจากฮาร์ดแวร์เองอาจมีตรรกะการจ่ายไฟของตัวเองนอกเหนือจาก 3 วินาทีที่ AudioFlinger มี
- กดปุ่มหน้าแรก แล้วคุณควรได้ยินเสียงคลิก
- เรียกใช้คำสั่งต่อไปนี้เพื่อรับการอุ่นเครื่องที่วัดได้
adb shell dumpsys media.audio_flinger | grep measuredWarmup
คุณควรเห็นเอาต์พุตดังต่อไปนี้
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
คือจำนวนมิลลิวินาที X ที่ใช้สำหรับ HAL write()
ชุดแรกให้เสร็จสมบูรณ์
warmupCycles=X
คือจํานวนคําขอเขียน HAL ที่ใช้ไปจนกว่าเวลาดำเนินการของ write()
จะตรงกับที่คาดไว้
-
วัดค่า 5 ครั้งและบันทึกค่าทั้งหมด รวมถึงค่าเฉลี่ย
หากค่าเหล่านี้ไม่เท่ากันโดยประมาณ แสดงว่าการวัดผลอาจไม่ถูกต้อง
ตัวอย่างเช่น หากคุณรอไม่นานพอหลังจากที่ปิดเสียง คุณจะเห็นเวลาอุ่นเครื่องต่ำกว่าค่าเฉลี่ย
ขณะนี้ยังไม่มีเครื่องมือสำหรับวัดการอุ่นเครื่องอินพุตเสียง
อย่างไรก็ตาม คุณสามารถประมาณเวลาอุ่นเครื่องของอินพุตได้โดยสังเกตเวลาที่จำเป็นสำหรับ startRecording() ให้แสดงผล
ลดเวลาในการอุ่นเครื่อง
โดยทั่วไปแล้ว คุณสามารถลดเวลาในการอุ่นเครื่องได้โดยใช้วิธีต่อไปนี้ร่วมกัน
- การออกแบบวงจรที่ดี
- หน่วงเวลาอย่างถูกต้องในไดรเวอร์อุปกรณ์เคอร์เนล
- การดำเนินการอุ่นเครื่องแบบอิสระพร้อมกันแทนที่จะทําตามลำดับ
- การไม่ปิดวงจรหรือไม่ได้กำหนดค่านาฬิกาใหม่ (เพิ่มการใช้พลังงานขณะที่ไม่ได้ใช้งาน)
- การแคชพารามิเตอร์ที่คำนวณแล้ว
อย่างไรก็ตาม โปรดระวังการเพิ่มประสิทธิภาพมากเกินไป คุณอาจพบว่าต้องเลือกระหว่างเวลาอุ่นเครื่องที่ต่ำกับไม่มีการปรากฏขึ้นของเสียงป๊อปเมื่อเปลี่ยนกำลังไฟฟ้า
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-03-26 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-03-26 UTC"],[],[],null,["# Audio warmup is the time it takes for the audio amplifier circuit in your device to\nbe fully powered and reach its normal operation state. The major contributors\nto audio warmup time are power management and any \"de-pop\" logic to stabilize\nthe circuit.\n\nThis document describes how to measure audio warmup time and possible ways to decrease\nwarmup time.\n\nMeasure output warmup\n---------------------\n\n\nAudioFlinger's FastMixer thread automatically measures output warmup\nand reports it as part of the output of the `dumpsys media.audio_flinger` command.\nAt warmup, FastMixer calls `write()`\nrepeatedly until the time between two `write()`s is the amount expected.\nFastMixer determines audio warmup by seeing how long a Hardware Abstraction\nLayer (HAL) `write()` takes to stabilize.\n\nTo measure audio warmup, follow these steps for the built-in speaker and wired headphones\nand at different times after booting. Warmup times are usually different for each output device\nand right after booting the device:\n\n1. Ensure that FastMixer is enabled.\n2. Enable touch sounds by selecting **Settings \\\u003e Sound \\\u003e Touch sounds** on the device.\n3. Ensure that audio has been off for at least three seconds. Five seconds or more is better, because the hardware itself might have its own power logic beyond the three seconds that AudioFlinger has.\n4. Press Home, and you should hear a click sound.\n5. Run the following command to receive the measured warmup: \n\n ```\n adb shell dumpsys media.audio_flinger | grep measuredWarmup\n ```\n\n\n You should see output like this: \n\n ```\n sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X\n ```\n\n\n The `measuredWarmup=X` is X number of milliseconds\n it took for the first set of HAL `write()`s to complete.\n\n\n The `warmupCycles=X` is how many HAL write requests it took\n until the execution time of `write()` matches what is expected.\n6. Take five measurements and record them all, as well as the mean. If they are not all approximately the same, then it's likely that a measurement is incorrect. For example, if you don't wait long enough after the audio has been off, you will see a lower warmup time than the mean value.\n\nMeasure input warmup\n--------------------\n\n\nThere are currently no tools provided for measuring audio input warmup.\nHowever, input warmup time can be estimated by observing\nthe time required for [startRecording()](http://developer.android.com/reference/android/media/AudioRecord.html#startRecording())\nto return.\n\nReduce warmup time\n------------------\n\n\nWarmup time can usually be reduced by a combination of:\n\n- Good circuit design\n- Accurate time delays in kernel device driver\n- Performing independent warmup operations concurrently rather than sequentially\n- Leaving circuits powered on or not reconfiguring clocks (increases idle power consumption)\n- Caching computed parameters\n\n\nHowever, beware of excessive optimization. You may find that you\nneed to tradeoff between low warmup time versus\nlack of popping at power transitions."]]