বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

আপনার অ্যাপের অডিও প্লেব্যাক নিয়ন্ত্রণ করতে হার্ডওয়ার প্লেব্যাক নিয়ন্ত্রণ কি ব্যবহার করুন

মিডয়িা প্লেব্যাক বাটন, যেমন প্লে, পজ, স্টপ, স্কিপ এবং প্রিভিয়াস কিছ’ হ্যান্ডসেটে আছে এবং অনেক সংযুক্ত বা বেতার হেডসেটেও আছে। যখন একজন ইউজার এই হার্ডওয়ার কি এর একটি প্রেস করে, সিস্টেমটি ACTION MEDIA BUTTON একশন সহকারে একটি ইনটেন্ট সম্প্রচার করে।

মিডিয়া বাটন ক্লিক এ রেসপন্স করতে, আপনার প্রয়োজন আপনার মেনিফেস্টে একটি BroadcastReceiver রেজিস্টার করা যা একশন ব্রডকাস্ট শুনে থাকে যা নিম্নে দেয়া আছে।

<receiver android:name=".RemoteControlReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

রিসিভার বাস্তবায়ন তার নীজেরই বের হওয়া দরকার যে কি ব্রডকাস্ট ঘটাতে প্রেস করা হয়। Intent এটা EXTRA KEY EVENT কি’র অধীনে অন্তর্ভূক্ত করে, যখন KeyEvent ক্লাস একটি তালিকা KEYCODE MEDIA স্টাটিক কনসটেন্ট অন্তর্ভূক্ত করে যা প্রতিটা সম্ভাব্য মিডিয়া বাটন পরিবেশন করে, যেমন KEYCODE MEDIA PLAY PAUSE এবং KEYCODE MEDIA NEXT ।

নিম্নের খন্ডাংশটি দেখায় যে কীভাবে মিডিয়া বাটন প্রেসড সরিয়ে ফেলতে হয় এবং সে অনুসারে মিডিয়া প্লেব্যাক কে প্রভাবিত করতে হয়।

public class RemoteControlReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
            KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
                // Handle key press.
            }
        }
    }
}

কারন বহুমূখি (মাল্টিপল) অ্যাপলিকেশন মিডিয়া বাটন প্রেসেস এরজন্য শুনতে চাইতে পারে, আপনাকে অবশ্যই প্রোগ্রামেটিক্যালি নিয়ন্ত্রণ করতে হবে যখন আপনার অ্যাপের মিডিয়া বাটন প্রেস ইভেন্ট গ্রহন করা উচিত।

AudioManager ব্যবহার করে আপনার মিডিয়া বাটন ইভেন্ট রিসিভার রেজিস্টার এবং ডিরেজিস্টার করতে নীচের কোডটি আপনার অ্যাপের মধ্যে ব্যবহৃত হতে পারে । যখন রেজিস্টার করা হয়, আপনার ব্রডকাস্ট রিসিভার হচ্ছে সকল মিডিয়া বাটন ব্রডকাস্টের এক্সক্লুসিভ রিসিভার।

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...

// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...

// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);

সাধারণভাবে, অ্যাপের উচিত তাদের অধিকাংশ রিসিভার আনরেজিস্টার করা যখনই তারা নিস্ক্রিয় বা অদৃশ্য হয় (যেমন, onStop()কলব্যাকের সময়কালে)। কিন্তু এটা মিডিয়া প্লেব্যাক অ্যাপসের জন্য সহজ নয়-কার্যত, মিডিয়া প্লেব্যাক বাটনে রেসপন্স করা হচ্ছে সবচেয়ে গুরুত্বপূর্ণ যখন আপনার অ্যাপলিকেশন দৃশ্যমান নয় এবং সেইজন্য অন-স্ক্রিন ইউজার ইন্টারফেস কর্তৃক নিয়ন্ত্রিত হতে পারে না।

একটি ভালো অ্যাপ্রোচ হচ্ছে মিডিয়া বাটন ইভেন্ট রিসিভার রেজিস্টার এবং আনরেজিস্টার করা যখন আপনার অ্যাপলিকেশন অডিও ফোকাসটি অর্জন করে বা হারিয়ে ফেলে। এটা পরবর্তী অনুশীলনীতে বিস্তারিতভাবে আলোচনা করা হয়েছে।