国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

多媒體音頻焦點(diǎn)淺析

這篇具有很好參考價(jià)值的文章主要介紹了多媒體音頻焦點(diǎn)淺析。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

多媒體音頻焦點(diǎn)

意義

多個(gè)音源可以同時(shí)向同一個(gè)輸出流進(jìn)行播放音頻,如果沒有音頻焦點(diǎn)管控,就會出現(xiàn)多個(gè)音源同時(shí)播放的現(xiàn)象,給用戶帶來不便;而Android為了避免多個(gè)音源同時(shí)播放,就引入了音頻焦點(diǎn)的概念,所有音頻應(yīng)用都統(tǒng)一按照音頻焦點(diǎn)的規(guī)定執(zhí)行,就可以避免該現(xiàn)象發(fā)生。

當(dāng)應(yīng)用需要播放音頻時(shí),需要主動申請音頻焦點(diǎn),獲取音頻焦點(diǎn)后,再進(jìn)行播放操作;同時(shí)在播放過程中,也可能存在其他音源請求焦點(diǎn),此時(shí)當(dāng)前應(yīng)用就會收到音頻焦點(diǎn)的丟失,當(dāng)前應(yīng)用應(yīng)暫停播放或者降低音量,方便用戶聽其他音源。

規(guī)范

準(zhǔn)則

  • 在播放之前通過調(diào)用requestAudioFocus,確認(rèn)返回的結(jié)果是否為AUDIOFOCUS_REQUEST_GRANTED
  • 在其他應(yīng)用獲取到焦點(diǎn)時(shí),停止或暫停播放,或降低音量
  • 播放停止后,主動釋放焦點(diǎn)

版本處理

  • Android 2.2開始,應(yīng)用通過調(diào)用 requestAudioFocus()abandonAudioFocus() 來管理音頻焦點(diǎn)。應(yīng)用還必須為這兩個(gè)調(diào)用注冊 AudioManager.OnAudioFocusChangeListener,以便接收回調(diào)并管理自己的音量。
  • 對于以 Android 5.0及更高版本為目標(biāo)平臺的應(yīng)用,音頻應(yīng)用應(yīng)使用 AudioAttributes 來描述應(yīng)用正在播放的音頻類型。例如,播放語音的應(yīng)用應(yīng)指定 CONTENT_TYPE_SPEECH。
  • 面向 Android 8.0或更高版本的應(yīng)用應(yīng)使用 requestAudioFocus() 方法,該方法會接受 AudioFocusRequest 參數(shù)。AudioFocusRequest 包含有關(guān)應(yīng)用的音頻上下文和功能的信息。系統(tǒng)使用這些信息來自動管理音頻焦點(diǎn)的得到和失去。

使用

請求焦點(diǎn)

申請焦點(diǎn)時(shí),需要明確焦點(diǎn)類型:

  1. AudioManager.AUDIOFOCUS_GAIN:表示應(yīng)用程序需要長時(shí)間獲得音頻焦點(diǎn),通常用于播放音樂或其他持續(xù)性的音頻播放。應(yīng)用程序在獲得焦點(diǎn)后可以持續(xù)播放音頻,直到明確放棄焦點(diǎn)或其他應(yīng)用程序請求焦點(diǎn)。
  2. AudioManager.AUDIOFOCUS_GAIN_TRANSIENT:表示應(yīng)用程序需要短暫地獲得音頻焦點(diǎn),通常用于播放短暫的音效或提示音。應(yīng)用程序在獲得焦點(diǎn)后可以播放音頻,但在完成后應(yīng)立即釋放焦點(diǎn),以便其他應(yīng)用程序可以繼續(xù)使用焦點(diǎn)。
  3. AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE:表示應(yīng)用程序需要短暫地獲得音頻焦點(diǎn),并且希望其他應(yīng)用程序不要同時(shí)播放音頻。這種焦點(diǎn)類型用于應(yīng)用程序需要短時(shí)間內(nèi)獨(dú)占音頻焦點(diǎn)的情況,例如語音識別應(yīng)用。
  4. AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:表示應(yīng)用程序需要短暫地獲得音頻焦點(diǎn),但愿意降低音頻的音量以便與其他應(yīng)用程序共享焦點(diǎn)。通常用于類似通知聲音或?qū)Ш教崾镜那闆r

