AIS-Catcher – এর মাথা নষ্ট করা ধামাকা! সস্তা RTL SDR Dongle আর OTG Cable দিয়ে Offline Vessel Tracking এবং Dual Channel AIS Receiver এর এই অবিশ্বাস্য পাওয়ার পুরো স্মার্টফোন মার্কেট কাঁপিয়ে দেওয়া এক জাদুকরী দানব!

Level 31
সনিক টিউনার, টেকটিউনস, গাইবান্ধা

সমুদ্রের বিশাল নীল জলরাশিতে ভেসে বেড়ানো জাহাজগুলোর গতিবিধি পর্যবেক্ষণ করা বা Vessel Tracking করা এখন আর কেবল বড় বড় কন্ট্রোল রুমের কাজ নয়। প্রযুক্তির এই যুগে আপনার পকেটে থাকা সাধারণ Android Phone-টিই হয়ে উঠতে পারে একটি শক্তিশালী রাডার স্টেশন। আজ আমরা আলোচনা করব AIS-Catcher নামক একটি অসাধারণ App নিয়ে।

এই App-টি মূলত আপনার ফোনকে একটি Portable Dual Channel AIS Receiver-এ রূপান্তর করে। এর সবচেয়ে বড় চমক হলো, এর জন্য খুব দামী কোনো যন্ত্রপাতির প্রয়োজন নেই। একটি সাশ্রয়ী DVB-T Dongle এবং একটি OTG Cable থাকলেই আপনি কেল্লাফতে করতে পারবেন!

AIS-Catcher কী এবং এটি কীভাবে কাজ করে?

AIS-Catcher

সাধারণত জাহাজের অবস্থান জানার জন্য AIS (Automatic Identification System) ব্যবহার করা হয়। AIS-Catcher App-টি ব্যবহার করে আপনি আপনার Android Device-এর মাধ্যমেই সমুদ্রের বা নদীর আশেপাশে থাকা Vessels থেকে পাঠানো AIS Signals সরাসরি রিসিভ করতে পারবেন। এটি একটি Cheap DVB-T Dongle (যা মূলত RTL SDR Dongle হিসেবে পরিচিত) এবং একটি OTG Cable ব্যবহার করে আপনার Device-কে একটি পোর্টেবল ডুয়াল চ্যানেল রিসিভারে পরিণত করে।

এর বিশেষ কিছু সুবিধা নিচে আলোচনা করা হলো:

  • Offline Tracking: এই App-টির অন্যতম শক্তি হলো এটি সম্পূর্ণ Offline-এ কাজ করতে পারে। অর্থাৎ, আপনি যদি সমুদ্রের মাঝখানে এমন কোথাও থাকেন যেখানে ইন্টারনেটের কোনো নামগন্ধ নেই, সেখানেও এটি সিগন্যাল ধরতে সক্ষম।
  • No Additional Drivers: App-টি সরাসরি আপনার USB Device অ্যাক্সেস করে। ফলে আলাদা করে কোনো Drivers ইন্সটল করার বাড়তি ঝামেলা নেই।
  • Data Integration: App থেকে পাওয়া ডাটা আপনি UDP-এর মাধ্যমে Boat Beacon বা OpenCPN-এর মতো Plotting Apps-এ পাঠাতে পারেন। এটি ভ্রমণের সময় আপনার জন্য একটি চমৎকার Lightweight AIS Receiver System হিসেবে কাজ করবে।
  • Short Manual: ব্যবহারকারীদের সুবিধার জন্য এতে একটি সংক্ষিপ্ত নির্দেশিকা বা Short Manual দেখার ব্যবস্থাও রয়েছে।

AIS-Catcher

অফিসিয়াল ওয়েবসাইট @ AIS-Catcher

কীভাবে AIS-Catcher ব্যবহার করবেন?

কীভাবে AIS-Catcher ব্যবহার করবেন?

১. প্রথমে আপনার অ্যান্ড্রয়েড স্মার্টফোনে GitHub থেকে AIS-Catcher অ্যাপটি ডাউনলোড করে ইন্সটল করুন।

AIS-Catcher অ্যাপটি ডাউনলোড করে ইন্সটল

২. অ্যাপটি ওপেন করে ম্যাপে আপনার নিজের অবস্থান এবং আশেপাশের এলাকা নিখুঁতভাবে দেখার জন্য Location Access বা Map Positioning পারমিশন দিন।

Location Access বা Map Positioning পারমিশন

