001/* 002 * Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com> 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package com.baidu.cloud.media.player.misc; 018 019import android.annotation.TargetApi; 020import android.media.MediaFormat; 021import android.media.MediaPlayer; 022import android.os.Build; 023 024public class AndroidTrackInfo implements ITrackInfo { 025 private final MediaPlayer.TrackInfo mTrackInfo; 026 027 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 028 public static AndroidTrackInfo[] fromMediaPlayer(MediaPlayer mp) { 029 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 030 return fromTrackInfo(mp.getTrackInfo()); 031 } 032 033 return null; 034 } 035 036 private static AndroidTrackInfo[] fromTrackInfo(MediaPlayer.TrackInfo[] trackInfos) { 037 if (trackInfos == null) { 038 return null; 039 } 040 041 AndroidTrackInfo androidTrackInfo[] = new AndroidTrackInfo[trackInfos.length]; 042 for (int i = 0; i < trackInfos.length; ++i) { 043 androidTrackInfo[i] = new AndroidTrackInfo(trackInfos[i]); 044 } 045 046 return androidTrackInfo; 047 } 048 049 private AndroidTrackInfo(MediaPlayer.TrackInfo trackInfo) { 050 mTrackInfo = trackInfo; 051 } 052 053 @TargetApi(Build.VERSION_CODES.KITKAT) 054 @Override 055 public IMediaFormat getFormat() { 056 if (mTrackInfo == null) { 057 return null; 058 } 059 060 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 061 return null; 062 } 063 064 MediaFormat mediaFormat = mTrackInfo.getFormat(); 065 if (mediaFormat == null) { 066 return null; 067 } 068 069 return new AndroidMediaFormat(mediaFormat); 070 } 071 072 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 073 @Override 074 public String getLanguage() { 075 if (mTrackInfo == null) { 076 return "und"; 077 } 078 079 return mTrackInfo.getLanguage(); 080 } 081 082 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 083 @Override 084 public int getTrackType() { 085 if (mTrackInfo == null) { 086 return MEDIA_TRACK_TYPE_UNKNOWN; 087 } 088 089 return mTrackInfo.getTrackType(); 090 } 091 092 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 093 @Override 094 public String toString() { 095 StringBuilder out = new StringBuilder(128); 096 out.append(getClass().getSimpleName()); 097 out.append('{'); 098 if (mTrackInfo != null) { 099 out.append(mTrackInfo.toString()); 100 } else { 101 out.append("null"); 102 } 103 out.append('}'); 104 return out.toString(); 105 } 106 107 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 108 @Override 109 public String getInfoInline() { 110 if (mTrackInfo != null) { 111 return mTrackInfo.toString(); 112 } else { 113 return "null"; 114 } 115 } 116}