獲取音頻焦點(diǎn)結(jié)果,有以下類型:

  1. AudioManager.AUDIOFOCUS_REQUEST_GRANTED:表示應(yīng)用程序成功獲取了音頻焦點(diǎn)。這意味著應(yīng)用程序現(xiàn)在可以在其他應(yīng)用程序不需要音頻焦點(diǎn)時(shí)播放音頻。
  2. AudioManager.AUDIOFOCUS_REQUEST_FAILED:表示應(yīng)用程序請求音頻焦點(diǎn)失敗。這可能是因?yàn)槠渌麘?yīng)用程序已經(jīng)擁有了音頻焦點(diǎn),或者系統(tǒng)無法滿足應(yīng)用程序的請求。
  3. AudioManager.AUDIOFOCUS_REQUEST_DELAYED:表示應(yīng)用程序的音頻焦點(diǎn)請求被暫時(shí)延遲。當(dāng)其他應(yīng)用程序釋放音頻焦點(diǎn)時(shí),系統(tǒng)會嘗試重新分配焦點(diǎn)給應(yīng)用程序。

版本處理

Android8.0之前,需要通過AudioFocusRequest,以及實(shí)現(xiàn)AudioManager.OnAudioFocusChangeListener 接口進(jìn)行監(jiān)聽音頻焦點(diǎn)變化

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
            @Override
            public void onAudioFocusChange(int state) {
                switchFocus(state);
            }
        };
int requestAudioFocusResult = audioManager.requestAudioFocus(onAudioFocusChangeListener,
            AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN);
        if (requestAudioFocusResult == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
            //請求焦點(diǎn)失敗
        } else if (requestAudioFocusResult == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            //請求焦點(diǎn)成功
        }
public void switchFocus(int focus) {
        switch (focus) {
            case AudioManager.AUDIOFOCUS_GAIN:
                break;
            case AudioManager.AUDIOFOCUS_LOSS:
                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                break;
        }
}

Android8.0之后,需要通過AudioFocusRequest,AudioAttributes,以及實(shí)現(xiàn)AudioManager.OnAudioFocusChangeListener 接口進(jìn)行監(jiān)聽音頻焦點(diǎn)變化

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
            @Override
            public void onAudioFocusChange(int state) {
                switchFocus(state);
            }
        };
AudioAttributes attributes = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_MEDIA)
            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
            .build();
AudioFocusRequest audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
            .setAudioAttributes(attributes)
            .setAcceptsDelayedFocusGain(true)
            .setOnAudioFocusChangeListener(onAudioFocusChangeListener)
            .setWillPauseWhenDucked(false)
            .build();
        int requestAudioFocusResult = audioManager.requestAudioFocus(audioFocusRequest);
        if (requestAudioFocusResult == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
            //請求焦點(diǎn)失敗
        } else if (requestAudioFocusResult == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            //請求焦點(diǎn)成功
        } else if (requestAudioFocusResult == AudioManager.AUDIOFOCUS_REQUEST_DELAYED) {
            //延時(shí)焦點(diǎn)
        }
延遲獲取焦點(diǎn)

如上面所述,我們發(fā)現(xiàn)在Android 8.0之前,請求音頻焦點(diǎn)的時(shí)候,只會返回兩種結(jié)果,要么請求成功(AUDIOFOCUS_REQUEST_GRANTED),要么請求失敗(AUDIOFOCUS_REQUEST_FAILED)。

而從Android 8.0開始,還有一種結(jié)果,延遲成功請求(AUDIOFOCUS_REQUEST_DELAYED),這個(gè)也是成功的請求,但是這個(gè)請求具有延遲性;

方法 setAcceptsDelayedFocusGain(true) 可讓您的應(yīng)用異步處理焦點(diǎn)請求。設(shè)置此標(biāo)記后,在焦點(diǎn)鎖定時(shí)發(fā)出的請求會返回 AUDIOFOCUS_REQUEST_DELAYED。當(dāng)鎖定音頻焦點(diǎn)的情況不再存在時(shí)(例如當(dāng)通話結(jié)束時(shí)),系統(tǒng)會批準(zhǔn)待處理的焦點(diǎn)請求,通過注冊AudioFocusChangeListener監(jiān)聽的 onAudioFocusChange() 來通知您的應(yīng)用。

自動降低音量

在 Android 8.0(API 級別 26)中,當(dāng)其他應(yīng)用使用 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 請求焦點(diǎn)時(shí),系統(tǒng)可以在不調(diào)用應(yīng)用的 onAudioFocusChange() 回調(diào)的情況下降低和恢復(fù)音量。

