আরও সংবেদনশীল তথ্যের অ্যাক্সেস ব্যাখ্যা করুন

অবস্থান, মাইক্রোফোন এবং ক্যামেরা সম্পর্কিত অনুমতিগুলি আপনার অ্যাপকে ব্যবহারকারীদের সম্পর্কে বিশেষভাবে সংবেদনশীল তথ্যে অ্যাক্সেস দেয়। প্ল্যাটফর্মটিতে এই পৃষ্ঠায় বর্ণিত বেশ কয়েকটি প্রক্রিয়া রয়েছে, যা ব্যবহারকারীদের অবগত থাকতে এবং কোন অ্যাপগুলি অবস্থান, মাইক্রোফোন এবং ক্যামেরা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে সহায়তা করে।

এই গোপনীয়তা-সংরক্ষণকারী সিস্টেম বৈশিষ্ট্যগুলি আপনার অ্যাপ কীভাবে অবস্থান, মাইক্রোফোন এবং ক্যামেরা সম্পর্কিত অনুমতিগুলি পরিচালনা করে তা প্রভাবিত করবে না, যতক্ষণ না আপনি গোপনীয়তার সর্বোত্তম অনুশীলনগুলি অনুসরণ করেন

বিশেষ করে, আপনার অ্যাপে নিম্নলিখিতগুলি নিশ্চিত করুন:

  • ব্যবহারকারী আপনার অ্যাপে CAMERA অনুমতি না দেওয়া পর্যন্ত ডিভাইসের ক্যামেরা অ্যাক্সেস করার জন্য অপেক্ষা করুন।
  • ব্যবহারকারী আপনার অ্যাপে RECORD_AUDIO অনুমতি না দেওয়া পর্যন্ত ডিভাইসের মাইক্রোফোন অ্যাক্সেস করার জন্য অপেক্ষা করুন।
  • আপনার অ্যাপের এমন কোনও বৈশিষ্ট্যের সাথে ব্যবহারকারী ইন্টারঅ্যাক্ট না করা পর্যন্ত অপেক্ষা করুন যার জন্য অবস্থানের প্রয়োজন হয়, তারপর আপনি ACCESS_COARSE_LOCATION অনুমতি বা ACCESS_FINE_LOCATION অনুমতির জন্য অনুরোধ করুন, যেমনটি অবস্থানের অনুমতির জন্য অনুরোধ করার নির্দেশিকায় বর্ণিত হয়েছে।
  • ACCESS_BACKGROUND_LOCATION অনুমতির জন্য অনুরোধ করার আগে ব্যবহারকারী আপনার অ্যাপটিকে ACCESS_COARSE_LOCATION অনুমতি অথবা ACCESS_FINE_LOCATION অনুমতি না দেওয়া পর্যন্ত অপেক্ষা করুন।

গোপনীয়তা ড্যাশবোর্ড

একটি উল্লম্ব টাইমলাইন বিভিন্ন অ্যাপ দেখায় যারা অবস্থানের তথ্য অ্যাক্সেস করেছে এবং কোন সময়ে অ্যাক্সেস করা হয়েছে
চিত্র ১. অবস্থান ব্যবহারের স্ক্রিন, গোপনীয়তা ড্যাশবোর্ডের অংশ।

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

ডেটা অ্যাক্সেসের যুক্তি দেখান

আপনার অ্যাপটি ব্যবহারকারীদের কেন অবস্থান, ক্যামেরা বা মাইক্রোফোনের তথ্য অ্যাক্সেস করে তা বুঝতে সাহায্য করার জন্য একটি যুক্তি প্রদান করতে পারে। এই যুক্তিটি নতুন গোপনীয়তা ড্যাশবোর্ড স্ক্রিনে, আপনার অ্যাপের অনুমতি স্ক্রিনে, অথবা উভয় ক্ষেত্রেই প্রদর্শিত হতে পারে।

