অ্যান্ড্রয়েডে কিওস্ক মোড


114

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

অ্যান্ড্রয়েডে কি বুট করার পরে কেবলমাত্র একটি অ্যাপ্লিকেশন অটোস্টার্ট পাওয়া এবং ব্যবহারকারীরা দুর্ঘটনাক্রমে (বা স্বেচ্ছায়) অ্যান্ড্রয়েড ডিভাইসের অন্য কোনও অংশ অ্যাক্সেস করা থেকে বিরত থাকতে পারে?


আপনি কি আপনার সমস্যার সমাধান করেন?
মেনা-আল্লাহ সামি

3
হ্যা এটা সম্ভব. আমি এ সম্পর্কে একটি (খুব) দীর্ঘ ব্লগ পোস্ট তৈরি করেছি: andreas-schrad.de/2015/02/16/…
ফানকোডার

ললিপপ ব্যবহার করে আমি এটি সম্পর্কে (আংশিকভাবে) একটি ব্লগ পোস্টও তৈরি করেছি - এটি বুট রিসিভার অংশটি বাদ দেয় যদিও: নিশ্চিতশোশি
অ্যান্ড্রয়েড-

লক-ডাউন একক-ব্যবহারের ডিভাইসগুলি তৈরি করতে বিভিন্ন পদ্ধতিতে আমি এখানে একই ধরণের প্রশ্নের উত্তর দিয়েছি: স্ট্যাকওভারফ্লো.com
ট্রেভর হালভারসন

উত্তর:


29

আপনি android.intent.action.BOOT_COMPLETEDব্রডকাস্টরসিভারের উদ্দেশ্য শুনে বুটটিতে অ্যাপ্লিকেশনগুলিকে স্বস্টার্ট করতে পারেন এবং সেখান থেকে আপনার ক্রিয়াকলাপ শুরু করতে পারেন। ক্রিয়াকলাপে আপনি নিজেকে নতুন ডিফল্ট হোমস্ক্রিন হিসাবে নিবন্ধিত করতে পারেন এবং কীগুলি পরিচালনা করতে পারেন।

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

তবে একটি প্রোটোটাইপের জন্য যা যথেষ্ট হতে পারে।

মজা টিঙ্কারিং আছে!

[1]:

<intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.HOME" />
 <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

1
আপনি যখন লঞ্চে গিয়ে পিছনের বোতামটি টিপেন তখন আপনাকে প্রথমে অ্যাক্টিভিটি-র উপরের চাপটিও ওভাররাইড করতে হবে
অ্যাডেমার 111190

কীভাবে সিস্টেমের ডায়ালগ এন নোটিফিকেশন বারগুলি কোডের মাধ্যমে অক্ষম করা যায়
জ্ঞানাম আর

1
: @GnanamR: আমার উত্তর এ পরীক্ষা stackoverflow.com/questions/11958034/hide-tablet-system-bar
Basher51

@ রিঙ্কালকুমার অ্যাপটি পূর্ণ-স্ক্রিন মোডে চালান।
61590

17

কিওস্ক সক্ষম করতে আপনি এটি (মেনুতে অ্যাক্সেস অক্ষম করতে, অ্যাপ্লিকেশন সংযোজন সীমাবদ্ধ করুন) কাস্টমাইজ করতে পারেন। http://code.google.com/p/android-launcher-plus/


7
আমি জানতে পারি কেন এটিকে নিম্নমানের করা হয়েছিল? আমি অ্যান্ড্রয়েড লঞ্চার প্লাসের শীর্ষে সম্পাদনা এবং বিকাশ করে আমার সম্পূর্ণ সজ্জিত, বর্তমানে মোতায়েন অ্যান্ড্রয়েড কিওস্ক অ্যাপ্লিকেশন লিখেছি।
rbot


@rbot আপনি কীভাবে তা করলেন? আমি যুগে যুগে একটি কিওস্ক অ্যাপ্লিকেশন তৈরি করার চেষ্টা করেছি এবং বিজ্ঞপ্তি ট্রেটি খোলেনি তা নিশ্চিত করা ছাড়া আমি প্রায় সমস্ত কিছু সমাধান করেছি।
Wakka02

1
@ ওয়াক্কা ০২ আমি মনে করি আমি অন-উইন্ডোচেঞ্জড বা অনুরূপ কিছু ইভেন্ট খুঁজছিলাম (যা সম্ভবত নোটিফিকেশন ট্রে খোলার ইঙ্গিত করতে পারে) এবং ট্রেটি বন্ধ করে দেওয়া হয়েছে। আমি এটি অনেক দিন আগে করেছি, সুতরাং সুনির্দিষ্ট বিবরণ মনে রাখবেন না।
rbot

: @ Wakka02: আমার উত্তর চেক stackoverflow.com/questions/11958034/hide-tablet-system-bar
Basher51

17

নতুন অ্যান্ড্রয়েড এল পূর্বরূপে, গুগল টাস্ক লকিংয়ের ঘোষণা করেছে , যা ঠিক তা করে। এটি অবশ্য শিকড় প্রয়োজন বলে মনে হচ্ছে না।

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

অননুমোদিত ব্যবহার রোধ করতে কেবল অনুমোদিত অ্যাপ্লিকেশনগুলি টাস্ক লকিং সক্রিয় করতে পারে। তদ্ব্যতীত, টাস্ক লকিং অনুমোদনের android.app.admin.DevicePolicyManager.setLockTaskComponents()পদ্ধতিটির মাধ্যমে একটি বিশেষভাবে কনফিগার করা ডিভাইস মালিক অ্যাপ্লিকেশন দ্বারা মঞ্জুর করতে হবে ।

একটি ডিভাইস মালিক সেট আপ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  • userdebugআপনার বিকাশ মেশিনে একটি Android বিল্ড চালিত কোনও ডিভাইস সংযুক্ত করুন ।
  • আপনার ডিভাইসের মালিক অ্যাপটি ইনস্টল করুন।
  • একটি device_owner.xmlফাইল তৈরি করুন এবং এটি /data/systemডিভাইসে ডিরেক্টরিতে সংরক্ষণ করুন।
$ adb root
$ adb shell stop
$ rm /tmp/device_owner.xml
$ echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" >> /tmp/device_owner.xml
$ echo "&device-owner package=\"<your_device_owner_package>\" name=\"*<your_organization_name>\" />" >> /tmp/device_owner.xml
$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
$ adb reboot

আপনার অ্যাপ্লিকেশনটিতে টাস্ক লকিং এপিআই ব্যবহার করার আগে যাচাই করে নিন যে আপনার ক্রিয়াকলাপটি ডিভাইসপলিসি ম্যানেজ.আইআর লকটাস্কপিয়ারমিটেড () কল করে অনুমোদিত হয়েছে।

টাস্ক লকিং সক্রিয় করতে, android.app.Activity.startLockTask() আপনার অনুমোদিত কার্যকলাপ থেকে কল করুন ।

যখন টাস্ক লকিং সক্রিয় থাকে, নিম্নলিখিত আচরণ কার্যকর হয়:

  • স্ট্যাটাস বারটি ফাঁকা, এবং ব্যবহারকারীর বিজ্ঞপ্তি এবং স্থিতির তথ্য গোপন থাকে।
  • হোম এবং সাম্প্রতিক অ্যাপ্লিকেশন বোতামগুলি লুকানো আছে।
  • অন্যান্য অ্যাপ্লিকেশনগুলি নতুন ক্রিয়াকলাপ চালু করতে পারে না।
  • বর্তমান অ্যাপটি নতুন ক্রিয়াকলাপ শুরু করতে পারে, যতক্ষণ না এটি করা নতুন কার্য তৈরি করে না।
  • কোনও অনুমোদিত ক্রিয়াকলাপ কল না হওয়া পর্যন্ত ব্যবহারকারী আপনার অ্যাপে লক থাকে Activity.stopLockTask()

3
ডিভাইস অ্যাডমিন অ্যাপ স্থাপন করার সময় বিকাশকারী.অ্যান্ড্রয়েড / গাইড / টপিক্স / অ্যাডমিন / ডিভাইস- অ্যাডমিন এইচটিটিএমএল।
তোশে

2
সম্পূর্ণ সেটআপ অ্যালগরিটম pvolan.blogspot.ru/2017/01/android-50-kiosk-mode-aka-super.html
পিভিওলান

9

