Bir geliştirici kısa süre önce VideoView'e altyazı desteği ekledi .
Bir MediaPlayer
mü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 MediaPlayer
sadece ses dosyalarını oynatmak için kullanılan ve gerçekten LogCat bu hataları kaldırmak istediğiniz edilir, kod feryat bir set empty SubtitleController
iç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)