2017-08-01 12 views
0

私のアプリケーションでは、ユーザーがオーディオを再生しているかどうかを管理しています。 私のアプリケーションは音楽プレーヤーではありませんが、ユーザーを監視する監視アプリケーションは、音楽アプリケーションを通じてオーディオを再生することに注意してください。現在再生中のメディアを検出するのは、Androidのオーディオまたはビデオです。

これを行うために、私はMediaSessionManagerとMediaControllerを使用しています。

MediaSessionManagerは、このイベントをリスナー(私のアプリケーションを含む)に通知し、アクティブメディアセッションのMediaControllerを取得できます。

私が直面している問題は、ローカルのビデオファイルやストリーミングビデオ(musicsではなく)を再生しても、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(); 
} 
関連する問題