2012-07-25 20 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(... 
}