แอตทริบิวต์เสียง

โปรแกรมเล่นเสียงรองรับแอตทริบิวต์ที่กำหนดวิธีจัดการระบบเสียง การตัดสินใจกำหนดเส้นทาง ระดับเสียง และโฟกัสสำหรับแหล่งที่มาที่ระบุ การสมัครงาน สามารถแนบแอตทริบิวต์กับการเล่นเสียง (เช่น เพลงที่เล่นโดย บริการสตรีมมิงหรือการแจ้งเตือนสำหรับอีเมลใหม่) แล้วส่งต่อเสียง แอตทริบิวต์แหล่งข้อมูลของเฟรมเวิร์ก ซึ่งระบบเสียงจะใช้แอตทริบิวต์ ตัดสินใจผสมผสานกันและแจ้งให้แอปพลิเคชันทราบถึงสถานะของ ระบบ

ใน 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