在某些情境下,可能不需要降低音量而是直接暫停,這是可以通過setWillPauseWhenDucked(true)方法取消系統(tǒng)的默認(rèn)行為,然后通過OnAudioFocusChangeListeneronAudioFocusChange回調(diào)中監(jiān)聽音頻焦點(diǎn)變化

AudioAttributes

用來描述該應(yīng)用使用情況,通過Builder模式進(jìn)行構(gòu)建

  • Usage(用途):(必須)用于描述音頻的使用場景,持續(xù)時(shí)間,例如 AudioAttributes.USAGE_MEDIA 用于媒體播放,AudioAttributes.USAGE_VOICE_COMMUNICATION 用于語音通信等。
  • ContentType(內(nèi)容類型):用于描述音頻的內(nèi)容類型,例如 AudioAttributes.CONTENT_TYPE_MUSIC 用于音樂,AudioAttributes.CONTENT_TYPE_SPEECH 用于語音等。
  • Flags(標(biāo)志):用于指定一些特定的標(biāo)志,例如 AudioAttributes.FLAG_AUDIBILITY_ENFORCED 表示強(qiáng)制性可聽性,AudioAttributes.FLAG_HW_AV_SYNC 表示硬件音視頻同步等。
  • Legacy Stream Type(傳統(tǒng)流類型):用于與舊版 API 兼容,將 AudioAttributes 映射到舊版的音頻流類型,例如 AudioAttributes.STREAM_MUSIC
AudioFocusRequest

用來請求獲取焦點(diǎn)的詳細(xì)信息和參數(shù)

  • Builder():參數(shù)代表請求焦點(diǎn)級別持續(xù)時(shí)間。
  • setAudioAttributes:用于描述音頻焦點(diǎn)請求的屬性
  • setAcceptsDelayedFocusGain:延遲音頻焦點(diǎn)獲取是指應(yīng)用程序在請求音頻焦點(diǎn)時(shí),如果焦點(diǎn)當(dāng)前不可用,是否愿意等待一段時(shí)間,直到焦點(diǎn)可用為止;參數(shù)默認(rèn)為true,表示應(yīng)用程序愿意等待焦點(diǎn)可用。如果將參數(shù)設(shè)置為 false,則表示應(yīng)用程序不接受延遲焦點(diǎn)獲取,如果焦點(diǎn)當(dāng)前不可用,則請求會立即返回失敗。
  • setWillPauseWhenDucked:用于設(shè)置當(dāng)應(yīng)用程序的音頻焦點(diǎn)被降低時(shí)是否暫停音頻播放。當(dāng)應(yīng)用程序的音頻焦點(diǎn)被其他應(yīng)用程序請求并且獲得時(shí),系統(tǒng)可能會降低應(yīng)用程序的音量以便讓焦點(diǎn)持有者能夠播放音頻。參數(shù)默認(rèn)值為 true,表示應(yīng)用程序在焦點(diǎn)被降低時(shí)會暫停音頻播放。如果將參數(shù)設(shè)置為 false,則表示應(yīng)用程序在焦點(diǎn)降低時(shí)不會暫停音頻播放,而是繼續(xù)以降低的音量播放。
  • setOnAudioFocusChangeListener:用于設(shè)置監(jiān)聽音頻焦點(diǎn)變化的回調(diào)接口;當(dāng)應(yīng)用程序請求音頻焦點(diǎn)并且焦點(diǎn)狀態(tài)發(fā)生變化時(shí),系統(tǒng)會調(diào)用注冊的 AudioFocusChangeListener 接口的回調(diào)方法,通知應(yīng)用程序焦點(diǎn)狀態(tài)的變化
onAudioFocusChangeListener
AudioManager.OnAudioFocusChangeListener() {
            @Override
            public void onAudioFocusChange(int state) {
            	switch (focus) {
            	// 重新獲取音頻焦點(diǎn)
            	// 恢復(fù)播放
            	case AudioManager.AUDIOFOCUS_GAIN:
                break;
                // 永久丟失焦點(diǎn)
                // 此時(shí)應(yīng)該停止播放,釋放資源
            	case AudioManager.AUDIOFOCUS_LOSS:
                break;
                // 短暫丟失焦點(diǎn)
                // 但是很快就會重新獲得,在此狀態(tài)應(yīng)該暫停所有音頻播放
            	case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                break;
                // 瞬間丟失焦點(diǎn)
                // 暫時(shí)失去焦點(diǎn),但是允許持續(xù)播放音頻(以很小的聲音),不需要完全停止播放
            	case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                break;
        		}
            }
        };

釋放焦點(diǎn)

在Android8.0之前通過以下方法釋放焦點(diǎn),參數(shù)為之前申請焦點(diǎn)創(chuàng)建的監(jiān)聽OnAudioFocusChangeListener

audioManager.abandonAudioFocus(onAudioFocusChangeListener);

在Android8.0之后則通過如下方法釋放,參數(shù)為之前申請焦點(diǎn)時(shí)創(chuàng)建的AudioFocusRequest。

audioManager.abandonAudioFocusRequest(audioFocusRequest);

注意主動abandon焦點(diǎn)的時(shí)候是不會回調(diào)監(jiān)聽的文章來源地址http://www.zghlxwxcb.cn/news/detail-643622.html

到了這里,關(guān)于多媒體音頻焦點(diǎn)淺析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 軟考:中級軟件設(shè)計(jì)師:多媒體基礎(chǔ),音頻,圖像,顏色,多媒體技術(shù)的種類,圖像音頻視頻的容量計(jì)算,常見的多媒體標(biāo)準(zhǔn)

    軟考:中級軟件設(shè)計(jì)師:多媒體基礎(chǔ),音頻,圖像,顏色,多媒體技術(shù)的種類,圖像音頻視頻的容量計(jì)算,常見的多媒體標(biāo)準(zhǔn)

    提示:系列被面試官問的問題,我自己當(dāng)時(shí)不會,所以下來自己復(fù)盤一下,認(rèn)真學(xué)習(xí)和總結(jié),以應(yīng)對未來更多的可能性 關(guān)于互聯(lián)網(wǎng)大廠的筆試面試,都是需要細(xì)心準(zhǔn)備的 (1)自己的科研經(jīng)歷, 科研內(nèi)容 ,學(xué)習(xí)的相關(guān)領(lǐng)域知識,要熟悉熟透了 (2)自己的實(shí)習(xí)經(jīng)歷,做了 什

    2024年02月09日
    瀏覽(37)
  • 鴻蒙實(shí)戰(zhàn)多媒體運(yùn)用:【音頻組件】

    鴻蒙實(shí)戰(zhàn)多媒體運(yùn)用:【音頻組件】

    音頻組件用于實(shí)現(xiàn)音頻相關(guān)的功能,包括音頻播放,錄制,音量管理和設(shè)備管理。 圖 1 ?音頻組件架構(gòu)圖 基本概念 采樣 采樣是指將連續(xù)時(shí)域上的模擬信號按照一定的時(shí)間間隔采樣,獲取到離散時(shí)域上離散信號的過程。 采樣率 采樣率為每秒從連續(xù)信號中提取并組成離散信號

    2024年03月10日
    瀏覽(90)
  • 零基礎(chǔ)入門多媒體音頻(6)-alsa(2)

    PCM接口 ALSA的PCM中間層非常有用,每個(gè)驅(qū)動只需要實(shí)現(xiàn)底層的功能來訪問硬件。要使用PCM層,你需要先引用 sound/pcm.h頭文件。此外,如果你要使用和hw_param相關(guān)的函數(shù),sound/pcm_params.h也是必須的。 每個(gè)聲卡設(shè)備最多擁有4個(gè)PCM實(shí)例。一個(gè)PCM實(shí)例對應(yīng)一個(gè)PCM設(shè)備文件。實(shí)例數(shù)量的

    2024年04月14日
    瀏覽(87)
  • 鴻蒙HarmonyOS開發(fā)實(shí)戰(zhàn)—多媒體開發(fā)(音頻開發(fā) 一)

    鴻蒙HarmonyOS開發(fā)實(shí)戰(zhàn)—多媒體開發(fā)(音頻開發(fā) 一)

    HarmonyOS音頻模塊支持音頻業(yè)務(wù)的開發(fā),提供音頻相關(guān)的功能,主要包括音頻播放、音頻采集、音量管理和短音播放等。 基本概念 采樣 采樣是指將連續(xù)時(shí)域上的模擬信號按照一定的時(shí)間間隔采樣,獲取到離散時(shí)域上離散信號的過程。 采樣率 采樣率為每秒從連續(xù)信號中提取并

    2024年01月24日
    瀏覽(30)
  • 【python】《多媒體技術(shù)與應(yīng)用》實(shí)驗(yàn)報(bào)告「數(shù)字音頻處理」

    【python】《多媒體技術(shù)與應(yīng)用》實(shí)驗(yàn)報(bào)告「數(shù)字音頻處理」

    ?《多媒體技術(shù)與應(yīng)用》 實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱 數(shù)字視頻處理 實(shí)驗(yàn)時(shí)間 2022/4/25 姓名 班級 計(jì)非201 學(xué)號 成績 一.? 實(shí)驗(yàn)?zāi)康?1. 掌握數(shù)字音頻的讀取與打開; 2. 掌握數(shù)字音頻信號的頻譜分析; 3. 驗(yàn)證 PCM 編碼算法。 二.實(shí)驗(yàn)原理 聲音是由物體振動而產(chǎn)生的,聲波的三要素是頻率

    2023年04月16日
    瀏覽(23)
  • Android多媒體功能開發(fā)(11)——使用AudioRecord類錄制音頻

    Android多媒體功能開發(fā)(11)——使用AudioRecord類錄制音頻

    AudioRecord類優(yōu)點(diǎn)是能錄制到緩沖區(qū),能夠?qū)崿F(xiàn)邊錄邊播(AudioRecord + AudioTrack)以及對音頻的實(shí)時(shí)處理(如QQ電話)。缺點(diǎn)是輸出是PCM格式的原始采集數(shù)據(jù),如果直接保存成音頻文件,不能夠被播放器播放,所以必須用代碼實(shí)現(xiàn)數(shù)據(jù)編碼以及壓縮。 使用AudioRecord錄音的基本步驟是

    2023年04月09日
    瀏覽(24)
  • (八)穿越多媒體奇境:探索Streamlit的圖像、音頻與視頻魔法

    (八)穿越多媒體奇境:探索Streamlit的圖像、音頻與視頻魔法

    歡迎各位讀者來到“最全Streamlit教程”專欄系列!如果您正在尋找一種簡單而強(qiáng)大的方式來創(chuàng)建交互式數(shù)據(jù)應(yīng)用程序,那么Streamlit無疑是您的最佳選擇。作為該領(lǐng)域的熱門框架,Streamlit讓數(shù)據(jù)科學(xué)家、開發(fā)者和愛好者能夠以前所未有的速度構(gòu)建出引人入勝的數(shù)據(jù)可視化工具。

    2024年02月13日
    瀏覽(28)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(音頻開發(fā) 二(1)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(音頻開發(fā) 二(1)

    接口說明 接口名 描述 AudioCapturer(AudioCapturerInfo audioCapturerInfo) throws IllegalArgumentException 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù),使用默認(rèn)錄音設(shè)備。 AudioCapturer(AudioCapturerInfo audioCapturerInfo, AudioDeviceDescriptor devInfo) throws IllegalArgumentException 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù)并指定錄音

    2024年04月23日
    瀏覽(99)
  • [前端筆記——多媒體與嵌入] 6.HTML 中的圖片+視頻+音頻內(nèi)容

    [前端筆記——多媒體與嵌入] 6.HTML 中的圖片+視頻+音頻內(nèi)容

    可以用 img 元素來把圖片放到網(wǎng)頁上。它是一個(gè)空元素(它不需要包含文本內(nèi)容或閉合標(biāo)簽),最少只需要一個(gè) src (一般讀作其全稱 * *source) * *來使其生效。src 屬性包含了指向我們想要引入的圖片的路徑,可以是相對路徑或絕對 URL,就像 a 元素的 href 屬性一樣。 屬性是

    2023年04月25日
    瀏覽(20)
  • LuatOS-SOC接口文檔(air780E)--audio - 多媒體音頻

    常量 類型 解釋 audio.PCM number PCM格式,即原始ADC數(shù)據(jù) audio.MORE_DATA number audio.on回調(diào)函數(shù)傳入?yún)?shù)的值,表示底層播放完一段數(shù)據(jù),可以傳入更多數(shù)據(jù) audio.DONE number audio.on回調(diào)函數(shù)傳入?yún)?shù)的值,表示底層播放完全部數(shù)據(jù)了 audio.BUS_DAC number 硬件輸出總線,DAC類型 audio.BUS_I2S numb

    2024年02月07日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包