৩. অ্যাপটি ইন্সটল হওয়ার পর একটি সাশ্রয়ী DVB-T Dongle (বা RTL SDR Dongle) এবং একটি OTG Cable ব্যবহার করে আপনার স্মার্টফোনটির সাথে ডঙ্গলটি কানেক্ট করুন। অ্যাপটি সরাসরি আপনার ইউএসবি ডিভাইস (USB Device) অ্যাক্সেস করবে, তাই আলাদা কোনো ড্রাইভার ইন্সটল করার প্রয়োজন নেই। তারপর, এখানে থাকা Start বাটনে ক্লিক করতে হবে।

Start বাটনে ক্লিক

এবার ইন্টারনেট সংযোগ ছাড়াই (Offline Tracking) সম্পূর্ণ অফলাইনে আপনার আশেপাশের সমুদ্র বা নদীতে থাকা জাহাজগুলো (Vessels) থেকে পাঠানো AIS সিগন্যাল রিসিভ করা শুরু করতে পারবেন। এই অ্যাপটি আপনার ফোনকে একটি পোর্টেবল ডুয়াল চ্যানেল রিসিভারে (Portable Dual Channel AIS Receiver) পরিণত করবে।

Hardware Compatibility এবং Installation Guide

Hardware Compatibility এবং Installation Guide

এই প্রোজেক্টটি সফলভাবে চালাতে আপনার কিছু ছোটখাটো হার্ডওয়্যার লাগবে। এটি মূলত DVB-T Dongles এবং AirSpy Devices-এর সাথে চমৎকারভাবে কাজ করে। এই ডিভাইসগুলোকে আপনার ফোনের সাথে যুক্ত করতে একটি OTG Cable প্রয়োজন হবে। এটি অত্যন্ত Inexpensive বা সস্তা একটি সমাধান।

ইন্সটলেশনের ক্ষেত্রে আপনি চাইলে এখান থেকে সরাসরি APKs ডাউনলোড করতে পারেন। তবে App-টি যাতে সবসময় Up-to-Date থাকে, সেজন্য ডেভেলপাররা একটি F-Droid Client ব্যবহারের পরামর্শ দেন। কিছু ক্লায়েন্ট যেমন Aurora Store, Neo Store, অথবা Sunil-এর তৈরি ক্লায়েন্টে এই Repo ডিফল্টভাবেই চালু থাকে। তবে আপনি যদি অন্য কোনো ক্লায়েন্ট (যেমন অফিসিয়াল F-Droid) ব্যবহার করেন, তবে আপনাকে ম্যানুয়ালি এই Repo যুক্ত করে নিতে হবে। এটি কীভাবে করবেন তার জন্য প্ল্যাটফর্মের উপরের অংশে একটি Hint বা সংকেত দেওয়া আছে।

App-টি নিচের ABIs বা সিস্টেম আর্কিটেকচারগুলো সাপোর্ট করে:

  • Arm64-V8a
  • Armeabi-V7a
  • X86
  • X86_64

Permissions এবং টেকনিক্যাল আর্কিটেকচার

Permissions এবং টেকনিক্যাল আর্কিটেকচার

AIS-Catcher সঠিকভাবে পরিচালনা করার জন্য আপনার কাছে কিছু Permissions চাওয়া হতে পারে, যা মূলত ম্যাপের সাথে সম্পর্কিত:

  • Location Access: ম্যাপে আপনার নিজের অবস্থান বা Location দেখানোর জন্য।
  • Map Positioning: ম্যাপে আপনি ঠিক কোথায় আছেন তা নির্ভুলভাবে ফুটিয়ে তোলার জন্য।

Technical Libraries এবং Backend Powerhouse: একটি ইন-ডেপথ বিশ্লেষণ

Technical Libraries এবং Backend Powerhous

AIS-Catcher App-টিকে স্থিতিশীল এবং শক্তিশালী করার জন্য ডেভেলপাররা পর্দার আড়ালে প্রচুর আধুনিক Technical Tools এবং Libraries ব্যবহার করেছেন। প্রতিটি তথ্যের পুঙ্খানুপুঙ্খ বিবরণ নিচে দেওয়া হলো:

১. Development Framework এবং Core Utilities

App-টির প্রাণ হলো Android Support Library। এটি আসলে অনেকগুলো লাইব্রেরির একটি বিশাল কালেকশন, যা মূলত Compatibility (পুরোনো ডিভাইসের সাথে সামঞ্জস্যতা) এবং Component Libraries (App-এর বিভিন্ন অংশ পরিচালনা)—এই দুই ভাগে বিভক্ত। এর বিস্তারিত জানতে Understanding the Android Support Library গাইডটি সহায়ক।

