Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MediaPlayer getTrackInfo()从不包含TimedText_Java_Android_Android Mediaplayer - Fatal编程技术网

Java MediaPlayer getTrackInfo()从不包含TimedText

Java MediaPlayer getTrackInfo()从不包含TimedText,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我尝试了iTech的这个示例项目(可以找到) 它是关于用Android MediaPlayer类显示字幕的 当我试着运行这个项目时,媒体播放器可以正常工作,但字幕不行。调试之后,我发现getTrackInfo()只返回一个长度为2的数组(这只是视频和音频曲目),而timedText曲目不包含在数组中。有人知道为什么吗 为了方便起见,我在下面发布了代码片段: @Override protected void onCreate(Bundle savedInstanceState) {

我尝试了iTech的这个示例项目(可以找到) 它是关于用Android MediaPlayer类显示字幕的

当我试着运行这个项目时,媒体播放器可以正常工作,但字幕不行。调试之后,我发现getTrackInfo()只返回一个长度为2的数组(这只是视频和音频曲目),而timedText曲目不包含在数组中。有人知道为什么吗

为了方便起见,我在下面发布了代码片段:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtDisplay = (TextView) findViewById(R.id.txtDisplay);
        MediaPlayer player = MediaPlayer.create(this, R.raw.video);

        try {
            player.addTimedTextSource(getSubtitleFile(R.raw.sub),
                    MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
            int textTrackIndex = findTrackIndexFor(
                    TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT, player.getTrackInfo());
            Log.d(TAG, "textTrackIndex = "+textTrackIndex);
            if (textTrackIndex >= 0) {
                player.selectTrack(textTrackIndex);
            } else {
                Log.w(TAG, "Cannot find text track!");
            }
            player.setOnTimedTextListener(this);
            player.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private int findTrackIndexFor(int mediaTrackType, TrackInfo[] trackInfo) {
        int index = -1;
        Log.w(TAG, "trackinfo length = "+trackInfo.length);
        for (int i = 0; i < trackInfo.length; i++) {
            Log.d(TAG, "track type = "+trackInfo[i].getTrackType()+" and mediaTrackType = "+mediaTrackType);
            if (trackInfo[i].getTrackType() == mediaTrackType) {
                return i;
            }
        }
        return index;
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtDisplay=(TextView)findViewById(R.id.txtDisplay);
MediaPlayer=MediaPlayer.create(这个,R.raw.video);
试一试{
player.addTimedTextSource(getSubtitleFile(R.raw.sub),
MediaPlayer.MEDIA\u MIMETYPE\u TEXT\u SUBRIP);
int textTrackIndex=findTrackIndexFor(
TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,player.getTrackInfo());
Log.d(标签,“textTrackIndex=“+textTrackIndex”);
如果(textTrackIndex>=0){
player.选择Track(textTrackIndex);
}否则{
Log.w(标记“找不到文本跟踪!”);
}
player.setOnTimedTextListener(此);
player.start();
}捕获(例外e){
e、 printStackTrace();
}
}
私有int-findTrackIndexFor(int-mediaTrackType,TrackInfo[]TrackInfo){
int指数=-1;
Log.w(标签,“trackinfo-length=“+trackinfo.length”);
对于(int i=0;i
请注意,如果您尝试示例项目,视频将不会显示,但只有声音。这不是一个bug,因为我认为iTech故意不显示视频:)

编辑: 我在Nexus10上试用了安卓4.2.2,效果不错。但我还是不明白为什么在我的另一款搭载安卓4.1.2的平板电脑上它不能工作