簡體   English   中英

當另一個正在錄制時,停止我的應用播放媒體

[英]Stop my app from playing media when another is recording

因此,我制作了一個音樂應用,該音樂應用播放類似於廣播的流,但是我注意到當我的應用正在播放音頻並且用戶決定在Whatsapp上發送語音便箋時,我的應用不會停止播放音頻。 我已經實現了電話功能,如果有電話到達,它就會停止。

有什么想法我會怎么做嗎?

我當時正在研究Audio Focus,但我認為這不是我所需要的。

您需要按照以下說明管理“音頻焦點”: https : //developer.android.com/guide/topics/media-apps/audio-focus

當有人要求音頻聚焦並開始播放一些音頻時,將舉行音頻聚焦,同時向所有正在聽音頻聚焦變化的人廣播“系統通知”,以便他們停止操作(在您的示例中為錄音)讓音頻成為唯一的音頻。 此“鎖定”可以是“排他”(僅儲物櫃可以播放音頻)或“與其他音頻混合”(兩種音頻將一起播放/錄制,但較新的音量或優先級更高)。

我還沒有看到任何面向回調的方法來解決此問題,但是在這樣的問題中有一個很棒的解決方案

private boolean validateMicAvailability(){
    Boolean available = true;
    AudioRecord recorder =
            new AudioRecord(MediaRecorder.AudioSource.MIC, 44100,
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_DEFAULT, 44100);
    try{
        if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_STOPPED ){
            available = false;

        }

        recorder.startRecording();
        if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING){
            recorder.stop();
            available = false;

        }
        recorder.stop();
    } finally{
        recorder.release();
        recorder = null;
    }

    return available;
}

我只能看到此工作的唯一方式是在后台定時任務線程上對其進行輪詢。 這篇文章對如何實現這一點有一些答案,並且肯定您會發現很多其他示例。

可能存在一種從openSL添加回調方法的方法,以便在狀態更改時可以忽略音樂音量或所需的任何內容,但是似乎人們在努力實現這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM