একজন বিকাশকারী সম্প্রতি ভিডিওভিউতে সাবটাইটেল সমর্থন যুক্ত করেছে ।
যখন MediaPlayer
কোনও সঙ্গীত বা (বা অন্য উত্স) বাজানো শুরু হয়, এটি কোনও সাবটাইটেল কন্ট্রোলার রয়েছে কিনা তা পরীক্ষা করে এবং সেট না করা থাকলে এই বার্তাটি প্রদর্শন করে। আপনি যে উত্সটি খেলতে চান তা কোনও সংগীত বা ভিডিও কিনা সেটির কোনও যত্ন নেই বলে মনে হচ্ছে। কেন তিনি এমনটি করেছিলেন তা নিশ্চিত নয়।
সংক্ষিপ্ত উত্তর: এই "ব্যতিক্রম" সম্পর্কে চিন্তা করবেন না।
সম্পাদনা করুন:
ললিপপ এ এখনও উপস্থিত ,
যদি MediaPlayer
কেবল অডিও ফাইল খেলতে ব্যবহৃত হয় এবং আপনি লগকটে এই ত্রুটিগুলি সত্যই মুছে ফেলতে চান, কোড বেলো একটিতে সেট empty SubtitleController
করে MediaPlayer
।
এটি উত্পাদন পরিবেশে ব্যবহার করা উচিত নয় এবং এর কিছু পার্শ্ব প্রতিক্রিয়াও হতে পারে।
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;
}
এই কোডটি লুকানো এপিআই থেকে নিম্নলিখিতটি করার চেষ্টা করছে
SubtitleController sc = new SubtitleController(context, null, null);
sc.mHandler = new Handler();
mediaplayer.setSubtitleAnchor(sc, null)