2017-08-01 105 views
0

在我的應用程序中,我正在管理用戶播放音頻與否。 請注意,我的應用程序不是音樂播放器,而是監視用戶通過音樂應用程序播放音頻的監視應用程序。檢測當前正在播放的媒體是Android中的音頻或視頻

爲此,我使用MediaSessionManager和MediaController。

當活動媒體會話發生變化時(例如,用戶播放/停止音樂),MediaSessionManager將此事件通知給聽衆(包括我的應用程序),並且我可以爲活動媒體會話獲取MediaController。

我面臨的問題是,即使我播放本地視頻文件或流式視頻(即不是音樂),MediaSessionManager也會將活動會話通知給我的應用程序。

有什麼解決方法或解決方法瞭解當前正在播放的媒體是音樂還是視頻?

+0

真的沒有辦法告訴如果有人使用視頻播放器的音頻。我的意思是,即使它有實際的視頻(比如說音樂視頻),他們可能不會看它,只是在傾聽。您至多可以分辨出是否存在視頻組件,而不是其實際的音樂內容。 –

回答

0

音頻沒有幀率。因此,您可以使用此屬性來檢測音頻與視頻。 https://developer.android.com/reference/android/media/MediaFormat.html

示例代碼:

MediaExtractor extractor = new MediaExtractor(); 
try { 
    extractor.setDataSource(...); 
    int numTracks = extractor.getTrackCount(); 
    for (int i = 0; i < numTracks; ++i) { 
    MediaFormat format = extractor.getTrackFormat(i);   
    if (format.containsKey(MediaFormat.KEY_FRAME_RATE)) { 
     /* this is video file */ 
     }  
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
}finally { 
    //Release stuff 
    extractor.release(); 
} 
相關問題