রিয়েল-টাইম বিঘ্ন কনফিগার করুন
রিয়েল-টাইম বিঘ্ন হলো এমন কিছু বৈশিষ্ট্যের সমষ্টি যা ব্যবহারকারীদের তাদের যাত্রাপথে কোনো বিঘ্ন সম্পর্কে সতর্ক করে এবং তাদের সম্মুখীন হওয়া বিঘ্নগুলো রিপোর্ট ও যাচাই করার সুযোগ দেয়। বিঘ্নের উদাহরণগুলোর মধ্যে রয়েছে যানবাহন দুর্ঘটনা, ট্র্যাফিক জ্যাম, পুলিশ ও স্পিড ক্যামেরার উপস্থিতি, নির্মাণকাজ, লেন বন্ধ থাকা এবং নির্দিষ্ট কিছু আবহাওয়ার পরিস্থিতি। এই পৃষ্ঠায় রিয়েল-টাইম বিঘ্ন বৈশিষ্ট্য এবং সেগুলোর কনফিগারেশন বিকল্পগুলো ব্যাখ্যা করা হয়েছে, যার মধ্যে কাস্টম নেভিগেশন UI ব্যবহারকারী অ্যাপগুলোর জন্য বিবেচ্য বিষয়গুলোও অন্তর্ভুক্ত রয়েছে।
রিয়েল-টাইম বিঘ্ন বৈশিষ্ট্য
নেভিগেশন SDK-তে মূল নেভিগেশন অভিজ্ঞতার অংশ হিসেবে নিম্নলিখিত রিয়েল-টাইম বিঘ্ন বৈশিষ্ট্যগুলো অন্তর্ভুক্ত রয়েছে:- রুট বরাবর বিঘ্ন সংক্রান্ত ইন্টারেক্টিভ ঘোষণা ।
- সক্রিয় নেভিগেশন চলাকালীন ভোটাধিকার সহ স্বয়ংক্রিয় বিঘ্ন সতর্কতা ।
- সক্রিয় নেভিগেশন চলাকালীন বিঘ্ন প্রতিবেদন ।
এই বৈশিষ্ট্যগুলি কনফিগারযোগ্য এবং ডিফল্টরূপে সক্রিয় থাকে। নিম্নলিখিত বিভাগগুলিতে বৈশিষ্ট্য এবং উপলব্ধ কনফিগারেশন বিকল্পগুলি সম্পর্কে আরও তথ্য দেওয়া হয়েছে।
রুট বরাবর ইন্টারেক্টিভ বিঘ্ন কলআউট
যখন কোনো অ্যাপ একটি রুট প্রদর্শন করে, তা রুটের সার্বিক চিত্রেই হোক বা সক্রিয় নেভিগেশনের সময়েই হোক, যেকোনো চলমান বাধা রুট বরাবর কলআউট হিসেবে প্রদর্শিত হয়। কলআউটগুলোতে একটি আইকন থাকে যা বাধার ধরন নির্দেশ করে।

আপনি setTrafficPromptsEnabled ব্যবহার করে রুট বরাবর বিঘ্ন সংক্রান্ত কলআউটের প্রদর্শন নিয়ন্ত্রণ করতে পারেন, যা কোনো ব্যবহারকারী বিঘ্নের কাছাকাছি এলে স্বয়ংক্রিয় সতর্কবার্তার প্রদর্শনও নিয়ন্ত্রণ করে।
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
যখন কোনো ব্যবহারকারী একটি কলআউটে ট্যাপ করেন, তখন বিঘ্নের বিবরণ প্রদর্শন করুন।
ব্যবহারকারীরা কোনো কলআউটে ট্যাপ করে বিঘ্নটি সম্পর্কে আরও তথ্যসহ একটি ইনফো কার্ড দেখতে পারেন। এই তথ্যের মধ্যে বিঘ্নের ধরন, সর্বশেষ রিপোর্ট করার সময় এবং কিছু ক্ষেত্রে, বিঘ্নটি এখনও বিদ্যমান আছে কিনা সে বিষয়ে ভোট দেওয়ার একটি বিকল্প অন্তর্ভুক্ত থাকে। ব্যবহারকারী সক্রিয় নেভিগেশনে আছেন কিনা তার উপর নির্ভর করে দুই ধরনের ইনফো কার্ড প্রদর্শিত হতে পারে এবং প্রতিটি ধরনের জন্য কনফিগারেশন বিকল্পগুলো ভিন্ন ভিন্ন হয়।
সক্রিয় নেভিগেশন শুরু করার আগে, রুট ওভারভিউতে তথ্য কার্ডগুলো কলআউট করুন।
যখন কোনো ব্যবহারকারী রুট ওভারভিউতে থাকা কোনো কলআউটে ট্যাপ করেন, তখন সক্রিয় নেভিগেশন শুরু করার আগে, বিঘ্নটি সম্পর্কে আরও তথ্যসহ একটি ইনফো কার্ড প্রদর্শিত হয়।