অন্যান্য গুরুত্বপূর্ণ ইউটিলিটিগুলো হলো:

  • AppCompat: এটি Base Activity Subclass এবং App-এর গঠন বা Composable Structure তৈরিতে মূল ভূমিকা রাখে।
  • Annotation: এটি Android Jetpack-এর একটি অংশ যা কোডিংয়ের নির্দেশনাবলী বহন করে।
  • Arch Core Runtime: এটি LiveData এবং JUnit Test Rules-এর মতো কাজের জন্য একটি হেল্পার হিসেবে কাজ করে।
  • Core-Ktx: আধুনিক সব Android Features-কে পুরোনো ভার্সনে সাপোর্ট দিতে এটি ব্যবহৃত হয়।
  • Concurrent Futures: Main Thread থেকে টাস্কগুলো সরিয়ে নিয়ে Coroutines এবং ListenableFuture-এর সুবিধা দেওয়ার জন্য এটি একটি AndroidX Library

২. ইউজার ইন্টারফেস (UI) এবং এনিমেশন

App-এর ইন্টারফেসকে প্রাণবন্ত এবং ল্যাগ-মুক্ত রাখতে অনেকগুলো উন্নত UI Component ব্যবহার করা হয়েছে:

  • Asynclayoutinflater: এটি ফোনের প্রসেসরের ওপর চাপ না দিয়ে Layouts-কে Asynchronously Inflate করে, ফলে UI-তে কোনো Jank বা ল্যাগ অনুভূত হয় না।
  • CardView: এতে Material Design Card Pattern ব্যবহার করা হয়েছে যা দেখতে খুব সুন্দর এবং এতে Round CornersDrop Shadows রয়েছে।
  • ConstraintLayout: এটি একটি লাইব্রেরি যা Nested Views কমিয়ে লেআউটকে আরও গতিশীল করে।
  • CoordinatorLayout: এটি AppBarLayout এবং FloatingActionButton-এর মতো উইজেটগুলোকে সঠিক জায়গায় ধরে রাখে।
  • DrawerLayout: এতে একটি Material Design Drawer Widget রয়েছে যা ব্যবহারের অভিজ্ঞতা উন্নত করে।
  • Dynamic Animation: ফিজিক্স-ভিত্তিক এনিমেশন তৈরির জন্য এটি একটি Physics-Based Animation API
  • Emoji: এটি Kitkat এবং নতুন ডিভাইসে Emoji Compatibility নিশ্চিত করে যাতে ফাঁকা বক্সের বদলে সঠিক ইমোজি দেখা যায়।
  • Fragment: User Interface-এর অংশগুলোকে Reusable Components-এ রূপান্তর করতে সাহায্য করে।
  • Interpolator: পুরোনো প্ল্যাটফর্মে Animation Interpolators ব্যবহার করতে সাহায্য করে।
  • SwipeRefreshLayout: স্ক্রিনে থাকা ডেটা রিফ্রেশ করার জন্য Swipe-to-Refresh UI Pattern এখানে পাওয়া যাবে।
  • VectorDrawable: নিখুঁত Vector Graphics রেন্ডার করার জন্য এই AndroidX Library যুক্ত করা হয়েছে।

৩. ডাটা ম্যানেজমেন্ট এবং ব্যাকএন্ড ইউটিলিটি

