2012-07-25 62 views
1

嗨,我是Android开发新手。我想在我的android应用程序中为媒体播放器添加字幕。我已经搜查,发现了一个方法,即addTimedTextSource(...) 但它给出了错误 java.lang.NoSuchMethodError:android.media.MediaPlayer.addTimedTextSource在Android媒体播放器中添加字幕轨道

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.video_view); 
     mp = new MediaPlayer(); 
//  vw = (VideoView)findViewById(R.id.video_intent); 
     Intent intent = getIntent(); 
     path = intent.getStringExtra("path"); 
     Log.d("File path ::::::::::::::::::",path); 

     try { 
      mp.setDataSource("file://"+path); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mp.start(); 
     String mimeType = getMimeType("file://mnt/sdcard/BarbieGirl.srt"); 
//  mp.selectTrack(index); 
     try { 
      mp.addTimedTextSource(path, mimeType); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
    @Override 
    public void onCompletion(MediaPlayer mp) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
     // TODO Auto-generated method stub 

    } 

谁能告诉我如何使用此或者有关如何在android中显示字幕轨道的任何想法。

感谢

+0

解决不了问题只是一个提示:使用MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP代替getMimeType() – 2014-04-02 20:14:49

回答

2

如果您收到这个错误,很可能是因为您正在运行的设备不到16 SDK(果冻豆)这个代码。你应该把它包在一个SDK门:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
    mp.addTimedTextSource(... 
}