আপনার অ্যাপ কেন অবস্থান, ক্যামেরা এবং মাইক্রোফোনের তথ্য অ্যাক্সেস করে তা ব্যাখ্যা করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. এমন একটি অ্যাক্টিভিটি যোগ করুন যা শুরু করার পরে, আপনার অ্যাপ কেন একটি নির্দিষ্ট ধরণের ডেটা অ্যাক্সেস অ্যাকশন সম্পাদন করে তার কিছু যুক্তি প্রদান করে। এই অ্যাক্টিভিটির মধ্যে, android:permission অ্যাট্রিবিউটটি START_VIEW_PERMISSION_USAGE এ সেট করুন।

    যদি আপনার অ্যাপটি Android 12 বা তার পরবর্তী ভার্সনের জন্য তৈরি হয়, তাহলে আপনাকে android:exported অ্যাট্রিবিউটের জন্য স্পষ্টভাবে একটি মান নির্ধারণ করতে হবে।

  2. নতুন যোগ করা কার্যকলাপে নিম্নলিখিত ইন্টেন্ট ফিল্টার যোগ করুন:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. আপনার ডেটা অ্যাক্সেসের যুক্তিগত কার্যকলাপ কী দেখাবে তা ঠিক করুন। উদাহরণস্বরূপ, আপনি আপনার অ্যাপের ওয়েবসাইট বা সহায়তা কেন্দ্রের একটি নিবন্ধ দেখাতে পারেন। আপনার অ্যাপ কী ধরণের ডেটা অ্যাক্সেস করে এবং কখন অ্যাক্সেস করা হয়েছে সে সম্পর্কে আরও বিস্তারিত ব্যাখ্যা প্রদান করতে, অনুমতি ব্যবহারের উদ্দেশ্য প্রয়োগ করার সময় সিস্টেমে যে অতিরিক্ত সুবিধাগুলি অন্তর্ভুক্ত থাকে তা পরিচালনা করুন:

    • যদি সিস্টেমটি ACTION_VIEW_PERMISSION_USAGE ব্যবহার করে, তাহলে আপনার অ্যাপ EXTRA_PERMISSION_GROUP_NAME এর জন্য একটি মান পুনরুদ্ধার করতে পারে।
    • যদি সিস্টেমটি ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD ব্যবহার করে, তাহলে আপনার অ্যাপ EXTRA_PERMISSION_GROUP_NAME , EXTRA_ATTRIBUTION_TAGS , EXTRA_START_TIME , এবং EXTRA_END_TIME এর মান পুনরুদ্ধার করতে পারবে।

আপনি কোন ইন্টেন্ট ফিল্টার যোগ করবেন তার উপর নির্ভর করে, ব্যবহারকারীরা নির্দিষ্ট স্ক্রিনে আপনার অ্যাপের নামের পাশে একটি তথ্য আইকন দেখতে পাবেন:

  • যদি আপনি VIEW_PERMISSION_USAGE অ্যাকশন ধারণকারী ইন্টেন্ট ফিল্টারটি যোগ করেন, তাহলে ব্যবহারকারীরা সিস্টেম সেটিংসে আপনার অ্যাপের অনুমতি পৃষ্ঠায় আইকনটি দেখতে পাবেন। আপনি এই অ্যাকশনটি সমস্ত রানটাইম অনুমতিতে প্রয়োগ করতে পারেন।
  • যদি আপনি VIEW_PERMISSION_USAGE_FOR_PERIOD অ্যাকশন ধারণকারী ইন্টেন্ট ফিল্টারটি যোগ করেন, তাহলে ব্যবহারকারীরা যখনই আপনার অ্যাপটি গোপনীয়তা ড্যাশবোর্ড স্ক্রিনে প্রদর্শিত হবে তখনই আপনার অ্যাপের নামের পাশে আইকনটি দেখতে পাবেন।

যখন ব্যবহারকারীরা সেই আইকনটি নির্বাচন করেন, তখন আপনার অ্যাপের যুক্তিসঙ্গত কার্যকলাপ শুরু হয়।

উপরের ডান কোণে একটি গোলাকার আয়তক্ষেত্র, যার মধ্যে একটি ক্যামেরা আইকন এবং একটি মাইক্রোফোন আইকন রয়েছে।
চিত্র ২। মাইক্রোফোন এবং ক্যামেরা সূচক, যা সাম্প্রতিক ডেটা অ্যাক্সেস দেখায়।

সূচক

অ্যান্ড্রয়েড ১২ বা তার পরবর্তী ভার্সন চালিত ডিভাইসগুলিতে, যখন কোনও অ্যাপ মাইক্রোফোন বা ক্যামেরা অ্যাক্সেস করে, তখন স্ট্যাটাস বারে একটি আইকন প্রদর্শিত হয়। যদি অ্যাপটি ইমারসিভ মোডে থাকে, তাহলে আইকনটি স্ক্রিনের উপরের ডানদিকে প্রদর্শিত হয়। ব্যবহারকারীরা দ্রুত সেটিংস খুলতে পারেন এবং কোন অ্যাপগুলি বর্তমানে মাইক্রোফোন বা ক্যামেরা ব্যবহার করছে তা দেখতে আইকনটি নির্বাচন করতে পারেন। চিত্র ২ একটি উদাহরণ স্ক্রিনশট দেখায় যাতে আইকনগুলি রয়েছে।

সূচকগুলির স্ক্রিন অবস্থান সনাক্ত করুন

যদি আপনার অ্যাপটি ইমারসিভ মোড বা পূর্ণ-স্ক্রিন UI সমর্থন করে, তাহলে সূচকগুলি মুহূর্তের জন্য আপনার অ্যাপের UI-কে ওভারল্যাপ করতে পারে। এই সূচকগুলির সাথে আপনার UI-কে খাপ খাইয়ে নিতে সাহায্য করার জন্য, সিস্টেমটি getPrivacyIndicatorBounds() পদ্ধতিটি প্রবর্তন করে, যা নিম্নলিখিত কোড স্নিপেটটি প্রদর্শন করে। এই API ব্যবহার করে, আপনি সেই সীমানাগুলি সনাক্ত করতে পারেন যেখানে সূচকগুলি প্রদর্শিত হতে পারে। তারপরে আপনি আপনার স্ক্রিনের UI ভিন্নভাবে সাজানোর সিদ্ধান্ত নিতে পারেন।

কোটলিন

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

টগল করে

দ্রুত সেটিংস টাইলগুলিকে 'ক্যামেরা অ্যাক্সেস' এবং 'মাইক অ্যাক্সেস' লেবেল করা হয়।
চিত্র ৩। দ্রুত সেটিংসে মাইক্রোফোন এবং ক্যামেরা টগল করা হচ্ছে।

অ্যান্ড্রয়েড ১২ বা তার পরবর্তী ভার্সন চালিত সমর্থিত ডিভাইসগুলিতে , ব্যবহারকারীরা একটি একক টগল বিকল্প টিপে ডিভাইসের সমস্ত অ্যাপের জন্য ক্যামেরা এবং মাইক্রোফোন অ্যাক্সেস সক্ষম এবং অক্ষম করতে পারেন। ব্যবহারকারীরা চিত্র ৩-এ দেখানো কুইক সেটিংস থেকে অথবা সিস্টেম সেটিংসের গোপনীয়তা স্ক্রিন থেকে টগলযোগ্য বিকল্পগুলি অ্যাক্সেস করতে পারেন।

ক্যামেরা এবং মাইক্রোফোন টগল ডিভাইসের সমস্ত অ্যাপকে প্রভাবিত করে:

  • যখন ব্যবহারকারী ক্যামেরা অ্যাক্সেস বন্ধ করে দেন, তখন আপনার অ্যাপটি একটি ফাঁকা ক্যামেরা ফিড পায়।
  • যখন ব্যবহারকারী মাইক্রোফোন অ্যাক্সেস বন্ধ করে দেয়, তখন আপনার অ্যাপটি নীরব অডিও গ্রহণ করে। অতিরিক্তভাবে, আপনি HIGH_SAMPLING_RATE_SENSORS অনুমতি ঘোষণা করুন না কেন, মোশন সেন্সরগুলি রেট-লিমিটেড

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

ডিভাইস সাপোর্ট চেক করুন

কোনও ডিভাইস মাইক্রোফোন এবং ক্যামেরা টগল সমর্থন করে কিনা তা পরীক্ষা করতে, নিম্নলিখিত কোড স্নিপেটে প্রদর্শিত লজিকটি যোগ করুন:

কোটলিন

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

জাভা

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);