โปรแกรมเล่นเสียงรองรับแอตทริบิวต์ที่กำหนดวิธีจัดการระบบเสียง การตัดสินใจกำหนดเส้นทาง ระดับเสียง และโฟกัสสำหรับแหล่งที่มาที่ระบุ การสมัครงาน สามารถแนบแอตทริบิวต์กับการเล่นเสียง (เช่น เพลงที่เล่นโดย บริการสตรีมมิงหรือการแจ้งเตือนสำหรับอีเมลใหม่) แล้วส่งต่อเสียง แอตทริบิวต์แหล่งข้อมูลของเฟรมเวิร์ก ซึ่งระบบเสียงจะใช้แอตทริบิวต์ ตัดสินใจผสมผสานกันและแจ้งให้แอปพลิเคชันทราบถึงสถานะของ ระบบ
ใน Android 4.4 และเวอร์ชันก่อนหน้า เฟรมเวิร์กนี้ทำการตัดสินใจแบบผสมผสานโดยใช้เพียง ซึ่งก็คือประเภทสตรีมเสียงนั่นเอง แต่การพิจารณาประเภทสตรีมนั้น ในการสร้างผลงานที่มีคุณภาพในแอปพลิเคชันและอุปกรณ์ต่างๆ ตัวอย่างเช่น บนอุปกรณ์เคลื่อนที่ มีการเล่นแอปพลิเคชันบางอย่าง (เช่น Google Maps) เส้นทางการขับขี่ในประเภทสตรีม STREAM_MUSIC แต่บนอุปกรณ์เคลื่อนที่ ในโหมดการฉายภาพ (เช่น Android Auto) แอปพลิเคชันไม่สามารถผสมผสานการขับรถ เส้นทางด้วยสตรีมสื่ออื่นๆ
การใช้ เสียง Attribute API แอปพลิเคชันจะให้ระบบเสียงพร้อมรายละเอียด ข้อมูลเกี่ยวกับแหล่งที่มาของเสียงหนึ่งๆ รวมถึงการใช้งาน (เหตุใดแหล่งที่มาจึงเป็น กำลังเล่น) ประเภทเนื้อหา (สื่อที่เล่นอยู่) ธง (วิธีที่แหล่งที่มา ที่ควรเล่น) และบริบท (ใหม่ใน Android 9) ไวยากรณ์:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- การใช้งาน ระบุเหตุผลที่แหล่งที่มากำลังเล่นและควบคุม การกำหนดเส้นทาง โฟกัส และปริมาณ
- ประเภทเนื้อหา ระบุสื่อที่กำลังเล่น (เพลง, ภาพยนตร์, คำพูด, การแปลงข้อมูลเป็นเสียง, ไม่รู้จัก)
- บริบท ค่าการใช้งานที่แทรกไปยัง HAL ของเสียง
- แฟล็ก ระบุวิธีการเล่นแหล่งที่มา มีการรองรับการบังคับใช้ความสามารถในการแสดงเสียง (ต้องมีเสียงชัตเตอร์ของกล้องใน ในบางประเทศ) และการซิงค์เสียง/วิดีโอของฮาร์ดแวร์
สำหรับการประมวลผลไดนามิก แอปพลิเคชันต้องแยกความแตกต่างระหว่างภาพยนตร์ เพลง และเสียงพูด ข้อมูลเกี่ยวกับตัวข้อมูลเองก็มีความสำคัญเช่นกัน เช่น ความดังและค่าตัวอย่างสูงสุด
ใช้แอตทริบิวต์
การใช้งานจะระบุบริบทที่มีการใช้สตรีม โดยให้ ข้อมูลเกี่ยวกับเหตุผลในการเล่นเสียงและวัตถุประสงค์ของเสียง ข้อมูลการใช้งานจะสื่อความได้มากกว่าประเภทสตรีมและอนุญาตให้แพลตฟอร์ม หรือนโยบายการกำหนดเส้นทางเพื่อปรับแต่งการตัดสินใจเกี่ยวกับปริมาณหรือการกำหนดเส้นทาง
ระบุค่าการใช้งานแบบใดแบบหนึ่งต่อไปนี้สำหรับอินสแตนซ์ใดก็ได้
- ไม่ทราบอายุ
- สื่อของสหรัฐอเมริกา
- การสื่อสารระหว่างสหรัฐอเมริกา (USAGE_VOICE_COMMUNICATION)
- สัญญาณเสียง USAGE_VOICE_COMMUNICATION
- USAGE_ALARM
- การแจ้งเตือนสหรัฐอเมริกา
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- คำขอแจ้งปัญหา USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- ทันทีการแจ้งเตือน USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_DELAYED
- กิจกรรม USAGE_NOTIFICATION_EVENT
- การเข้าถึง USAGE
- USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
- การแบ่งขอบเขตการสนับสนุนสหรัฐอเมริกา (USAGE_ASSISTANCE_SONIFICATION)
- การแข่งขันระหว่างสหรัฐอเมริกา
- แหล่งที่มาเสมือนของสหรัฐอเมริกา
- USAGE_ASSISTANT
ค่าการใช้แอตทริบิวต์เสียงจะแยกกันต่างหาก ตัวอย่างเช่น
USAGE_MEDIA
และ
วันที่ USAGE_ALARM
คำจำกัดความ สำหรับข้อยกเว้น โปรดดู
AudioAttributes.Builder
ของเรา
ประเภทเนื้อหา
ประเภทเนื้อหาจะระบุถึงเสียงและแสดงหมวดหมู่ทั่วไปของ
เนื้อหาอย่างเช่น ภาพยนตร์ คำพูด หรือเสียงบี๊ป/เสียงเรียกเข้า เฟรมเวิร์กเสียงใช้
ข้อมูลประเภทเนื้อหาเพื่อเลือกกำหนดค่าเฉพาะเสียงหลังการประมวลผล
บล็อก แม้ว่าคุณจะระบุประเภทเนื้อหาหรือไม่ก็ได้ แต่คุณควรใส่ประเภท
เมื่อใดก็ตามที่เราทราบประเภทเนื้อหา เช่น
CONTENT_TYPE_MOVIE
สำหรับบริการสตรีมมิงภาพยนตร์ หรือ
CONTENT_TYPE_MUSIC
สำหรับแอปพลิเคชันเล่นเพลง
ระบุค่าประเภทเนื้อหาต่อไปนี้สำหรับอินสแตนซ์ใดก็ได้
CONTENT_TYPE_UNKNOWN
(ค่าเริ่มต้น)CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
ค่าประเภทเนื้อหาของแอตทริบิวต์เสียงจะไม่เกี่ยวข้องกัน สำหรับรายละเอียดเกี่ยวกับประเภทเนื้อหา อ้างอิง เสียง API ของแอตทริบิวต์
บริบท
แต่ละเสียงใน Android จะระบุโดยแอปพลิเคชันอย่างมีความรับผิดชอบและเหตุผล
ในการสร้างเสียง และอุปกรณ์ Android จะใช้ข้อมูลนี้เพื่อ
กำหนดวิธีนำเสนอเสียง ใน Android 8.x และต่ำกว่า แอปพลิเคชันสามารถ
รายงานเหตุผลในการสร้างเสียงโดยใช้ประเภทสตรีมเดิม (เช่น
AudioSystem.STREAM_MUSIC
) หรือ AudioAttributes
ใน
Android 9, AudioAttributes.usage
ค่า
จะแยกที่ระดับ HAL เป็นบริบท
บริบทเสียง HAL | การใช้ AudioAttributes |
---|---|
ดนตรี | สื่อ |
สั่งการด้วยเสียง | USAGE_ASSISTANT |
การนำทาง | ASSISTANCE_NAVIGATION_คำแนะนำนี้ |
โทร | การสื่อสารด้วยเสียง |
เสียงเรียกเข้า | การแจ้งเตือนเสียงเรียกเข้า |
การแจ้งเตือน | การแจ้งเตือน |
นาฬิกาปลุก | นาฬิกาปลุก |
เสียงระบบ | การสนับสนุนเพิ่มเติม |
ไม่ทราบ | ไม่ทราบ |
คุณสามารถระบุค่า CONTEXT_NUMBER
ค่าใดค่าหนึ่งต่อไปนี้สำหรับ
อินสแตนซ์:
- MUSIC_CONTEXT // การเล่นเพลง
- NAVIGATION_CONTEXT // เส้นทางการนำทาง
- VOICE_COMMAND_CONTEXT // เซสชันคำสั่งเสียง
- CALL_RING_CONTEXT // เสียงสายเรียกเข้า
- CALL_CONTEXT // การโทรด้วยเสียง
- ALARM_CONTEXT // เสียงปลุกจาก Android
- NOTIFICATION_CONTEXT // การแจ้งเตือน
- SYSTEM_SOUND_CONTEXT // เสียงโต้ตอบของผู้ใช้ (การคลิกปุ่ม ฯลฯ)
ธง
แฟล็กจะระบุวิธีที่เฟรมเวิร์กเสียงนำเอฟเฟกต์ไปใช้กับการเล่นเสียง ระบุแฟล็กต่อไปนี้อย่างน้อย 1 รายการสำหรับอินสแตนซ์
FLAG_AUDIBILITY_ENFORCED
ขอให้ระบบตรวจสอบ ความสามารถในการเปิดเสียง ใช้เพื่อตอบสนองความต้องการของระบบSTREAM_SYSTEM_ENFORCED
(เช่น การบังคับเสียงชัตเตอร์กล้อง)HW_AV_SYNC
ขอให้ระบบเลือกสตรีมเอาต์พุต ที่สนับสนุนการซิงค์ A/V ของฮาร์ดแวร์
แฟล็กแอตทริบิวต์เสียงไม่จำกัดเฉพาะตัวและรวมเข้าด้วยกันได้ สำหรับรายละเอียดเกี่ยวกับ ค่าสถานะเหล่านี้ โปรดดู เสียง API ของแอตทริบิวต์
ตัวอย่าง
ในตัวอย่างนี้ AudioAttributes.Builder
กำหนด
AudioAttributes
ก่อนที่จะใช้โดย AudioTrack
ใหม่
อินสแตนซ์:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
ความเข้ากันได้
นักพัฒนาแอปพลิเคชันควรใช้แอตทริบิวต์เสียงเมื่อสร้างหรืออัปเดต แอปพลิเคชันสำหรับ Android 5.0 ขึ้นไป อย่างไรก็ตาม แอปพลิเคชันจะไม่ เพื่อใช้ประโยชน์จากแอตทริบิวต์ จัดการสตรีมประเภทเดิม หรือไม่ทราบถึงแอตทริบิวต์เท่านั้น (เช่น มีเดียเพลเยอร์ทั่วไปที่ )
ในกรณีดังกล่าว เฟรมเวิร์กนี้จะมีความเข้ากันได้แบบย้อนหลังกับ อุปกรณ์และ Android รุ่นต่างๆ ด้วยการแปลสตรีมเสียงแบบเดิมโดยอัตโนมัติ กับแอตทริบิวต์เสียง อย่างไรก็ตาม กรอบการทำงานไม่ได้บังคับใช้หรือ รับประกันการแมปนี้ในอุปกรณ์ ผู้ผลิต หรือ Android รุ่นต่างๆ
การแมปความเข้ากันได้
Android 5.0 ขึ้นไป | Android 4.4 และเก่ากว่า |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION
|
STREAM_VOICE_CALL
|
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION
|
STREAM_SYSTEM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE
|
STREAM_RING
|
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
|
STREAM_MUSIC
|
CONTENT_TYPE_SONIFICATION USAGE_ALARM
|
STREAM_ALARM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT
|
STREAM_NOTIFICATION
|
CONTENT_TYPE_SPEECH
|
(@ซ่อน) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@ซ่อน) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@ซ่อน) STREAM_DTMF
|
ประเภทสตรีมที่เลิกใช้งาน
Android 9 เลิกใช้งานสตรีมประเภทต่อไปนี้สำหรับ การใช้งานยานยนต์:
- ค่าเริ่มต้นของสตรีม
- โทรด้วยเสียง
- ระบบสตรีม
- สตรีมริง
- สตรีมเพลง
- สตรีมการปลุก
- การแจ้งเตือนสตรีม
- สตรีม - BLUETOOTH_SCO
- สตรีมระบบที่กำหนด
- สตรีม DTMF
- สตรีม
- การเข้าถึงสตรีม
ดูรายละเอียดเพิ่มเติมได้ที่ Automotive Audio