setTrafficIncidentCardsEnabled ব্যবহার করে আপনি রুট ওভারভিউতে থাকা বিঘ্ন সংক্রান্ত কলআউটগুলোতে ট্যাপ করে আরও তথ্য দেখার জন্য ব্যবহারকারীদের ক্ষমতা নিয়ন্ত্রণ করতে পারেন।
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
সক্রিয় নেভিগেশনের সময় তথ্য কার্ডগুলো কলআউট করুন।
সক্রিয় নেভিগেশনের সময় কোনো রুটে যখন কোনো বিঘ্নের সংকেত প্রদর্শিত হয়, তখন ব্যবহারকারীরা সেই সংকেতে ট্যাপ করে একটি তথ্য কার্ড দেখতে পারেন। এই কার্ডে বিঘ্নটির ধরন ও সর্বশেষ রিপোর্ট করার সময়সহ আরও বিস্তারিত তথ্য থাকে, এবং বিঘ্নটি এখনও বিদ্যমান আছে কিনা সে বিষয়ে ভোট দেওয়ার জন্য বাটনও থাকে। ব্যবহারকারীদের দেওয়া ভোট গুগল দ্বারা প্রক্রিয়াজাত করা হয় এবং তা অন্যান্য গুগল ম্যাপস ব্যবহারকারী ও নেভিগেশন এসডিকে ব্যবহারকারীদের জন্য ম্যাপে দেখানো হতে পারে, পাশাপাশি বিঘ্নটি দেখানো অব্যাহত থাকবে কিনা তা নির্ধারণ করতেও ব্যবহৃত হতে পারে।

সক্রিয় নেভিগেশনের সময় আপনি setTrafficPromptsEnabled ব্যবহার করে বিঘ্ন সংক্রান্ত কলআউটের প্রদর্শন এবং ট্যাপ করার যোগ্যতা নিয়ন্ত্রণ করতে পারেন, যা রুট বরাবর কলআউটের প্রদর্শন এবং কোনো ব্যবহারকারী বিঘ্নের কাছাকাছি এলে স্বয়ংক্রিয় সতর্কবার্তার প্রদর্শনও নিয়ন্ত্রণ করে।
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
সক্রিয় নেভিগেশনের সময় ভোটিং সহ স্বয়ংক্রিয় বিঘ্ন সতর্কতা
সক্রিয় নেভিগেশনের সময়, যখন কোনো ব্যবহারকারী পথের কোনো বাধার কাছাকাছি আসেন, তখন সেই বাধা সম্পর্কে তথ্যসহ একটি প্রম্পট প্রদর্শিত হয় এবং বাধাটি তখনও থাকবে কি না, সে বিষয়ে ভোট দেওয়ার জন্য বাটন দেওয়া থাকে। ব্যবহারকারীদের দেওয়া ভোট গুগল দ্বারা প্রক্রিয়াজাত করা হয় এবং তা অন্যান্য গুগল ম্যাপস ও নেভিগেশন এসডিকে ব্যবহারকারীদের জন্য ম্যাপে দেখানো হতে পারে, পাশাপাশি বাধাটি দেখানো অব্যাহত থাকবে কি না, তা নির্ধারণ করতেও ব্যবহৃত হতে পারে।

আপনি setTrafficPromptsEnabled ব্যবহার করে সক্রিয় নেভিগেশনের সময় অ্যালার্ট প্রম্পটের প্রদর্শন কনফিগার করতে পারেন, যা রুট বরাবর কলআউটের প্রদর্শনও নিয়ন্ত্রণ করে।
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
সক্রিয় নেভিগেশন চলাকালীন বিঘ্ন প্রতিবেদন
সক্রিয় নেভিগেশন মোড চলাকালীন, নেভিগেশন UI-তে একটি বাটন দেখা যায়, যা ব্যবহারকারীদের তাদের যাত্রাপথে নতুন কোনো বিঘ্ন রিপোর্ট করার সুযোগ দেয়। যখন কোনো ব্যবহারকারী বাটনটিতে ট্যাপ করেন, তখন রিপোর্ট করার জন্য উপলব্ধ বিঘ্নের ধরনসহ একটি মেনু প্রদর্শিত হয়। ব্যবহারকারীদের জমা দেওয়া রিপোর্টগুলো গুগল দ্বারা প্রক্রিয়াজাত করা হয় এবং অন্যান্য গুগল ম্যাপস ও নেভিগেশন SDK ব্যবহারকারীদের জন্য ম্যাপে দেখানো হতে পারে।


