অডিও গ্লাস এবং ডিসপ্লে গ্লাসের জন্য হার্ডওয়্যার অনুমতি অনুরোধ করুন

প্রযোজ্য এক্সআর ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরনের এক্সআর ডিভাইসগুলির জন্য অভিজ্ঞতা তৈরি করতে সাহায্য করে।
অডিও এবং
ডিসপ্লে গ্লাস

ফোনের মতোই, অডিও গ্লাস এবং ডিসপ্লে গ্লাসের ক্যামেরা ও মাইক্রোফোনের মতো সংবেদনশীল হার্ডওয়্যার অ্যাক্সেস করার জন্য ব্যবহারকারীর সুস্পষ্ট অনুমতির প্রয়োজন হয়। এগুলোকে গ্লাস-নির্দিষ্ট অনুমতি হিসেবে বিবেচনা করা হয়, এবং আপনার অ্যাপকে রানটাইমে এগুলোর জন্য অনুরোধ করতে হবে, এমনকি যদি ফোনে সংশ্লিষ্ট অনুমতিগুলো আগে থেকেই তার কাছে থাকে।

আপনার অ্যাপের ম্যানিফেস্টে অনুমতিগুলো ঘোষণা করুন।

অনুমতির অনুরোধ করার আগে, আপনাকে অবশ্যই আপনার অ্যাপের ম্যানিফেস্ট ফাইলে <uses-permission> এলিমেন্ট ব্যবহার করে তা ঘোষণা করতে হবে। অনুমতিটি ফোনের জন্য হোক বা চশমা-নির্দিষ্ট কোনো ফিচারের জন্য হোক, এই ঘোষণাটি একই থাকে, কিন্তু চশমা-নির্দিষ্ট হার্ডওয়্যার বা কার্যকারিতার জন্য আপনাকে অবশ্যই স্পষ্টভাবে এর অনুরোধ করতে হবে।

<manifest ...>
    <!-- Only declare permissions that your app actually needs. In this example,
    we declare permissions for the camera. -->
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

অনুমতি লঞ্চারটি নিবন্ধন করুন

অডিও গ্লাস এবং ডিসপ্লে গ্লাসের জন্য অনুমতি অনুরোধ করতে, প্রথমে আপনাকে ActivityResultLauncher এর সাথে ProjectedPermissionsResultContract মেথডটি ব্যবহার করে পারমিশন লঞ্চারটি রেজিস্টার করতে হবে।

// Register the permissions launcher using the ProjectedPermissionsResultContract.
private val requestPermissionLauncher: ActivityResultLauncher<List<ProjectedPermissionsRequestParams>> =
    registerForActivityResult(ProjectedPermissionsResultContract()) { results ->
        if (results[Manifest.permission.CAMERA] == true) {
            isPermissionDenied = false
            initializeGlassesFeatures()
        } else {
            // Handle permission denial.
            isPermissionDenied = true
        }
    }

কোড সম্পর্কে মূল বিষয়গুলো

  • কোডটি ProjectedPermissionsResultContract মেথড ব্যবহার করে একটি ActivityResultLauncher তৈরি করে। কলব্যাকটি পারমিশনের নাম এবং সেগুলোর মঞ্জুর অবস্থার একটি ম্যাপ গ্রহণ করে।
  • আপনার অ্যাপের জন্য কোন কোন অনুমতির প্রয়োজন, তা আপনাকে নির্দিষ্ট করে দিতে হবে, যেমন Manifest.permission.CAMERA অথবা Manifest.permission.RECORD_AUDIO

অনুরোধ ফাংশন তৈরি করুন

এরপরে, আপনি এমন একটি ফাংশন তৈরি করবেন যা আপনার অ্যাপের পারমিশন লঞ্চার ব্যবহার করে রানটাইমে ব্যবহারকারীর কাছ থেকে অনুমতি চাইবে।

private fun requestHardwarePermissions() {
    val params = ProjectedPermissionsRequestParams(
        permissions = listOf(Manifest.permission.CAMERA),
        rationale = "Camera access is required to overlay digital content on your physical environment."
    )
    requestPermissionLauncher.launch(listOf(params))
}