App-এর কার্যকারিতা বজায় রাখতে নিচের Utility Libraries-গুলো ব্যবহৃত হয়েছে:

  • Lifecycle: এটি অন্য কোনো কম্পোনেন্টের (যেমন Activities বা Fragments) বর্তমান অবস্থা বা Lifecycle Status অনুযায়ী কাজ করে।
  • Loader: এটি UI-এর জন্য ডেটা লোড করতে সাহায্য করে যা এমনকি Configuration Changes-এর পরেও টিকে থাকে।
  • LocalBroadcastManager: এটি একটি Application-Wide Event Bus হিসেবে কাজ করে যা লেয়ার ভায়োলেশন মেনে চলে; অর্থাৎ যেকোনো কম্পোনেন্ট অন্য যেকোনো কম্পোনেন্টের Events শুনতে পারে।
  • Media: অন্যান্য App-এর সাথে Media Contents এবং কন্ট্রোল শেয়ার করার সুবিধা দেয়।
  • Preference: কোনো স্টোরেজ বা UI ম্যানেজ করার ঝামেলা ছাড়াই Interactive Settings Screens তৈরি করতে সাহায্য করে।
  • Print: ফটো, ডকুমেন্ট এবং অন্যান্য গ্রাফিক্স প্রিন্ট করার জন্য ব্যবহৃত লাইব্রেরি।
  • Paging: খুব বড় ডেটা সেট যাতে মেমোরি খরচ কমিয়ে দ্রুত দেখানো যায়, সেটি এটি নিশ্চিত করে।
  • SlidingPaneLayout: Sliding Pane UI Pattern ইমপ্লিমেন্ট করার জন্য ব্যবহৃত হয়।
  • VersionedParcelable: প্রসেসগুলোর মধ্যে ডেটা আদান-প্রদানের জন্য এটি একটি নিরাপদ এবং কমপ্যাক্ট Binary Serialization Format প্রদান করে।

৪. আধুনিক ফিচার এবং ডেভেলপমেন্ট এইড

App-টি শুধু যে কাজের তা নয়, এটি তৈরিতে ডেভেলপারদের জন্যও ছিল অনেক সুবিধা:

  • ProfileInstaller: এটি ART (Android Runtime) -কে আগেভাগে App-টি কম্পাইল করতে সাহায্য করে, যাতে App চলার গতি বেড়ে যায়।
  • Layout Inspector: Android Studio-র Live Layout Inspector-এ কাস্টম ভিউয়ের Attributes প্রদর্শন করতে সাহায্য করে।
  • Startup: App খোলার সময় প্রয়োজনীয় কম্পোনেন্টগুলো দ্রুত Initialize করতে এটি সাহায্য করে।
  • Tracing: সিস্টেমের Trace Buffer-এ Trace Events লিখে রাখতে এটি ব্যবহৃত হয়।
  • Transition: লেআউটের শুরুতে এবং শেষে মুভমেন্ট এনিমেট করে।
  • Window: এটি নতুন ধরনের Device Form Factors যেমন Foldable Devices এবং Multi-Window Environments-এর জন্য সাপোর্ট প্রদান করে (API 14+)।
  • Material: এটি Material Design Guidelines অনুসরণ করে App তৈরি করতে সহায়তা করে।

৫. ডাটা হ্যান্ডলিং এবং এক্সটারনাল লাইব্রেরি

App-টিতে Google Core Libraries for Java 6+ (Guava) ব্যবহার করা হয়েছে, যা Multimap, Immutable Collections, Graph Library, Functional Types, In-Memory Cache, এবং Concurrency, I/O, Hashing, Primitives, Reflection, String Processing সংক্রান্ত জটিল কাজগুলো সহজ করে। এছাড়াও Java কোডে সাধারণ ভুল ধরার জন্য Error Prone নামক Static Analysis Tool ব্যবহৃত হয়েছে। Kotlin Coroutines ব্যবহারের জন্য এতে ডেডিকেটেড সাপোর্ট রয়েছে। যারা ডেভেলপার, তাদের জন্য এতে IDE Integration-এর সুবিধাও রাখা হয়েছে।

পরিশেষে, জাহাজ ট্র্যাকিং বা AIS Monitoring-এর জন্য AIS-Catcher একটি অসাধারণ এবং বৈপ্লবিক টুল। এটি Viewpager2 ব্যবহার করে যা পুরোনো ViewPager-এর সমস্যা যেমন Right-to-Left Layout Support, Vertical Orientation, এবং Modifiable Fragment Collections সমাধান করে। আপনি যদি আপনার Android Phone, ChatGPT, iPhone বা MacBook ব্যবহারকারী হন এবং প্রযুক্তি নিয়ে এক্সপেরিমেন্ট করতে ভালোবাসেন, তবে এই Lightweight System-টি আপনার সংগ্রহে থাকা উচিত।

Level 31

আমি মো আতিকুর ইসলাম। সনিক টিউনার, টেকটিউনস, গাইবান্ধা। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 5 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 773 টি টিউন ও 94 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 67 ফলোয়ার আছে এবং আমি টেকটিউনসে 3 টিউনারকে ফলো করি।

“আল্লাহর ভয়ে তুমি যা কিছু ছেড়ে দিবে, আল্লাহ্ তোমাকে তার চেয়ে উত্তম কিছু অবশ্যই দান করবেন।” —হযরত মোহাম্মদ (সঃ)


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস