কার অ্যাপ এপিআই লেভেল ৩ থেকে শুরু করে, আপনি গাড়ির বৈশিষ্ট্য এবং সেন্সরগুলো অ্যাক্সেস করতে কার অ্যাপ লাইব্রেরি এপিআই ব্যবহার করতে পারবেন।
প্রয়োজনীয়তা
অ্যান্ড্রয়েড অটোর সাথে এপিআইগুলো ব্যবহার করতে, প্রথমে আপনার অ্যান্ড্রয়েড অটো মডিউলের build.gradle ফাইলে androidx.car.app:app-projected ডিপেন্ডেন্সিটি যোগ করুন। অ্যান্ড্রয়েড অটোমোটিভ ওএস-এর জন্য, আপনার অ্যান্ড্রয়েড অটোমোটিভ ওএস মডিউলের build.gradle ফাইলে androidx.car.app:app-automotive ডিপেন্ডেন্সিটি যোগ করুন।
এছাড়াও, আপনার AndroidManifest.xml ফাইলে, আপনি যে গাড়ির ডেটা ব্যবহার করতে চান তার জন্য প্রয়োজনীয় প্রাসঙ্গিক অনুমতিগুলো ঘোষণা করতে হবে। এই অনুমতিগুলো ব্যবহারকারীর দ্বারা আপনাকে অবশ্যই প্রদান করতে হবে। প্ল্যাটফর্ম-নির্ভর ফ্লো তৈরি না করে, আপনি Android Auto এবং Android Automotive OS-এ একই কোড ব্যবহার করতে পারেন। তবে, প্রয়োজনীয় অনুমতিগুলো ভিন্ন।
গাড়ির তথ্য
এই সারণিতে CarInfo API-তে প্রদত্ত বৈশিষ্ট্যসমূহ এবং সেগুলি ব্যবহার করার জন্য প্রয়োজনীয় অনুমতিগুলির বর্ণনা দেওয়া হয়েছে।
| পদ্ধতি | বৈশিষ্ট্য | অনুমতিসমূহ: অ্যান্ড্রয়েড অটো | অনুমতিসমূহ: AAOS | গাড়ির অ্যাপ এপিআই |
|---|---|---|---|---|
fetchModel | প্রস্তুতকারক, মডেল, বছর | android.car.permission.CAR_INFO | ৩ | |
fetchEnergyProfile | ইভি সংযোগকারী প্রকার, জ্বালানির প্রকার | com.google.android.gms.permission.CAR_FUEL | android.car.permission.CAR_INFO | ৩ |
fetchExteriorDimensionsডেটা শুধুমাত্র কিছু AAOS যানবাহনে উপলব্ধ, যেগুলিতে API 30 বা তার পরবর্তী সংস্করণ ব্যবহৃত হয়। | বাহ্যিক মাত্রা | প্রযোজ্য নয় | android.car.permission.CAR_INFO | ৭ |
| টোল কার্ডের অবস্থা, টোল কার্ডের ধরন | ৩ | |||
| ব্যাটারির স্তর, জ্বালানির স্তর, জ্বালানির স্তর কম, অবশিষ্ট রেঞ্জ | com.google.android.gms.permission.CAR_FUEL | android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS | ৩ | |
| প্রকৃত গতি, প্রদর্শিত গতি (গাড়ির ক্লাস্টার ডিসপ্লেতে দেখানো) | com.google.android.gms.permission.CAR_SPEED | android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS | ৩ | |
| ওডোমিটার দূরত্ব | com.google.android.gms.permission.CAR_MILEAGE | গুগল প্লে থেকে ইনস্টল করা অ্যান্ড্রয়েড অটোমোটিভ ওএস অ্যাপগুলির জন্য ডেটা উপলব্ধ নয়। | ৩ |
উদাহরণস্বরূপ, অবশিষ্ট পরিসর পেতে, একটি CarInfo অবজেক্ট ইনস্ট্যানশিয়েট করুন, তারপর একটি OnCarDataAvailableListener তৈরি এবং রেজিস্টার করুন:
কোটলিন
val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo
val listener = OnCarDataAvailableListener<EnergyLevel> { data ->
if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) {
val rangeRemaining = data.rangeRemainingMeters.value
} else {
// Handle error
}
}
carInfo.addEnergyLevelListener(carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener)
জাভা
CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();
OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
float rangeRemaining = data.getRangeRemainingMeters().getValue();
} else {
// Handle error
}
};
carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);
গাড়ির ডেটা সব সময় পাওয়া যাবে, এমনটা ধরে নেবেন না। যদি কোনো ত্রুটি দেখা দেয়, তাহলে আপনার অনুরোধ করা ডেটা কেন পাওয়া যায়নি তা আরও ভালোভাবে বোঝার জন্য সেটির স্ট্যাটাস পরীক্ষা করুন। CarInfo ক্লাসের সংজ্ঞা সম্পর্কে আরও জানতে, রেফারেন্স ডকুমেন্টেশন দেখুন।
গাড়ির সেন্সর
CarSensors ক্লাসটি আপনাকে গাড়ির অ্যাক্সেলেরোমিটার, জাইরোস্কোপ, কম্পাস এবং অবস্থানের ডেটা অ্যাক্সেস করার সুযোগ দেয়। এই মানগুলির প্রাপ্যতা OEM-এর উপর নির্ভর করতে পারে। অ্যাক্সেলেরোমিটার, জাইরোস্কোপ এবং কম্পাস থেকে প্রাপ্ত ডেটার ফরম্যাটটি SensorManager API থেকে প্রাপ্ত ডেটার ফরম্যাটের মতোই।
উদাহরণস্বরূপ, যানবাহনটির গতিপথ পরীক্ষা করতে:
কোটলিন
val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors
val listener = OnCarDataAvailableListener<Compass> { data ->
if (data.orientations.status == CarValue.STATUS_SUCCESS) {
val orientation = data.orientations.value
} else {
// Data not available, handle error
}
}
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener)
জাভা
CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();
OnCarDataAvailableListener<Compass> listener = (data) -> {
if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
List<Float> orientations = data.getOrientations().getValue();
} else {
// Data not available, handle error
}
};
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
listener);
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);
গাড়ি থেকে অবস্থানের ডেটা অ্যাক্সেস করতে, আপনাকে android.permission.ACCESS_FINE_LOCATION পারমিশনটিও ডিক্লেয়ার এবং রিকোয়েস্ট করতে হবে।
পরীক্ষা
অ্যান্ড্রয়েড অটোতে পরীক্ষা করার সময় সেন্সর ডেটা সিমুলেট করতে, ডেস্কটপ হেড ইউনিট গাইডের সেন্সর এবং সেন্সর কনফিগারেশন বিভাগগুলি দেখুন। অ্যান্ড্রয়েড অটোমোটিভ ওএস-এ পরীক্ষা করার সময় সেন্সর ডেটা সিমুলেট করতে, অ্যান্ড্রয়েড অটোমোটিভ ওএস এমুলেটর গাইডের এমুলেট হার্ডওয়্যার স্টেট অংশটি দেখুন।