স্ট্যান্ডার্ড রিপোর্টিং বাটনটি দেখান বা লুকান
সক্রিয় নেভিগেশন চলাকালীন আপনি setReportIncidentButtonEnabled ব্যবহার করে স্ট্যান্ডার্ড রিপোর্টিং বাটনের দৃশ্যমানতা কনফিগার করতে পারেন।
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
একটি কাস্টম রিপোর্টিং বোতাম যোগ করুন
সাধারণ বিঘ্ন রিপোর্টিং বাটনের পরিবর্তে, আপনি নেভিগেশন UI-তে একটি কাস্টম রিপোর্টিং বাটন যোগ করতে পারেন। যখন ব্যবহারকারী কাস্টম বাটনটিতে ক্লিক করেন, তখন আপনি showReportIncidentsPanel মেথডটি কল করে রিপোর্টিং মেনুটি প্রদর্শন করতে পারেন। কাস্টম রিপোর্টিং বাটন যোগ করার আগে, isIncidentReportingAvailable কল করে যাচাই করে নিন যে অ্যাপটি সক্রিয় নেভিগেশনে আছে এবং ব্যবহারকারী এমন একটি দেশে আছেন যেখানে রিপোর্টিং সক্ষম করা আছে। যদি এর কোনোটি সত্য না হয়, তাহলে রিপোর্টিং মেনুটি প্রদর্শিত হবে না।
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
কাস্টম নেভিগেশন UI নিয়ে কাজ করুন
আপনার নেভিগেশন SDK-এর বাস্তবায়নে যদি কাস্টম UI এলিমেন্ট অন্তর্ভুক্ত থাকে, তাহলে দ্বন্দ্ব এড়ানোর জন্য আপনাকে রিয়েল-টাইম বিঘ্ন সৃষ্টিকারী উপাদানগুলো বিবেচনা করতে হবে।
রিপোর্টিং বোতামের অবস্থান
ডিফল্টরূপে, বিঘ্ন রিপোর্ট করার বাটনটি ম্যাপের একেবারে নিচের প্রান্তে/শেষের কোণায় অবস্থিত থাকে—বাম থেকে ডানে লেখা ভাষার জন্য ডানদিকে এবং ডান থেকে বামে লেখা ভাষার জন্য বামদিকে। কাস্টম UI এলিমেন্টের জন্য জায়গা তৈরি করতে যদি রিপোর্টিং বাটনটি সরানোর প্রয়োজন হয়, তাহলে একটিBOTTOM_END_BELOW বা FOOTER কাস্টম কন্ট্রোল যোগ করুন, যা বাটনটির অবস্থান স্ক্রিনে উপরের দিকে ঠেলে দেবে। কাস্টম কন্ট্রোলের মধ্যে আপনার নিজস্ব কাস্টম UI স্থাপন করলে এটিও নিশ্চিত হয় যে, নেভিগেশন SDK দ্বারা প্রদর্শিত যেকোনো প্রম্পট প্রদর্শনের সময় আপনার কাস্টম UI এলিমেন্টগুলোর উপরে সঠিকভাবে লেয়ার করা থাকবে। আপনি যদি কাস্টম কন্ট্রোল ব্যবহার করতে না পারেন, তাহলে সম্ভাব্য UI দ্বন্দ্ব পরিচালনা করতে প্রম্পট ভিজিবিলিটি API ব্যবহার করুন।প্রম্পট ভিজিবিলিটি এপিআই (পরীক্ষামূলক)
প্রম্পট ভিজিবিলিটি এপিআই, নেভিগেশন এসডিকে দ্বারা তৈরি UI এলিমেন্ট এবং আপনার নিজস্ব কাস্টম UI এলিমেন্টের মধ্যেকার দ্বন্দ্ব এড়াতে সাহায্য করে। এটি একটি লিসেনার যুক্ত করে, যা নেভিগেশন এসডিকে-র কোনো UI এলিমেন্ট প্রদর্শিত হওয়ার ঠিক আগে এবং এলিমেন্টটি অপসারিত হওয়ার সাথে সাথেই একটি কলব্যাক গ্রহণ করে। আপনি রিয়েল-টাইম বিঘ্ন সৃষ্টিকারী এলিমেন্ট, যেমন—ইনফো কার্ড, প্রম্পট এবং বিঘ্ন রিপোর্টিং মেনুর জন্য কলব্যাক পেতে পারেন, পাশাপাশি নেভিগেশন এসডিকে দ্বারা তৈরি অন্যান্য নোটিফিকেশনের জন্যও কলব্যাক গ্রহণ করতে পারেন।// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)