কোড সম্পর্কে মূল বিষয়গুলো

  • requestHardwarePermissions ফাংশনটি একটি ProjectedPermissionsRequestParams অবজেক্ট তৈরি করে। এই অবজেক্টটিতে আপনার অ্যাপের প্রয়োজনীয় পারমিশনগুলোর তালিকা এবং ব্যবহারকারীর কাছে এর যৌক্তিকতা একত্রিত থাকে। আপনার অ্যাপের কেন এই পারমিশনগুলো প্রয়োজন, তা ব্যাখ্যা করার জন্য যৌক্তিকতাটি স্পষ্ট এবং সংক্ষিপ্ত করুন।
  • লঞ্চারে launch কল করলে অনুমতি অনুরোধের ব্যবহারকারী প্রবাহটি সক্রিয় হয়।
  • আপনার অ্যাপের উচিত লঞ্চারের কলব্যাকে মঞ্জুর এবং প্রত্যাখ্যাত উভয় ফলাফলই সুষ্ঠুভাবে পরিচালনা করা।

অনুমতি যাচাই ফাংশন তৈরি করুন

এরপরে, আপনি এমন একটি ফাংশন তৈরি করবেন যা যাচাই করতে পারবে যে ব্যবহারকারী আপনার অ্যাপকে অনুমতি দিয়েছেন কি না।

private fun hasCameraPermission(): Boolean {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) ==
            PackageManager.PERMISSION_GRANTED
}

অনুমতি অনুরোধের লজিক যোগ করুন

এবং সবশেষে, এমন লজিক তৈরি করুন যা এই ফাংশনগুলো ব্যবহার করে রানটাইমে অনুমতি যাচাই ও অনুরোধ করবে।

if (hasCameraPermission()) {
    initializeGlassesFeatures()
} else {
    requestHardwarePermissions()
}

কোড সম্পর্কে মূল বিষয়গুলো

  • যদি ব্যবহারকারী ইতিমধ্যেই আপনার অ্যাপকে প্রয়োজনীয় অনুমতি দিয়ে থাকেন, তাহলে আপনার অ্যাপের অভিজ্ঞতা শুরু করার জন্য initializeGlassesFeatures ফাংশনটি কল করা হয়। এই ফাংশনটি আপনার অ্যাপের এআই গ্লাসের অ্যাক্টিভিটির অংশ হিসেবে সংজ্ঞায়িত করা থাকে।

অনুমতি অনুরোধের ব্যবহারকারী প্রবাহটি বুঝুন

যখন আপনি ProjectedPermissionsResultContract মেথডটি ব্যবহার করে কোনো অনুমতির অনুরোধ চালু করেন, তখন সিস্টেমটি চশমা এবং ফোন উভয়ের মধ্যে একটি সমন্বিত ব্যবহারকারী প্রবাহ শুরু করে।

অনুমতি প্রদান প্রক্রিয়া চলাকালীন, আপনার অ্যাপ এবং ব্যবহারকারী যা প্রত্যাশা করতে পারেন তা নিচে দেওয়া হলো:

  1. চশমায় : প্রজেক্টেড ডিভাইসে (চশমায়) একটি কার্যকলাপ প্রদর্শিত হয়, যা ব্যবহারকারীকে চালিয়ে যাওয়ার জন্য তার ফোনের দিকে তাকাতে নির্দেশ দেয়।

  2. ফোনে : একই সাথে, হোস্ট ডিভাইসে (ফোনে) একটি কার্যক্রম চালু হয়। এই স্ক্রিনে আপনার দেওয়া কারণ দর্শানোর স্ট্রিংটি প্রদর্শিত হয় এবং ব্যবহারকারীকে এগিয়ে যাওয়ার বা বাতিল করার বিকল্প দেওয়া হয়।

  3. ফোনে : যদি ব্যবহারকারী কারণটি গ্রহণ করেন, তাহলে ফোনে একটি পরিবর্তিত অ্যান্ড্রয়েড সিস্টেম পারমিশন ডায়ালগ বক্স প্রদর্শিত হয়, যা ব্যবহারকারীকে জানায় যে তিনি চশমার জন্য অনুমতি দিচ্ছেন (ফোনের জন্য নয়), এবং ব্যবহারকারী আনুষ্ঠানিকভাবে অনুমতিটি মঞ্জুর বা প্রত্যাখ্যান করতে পারেন।

  4. ফলাফল গ্রহণ : ব্যবহারকারী তার চূড়ান্ত পছন্দ করার পর, ফোন এবং চশমা উভয়ের কার্যকলাপ বন্ধ হয়ে যায়। এরপর আপনার ActivityResultLauncher কলব্যাকটি প্রতিটি অনুরোধ করা অনুমতির মঞ্জুরকৃত অবস্থা সম্বলিত একটি ম্যাপ সহ আহ্বান করা হয়।