এটির জন্য কিছুক্ষণ অনুসন্ধান করার পরে আমি একটি ভাল সমাধান নিয়ে এসেছি। এটি যদিও শুধুমাত্র মূলযুক্ত ডিভাইসগুলিতে কাজ করে তবে আমি অনুমান করি যে এটি যদি কেবলমাত্র এই একটি অ্যাপ্লিকেশানের জন্য হয় তবে এটির মূলকে রুট করা কোনও সমস্যা হওয়া উচিত নয়।

  • যোগ করে আপনার অ্যাপ্লিকেশনটিকে লঞ্চার করুন

    <category android:name="android.intent.category.HOME" /> 

    আপনার অভিপ্রায় - ফিল্টার

  • আপনার অ্যাপটি টুলবারটি ধসে পড়েছে তা নিশ্চিত করুন যাতে আপনি বিজ্ঞপ্তি বারে পৌঁছাতে না পারেন দেখুন অ্যানড্রয়েড প্রোগ্রামে স্ট্যাটাস বার / নোটিফিকেশন বার কীভাবে অক্ষম করবেন? বা http://blog.vogella.com/2011/02/28/android-hiding-the-status-and-title-bar/

  • তারপরে অন্য কোনও প্রোগ্রাম ভুলক্রমে উদ্বোধন হতে বন্ধ করতে উইন্ডো রাজ্যের পরিবর্তন হওয়া পরীক্ষা করার জন্য একটি অ্যাক্সেসিবিলিটি পরিষেবা ব্যবহার করুন, প্যাকেজটিকে একটি সাদা বা কালো তালিকার সাথে তুলনা করুন এবং এটি চালিত না হওয়াতে হত্যার জন্য অ্যাক্টিভিটিম্যানেজার.কিলব্যাকগ্রাউন্ডপ্রসেসগুলি ব্যবহার করুন।

এছাড়াও অন্য কোনও উপায়ে http://thebitplague.wordpress.com/2013/04/05/kiosk-mode-on-the-nexus-7/ দেখুন


5

বুট আপনার অ্যাপ্লিকেশন শুরু

এটি সম্পাদন করার সর্বোত্তম উপায় হ'ল আপনার অ্যাপ্লিকেশনটিকে লঞ্চার হিসাবে সেট করা

<activity ...
  android:launchMode="singleInstance"
  android:windowActionBar="false">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.HOME" />
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

আপনার অ্যাপ্লিকেশন লক করা হচ্ছে

সবচেয়ে নির্ভরযোগ্য উপায় হ'ল ললিপপ বা এর চেয়ে বেশি ডিভাইস ব্যবহার করা এবং এর ব্যবহার করা

startLockTask

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

আপনার অ্যাপ্লিকেশনটি নিবন্ধিত করতে সক্ষম হতে আপনাকে প্রথমে একটি ডিভাইস অ্যাডমিনআরসিভার উপাদান নির্ধারণ করতে হবে:

package com.example.myapp;

public class MyDeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver {
    @Override
    public void onEnabled(Context context, Intent intent) {
        Toast.makeText(context, "Device admin permission received", Toast.LENGTH_SHORT).show();
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return "are you sure?";
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        Toast.makeText(context, "Device admin permission revoked", Toast.LENGTH_SHORT).show();
    }


    @Override
    public void onLockTaskModeExiting(Context context, Intent intent) {
        // here you must re-lock your app. make your activity know of this event and make it call startLockTask again!
    }
}

আপনার একবার অপ্রকাশিত ডিভাইস হয়ে গেলে আপনি নীচের কমান্ডটি অ্যাডবি থেকে শুরু করতে পারেন ( কোনও মূল প্রয়োজন নেই )

adb shell dpm set-device-owner com.example.myapp/.MyDeviceAdminReceiver

অ্যান্ড্রয়েড এড়াতে ব্যবহারকারীকে আপনার অ্যাপ্লিকেশনটি পিন করতে অনুমতি চাইলে আপনাকে অবশ্যই সেটলক টাস্কপ্যাকেজগুলি কল করতে হবে

পরিশেষে!

@Override
public void onResume(){
    super.onResume();
    DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService(
            Context.DEVICE_POLICY_SERVICE);
    ComponentName mAdminComponentName = new ComponentName(getApplicationContext(), MyDeviceAdminReceiver.class);
    mDevicePolicyManager.setLockTaskPackages(mAdminComponentName, new String[]{getPackageName()});
    startLockTask();
}
@Override
public void finish(){
    stopLockTask();
    super.finish();
}

5

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


অসাধারণ সন্ধান। এখানে কিওস্ক মোডের তথ্যের প্রত্যক্ষ লিঙ্ক রয়েছে: developers.google.com/android/management/polferences/…
রবার্ট লিবারিটোর

3

একক-উদ্দেশ্য ডিভাইসগুলি সেট আপ করুন অ্যান্ড্রয়েড বিকাশকারীদের পৃষ্ঠাগুলি এই জিনিসগুলি বর্ণনা করেছেন যা আপনি সেখান থেকে আরও সহজেই জানতে পারবেন।

এখন অ্যান্ড্রয়েড 6.0 মার্শমালো এবং পরবর্তী ডিভাইসগুলি কর্পোরেট মালিকানাধীন, একক-ব্যবহার (সিওএসইউ) ডিভাইস হিসাবে কনফিগার করা সহজ ।


2

এই ফোরাম পোস্টে আরও একটি সম্ভাব্য কৌশল খুঁজে পেয়েছে । পোস্টটি উদ্ধৃত:

http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/10839-android-kiosk-mode-tutorial.html

নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করে আপনি এমন একটি অ্যাপ্লিকেশন তৈরি করতে পারেন যা "নিয়মিত" ব্যবহারকারীদের আপনার অ্যাপ্লিকেশন ব্যতীত অন্য কোনও কিছু খেলতে বাধা দেবে।

অ্যাপ্লিকেশনটি দুটি মডিউল দিয়ে তৈরি। প্রধান ক্রিয়াকলাপ এবং একটি পরিষেবা। পরিষেবাটি বুটে শুরু করার জন্য কনফিগার করা হয়েছে। পরিষেবাটি চালু হয়ে গেলে এটি ক্রিয়াকলাপটি চলছে কিনা তা পরীক্ষা করে। যদি এটি চালনা না করে তবে এটি প্রধান ক্রিয়াকলাপ শুরু করতে টাইমার ব্যবহার করে।

যখন ক্রিয়াকলাপ বিরতি দেওয়া হয় তখন পরিষেবাটি এক সেকেন্ডে শুরু করার সময়সূচি দেয়: কোড:

Sub Activity_Pause (UserClosed As Boolean)
    If kiosk Then StartServiceAt(KioskService, DateTime.Now + 1 * DateTime.TicksPerSecond, false)    
End Sub

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

পরিষেবাটি অগ্রভাগের পরিষেবা হিসাবে সেট করা আছে। এটি অ্যান্ড্রয়েডকে আমাদের পরিষেবা হত্যার হাত থেকে বাঁচায়। কিওস্ক মোডটি নিষ্ক্রিয় করতে স্টপ বোতামে টিপুন।

ডাউনলোডের জন্য উপলব্ধ কিওস্ক-মোড কোড জিপ ফাইলের একটি উদাহরণ উপস্থিত রয়েছে ।


2

এক্সপোজড ফ্রেমওয়ার্ক এটি করতে পারে। এটির মূল প্রয়োজন এবং এটি সম্ভাবনা রয়েছে যে এটি প্রতিটি এবং সমস্ত প্ল্যাটফর্মগুলিতে কাজ করবে না। দেখুন নিষ্ক্রিয় () ক্লাসে পদ্ধতি android.app.StatusBarManager

এখানে অ্যান্ড্রয়েড উত্স কোডে

আপনার নিজের মডিউলটি কীভাবে লিখবেন তা এখানে দেখুন: এক্সপোজড ডেভেলপমেন্ট টিউটোরিয়াল

আপনি প্রথম নজরে যা ভাবেন তার চেয়ে অনেক সহজ। শুভকামনা!


কোনও এক্সপোজড মডিউল যা আপনি মনে করেন এটি কি এটি করে?
ফায়ারল্ড

0

কোনও বট রিসিভার দিয়ে আপনার অ্যাপ্লিকেশন সেটআপ করার সাথে সাথে এবং স্ট্যাটাস বারের প্রসারণ রোধ করার জন্য এই উত্তরটি , এই সমাধানটি সম্পূর্ণ কিওস্ক অ্যাপ্লিকেশন হিসাবে ৪.৪ এবং এর উপরে কাজ করে:

আপনার অনক্রিট () এ রাখুন:

    final View view = (View) findViewById(android.R.id.content);
    if (view != null) {
        //"hides" back, home and return button on screen. 
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
                                   View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                                   View.SYSTEM_UI_FLAG_IMMERSIVE |
                                   View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
                                   View.SYSTEM_UI_FLAG_FULLSCREEN);
        view.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        // Note that system bars will only be "visible" if none of the
                        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
                                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                                    View.SYSTEM_UI_FLAG_IMMERSIVE |
                                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
                                    View.SYSTEM_UI_FLAG_FULLSCREEN);
                        }
                    }
                });
    }

এটি সম্পূর্ণরূপে পিছনের বোতাম, অ্যাপ্লিকেশন এবং হোম বোতামটি আড়াল করবে।


নোটিফিকেশন বার সম্পর্কে কী?
এলশান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.