Bir geliştirici kısa süre önce VideoView'e altyazı desteği ekledi .
Bir MediaPlayermüzik (veya başka bir kaynak) çalmaya başladığında, bir SubtitleController olup olmadığını kontrol eder ve ayarlanmadıysa bu mesajı gösterir. Oynatmak istediğiniz kaynağın bir müzik veya video olup olmadığı umurumda değil. Bunu neden yaptığından emin değilim.
Kısa cevap: Bu "İstisna" yı önemsemeyin.
Düzenle :
Hala Lolipop'ta mevcut ,
Eğer MediaPlayersadece ses dosyalarını oynatmak için kullanılan ve gerçekten LogCat bu hataları kaldırmak istediğiniz edilir, kod feryat bir set empty SubtitleControlleriçinMediaPlayer .
Üretim ortamında kullanılmamalıdır ve bazı yan etkileri olabilir.
static MediaPlayer getMediaPlayer(Context context){
MediaPlayer mediaplayer = new MediaPlayer();
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
return mediaplayer;
}
try {
Class<?> cMediaTimeProvider = Class.forName( "android.media.MediaTimeProvider" );
Class<?> cSubtitleController = Class.forName( "android.media.SubtitleController" );
Class<?> iSubtitleControllerAnchor = Class.forName( "android.media.SubtitleController$Anchor" );
Class<?> iSubtitleControllerListener = Class.forName( "android.media.SubtitleController$Listener" );
Constructor constructor = cSubtitleController.getConstructor(new Class[]{Context.class, cMediaTimeProvider, iSubtitleControllerListener});
Object subtitleInstance = constructor.newInstance(context, null, null);
Field f = cSubtitleController.getDeclaredField("mHandler");
f.setAccessible(true);
try {
f.set(subtitleInstance, new Handler());
}
catch (IllegalAccessException e) {return mediaplayer;}
finally {
f.setAccessible(false);
}
Method setsubtitleanchor = mediaplayer.getClass().getMethod("setSubtitleAnchor", cSubtitleController, iSubtitleControllerAnchor);
setsubtitleanchor.invoke(mediaplayer, subtitleInstance, null);
//Log.e("", "subtitle is setted :p");
} catch (Exception e) {}
return mediaplayer;
}
Bu kod gizli API'dan aşağıdakileri yapmaya çalışıyor
SubtitleController sc = new SubtitleController(context, null, null);
sc.mHandler = new Handler();
mediaplayer.setSubtitleAnchor(sc, null)