মিডিয়াপ্লেয়ার ত্রুটি অ্যান্ড্রয়েড ইতিমধ্যে সেট করা সাবটাইটেল নিয়ামক থাকা উচিত


137

আমি যখনই কোনও মিডিয়া খেলি তখন এটি ডিডিএমএসে একটি সতর্কতা দেখায় Should have subtitle controller already set

আমার কোড:

private void start() {
    mediaPlayer.start();

        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.stop();
            mp.release();
        }
    });
}

ডিডিএমএস লোগো

সাবটাইটেল নিয়ামক ইতিমধ্যে সেট করা উচিত

তথ্য / সতর্কতা (2, 0)

আমি যখন গুগলে অনুসন্ধান করেছি, এমনকি এটি সম্পর্কিত কোনও একটি বিষয়ও নয়। আমি কীভাবে এ থেকে মুক্তি পাব বা অক্ষম করব?

উত্তর:


187

একজন বিকাশকারী সম্প্রতি ভিডিওভিউতে সাবটাইটেল সমর্থন যুক্ত করেছে ।

যখন 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)

12
আমি সম্মত হই - সাবটাইটেল ট্র্যাক উপস্থিত না থাকলে এটি ত্রুটি নয়। তথ্য সর্বাধিক
কোথাও কোথাও

4
ঠিক আছে, নিশ্চিত, তবে এটি দমন করার কোনও সহজ উপায় আছে? এটি আমার লগক্যাট আউটপুটটিকে জংশন করছে ...
টিজে এলিস

আমার মনে হয় একটি ফিল্টার তৈরি করতে পারে যদি এটি সত্যিই বিরক্তিকর হয়, অ্যান্ড্রয়েড পুনরায় কম্পাইল করে বা আপনার গানের জন্য একটি খালি সাবটাইটেল কন্ট্রোলার সেট করে।
হাক্কেটো

1
@ হ্যাক্টো আপনি কীভাবে একটি খালি সাবটাইটেল কন্ট্রোলার সেট করবেন? দুঃখিত, আমি এটি ডক্সে দেখছি না।
ফ্র্যাঙ্ক শোয়েটারম্যান

2
অবশ্যই ডকুমেন্টেশন এই তথ্য সরবরাহ করে না। আপনি যদি মিডিয়াপ্লেয়ারের ভাগ করা কোডটি দেখে থাকেন তবে আপনি দেখতে পাচ্ছেন যে সাবটাইটেল কন্ট্রোলারের জন্য একটি সেটর রয়েছে (যাতে এটি সম্ভব হওয়া উচিত) তবে দুর্ভাগ্যক্রমে অনুপলব্ধ বলে মনে হয়।
হাক্কেটো

8

লগকটে বার্তাটি সরাতে, আমি ট্র্যাকের জন্য একটি উপশিরোনাম যুক্ত করেছি। উইন্ডোজগুলিতে, ট্র্যাকটিতে ডান ক্লিক করুন -> সম্পত্তি -> বিশদ -> সাবটাইটেলে একটি পাঠ্য সন্নিবেশ করুন। সম্পন্ন :)


এ সম্পর্কে দম্পতিদের ধারণা: 1) উত্স ফাইলটি সংশোধন করা অনেক পরিস্থিতিতে সত্যই সম্ভব নয় fe 2) আপনি কেন সাবটাইটেল ট্র্যাক যুক্ত করা মিডিয়াপ্লেয়ারের একটি সাবটাইটেল নিয়ামকটিতে ত্রুটি সমাধান করবে তা ব্যাখ্যা করেননি didn't
ট্র্যাভিস কাস্টিলো

ত্রুটিটি হ'ল "সাবটাইটেল নিয়ামকটি ইতিমধ্যে সেট করা উচিত", সুতরাং আমি ট্র্যাক করতে একটি সাবটাইটেল যুক্ত করি যাতে এই ত্রুটি বার্তাটি এড়ানো যায়।
স্টেফানোএম 5

সাবটাইটেল বা সাবটাইটেল নিয়ামক। আপনি কি বলছেন যে কোনও ভিডিওতে সাবটাইটেল ট্র্যাক করে মিডিয়া প্লেয়ার স্বয়ংক্রিয়ভাবে একটি নিয়ামক তৈরি করে?
ট্র্যাভিস কাস্টিলো

0

এছাড়াও আপনি কেবল সেট করতে পারেন mediaPlayer.reset()এবং onDestroyএটি প্রকাশের জন্য সেট করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.