سؤال

لقد قمت بتطوير وتطبيق عرض شرائح للصور التي تلعب كل منها صوتًا عند النقر عليها. إنه مثل كتاب مصور للأعمار 2-4.

تكمن المشكلة ، لأن Android لن يتيح لك التقاط زر Home Butting ويقومون بتعطيله بشكل أساسي ، عندما يمنح الآباء الهاتف لطفلهم للعب مع الوالد الشجاع (الوالد الشجاع) ، يمكن للطفل الخروج من التطبيق وبعد ذلك إجراء مكالمات أو وإلا قم بتعديل الهاتف.

هناك تطبيقان آخران لهما إصلاح PSUEDO لهذه المشكلة. التطبيقات هي قفل طفل و Toddlephone. لقد حاولت الاتصال بمطوري هذه التطبيقات للحصول على بعض التوجيهات ، لكنهم لم يكونوا على استعداد للكشف عن أي شيء ، إذا كان على ما يرام ، ولكن هل لدى أي شخص هنا أي اقتراحات؟

يبدو أن كلا من تلك التطبيقات الأخرى تتصرف مثل تطبيق استبدال الشاشة الرئيسية. عندما تقوم بتمكين "وضع عوامل الطفل" على تلك التطبيقات ، يُطلب من المستخدم اختيار وتطبيق الإجراء والخيارات هي "Launcher ، LauncherPro ، إلخ" بالإضافة إلى تطبيق الطفل. عليك بعد ذلك جعل تطبيق طفل صغير الافتراضي وفويلا ، والهاتف "مغلق" ولا يمكن "فتحه" إلا باستخدام مجموعة مفاتيح أو لمس الزوايا الأربع للشاشة ، وما إلى ذلك. عند "إلغاء قفل" الهاتف. تطبيق الشاشة الرئيسية العادية الخاصة بك الافتراضية التي تم استعادةها. ليس عليك حتى جعل تطبيق طفل صغير الافتراضي في المرة القادمة التي يمكنك فيها تمكين "وضع مقاوم للأطفال".

لقد قرأت أن هذين التطبيقين يعانيان من مشاكل في هواتف Samsung ويمكن أن يتسبب في حدوث حلقة لا حصر لها من حلقات لا حصر لها تتطلب إعادة ضبط المصنع. من الواضح أن هذا ليس هو الحل المثالي للمشكلة ولكن يبدو أنه الوحيد المتاح في هذه المرحلة.

هل لدى أي شخص أي أفكار حول كيفية تنفيذ "وضع مقاوم للأطفال"؟

هل كانت مفيدة؟

المحلول

أعتقد أنك على حق فيما يتعلق باستبدال الشاشة الرئيسية. قفل طفل صغير لا أعرفه لا يتجاوز زر الصفحة الرئيسية ، لأنه (على الأقل في LG GW620) أثناء وجوده في قفل Toddle الذي يمسك بزر الصفحة الرئيسية ، يعرض القائمة من نوع التاب - الذي يميل بعد ذلك إلى تعطل الهاتف.

يتوفر تطبيق استبدال الشاشة الرئيسية ، مع رمز المصدر ، على موقع Android Dev:

http://developer.android.com/resources/samples/home/index.html

تحرير: أيضا ، Adw.Launcher:

http://code.google.com/p/adw-launcher-droid/

نصائح أخرى

كنت بحاجة إلى قفل طفل في تطبيق جديد ، ولم أرغب في استخدام قاذفة. إليك ما فعلته ، يمكنك رؤية التطبيق في https://play.google.com/store/apps/details؟id=com.justforkids.animalsounds

  1. عند تنشيط القفل ، ابدأ خدمة ، ووقفها عند إلغاء تنشيط القفل
  2. تتحقق الخدمة من تطبيق التشغيل الأعلى ، وإذا لم يكن نشاطي ، فإن الخدمة تطلق نشاطي
  3. لا تزال هناك مشكلة أنه عندما ينقر المستخدم على "الصفحة الرئيسية" ، يستغرق الأمر حوالي 6 ثوان قبل إطلاق نشاطي مرة أخرى. أفترض أن هذه ميزة أمان في Android ولكن لست متأكدًا. لتجاوز هذا ، عندما تكتشف الخدمة أن تطبيقًا آخر مرئيًا ، فإنه يضيف عرضًا أعلى (كإطار تنبيه) يغطي الشاشة الرئيسية لمدة ثوانٍ قليلة ، فإنه يتطلب التطبيق لإعادة التشغيل.

للخطوة 3 ، إليك المزيد من التفاصيل:

قم بإنشاء تخطيط التراكب ، على سبيل المثال ملف locked_overlay.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#d0000000"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:text="@string/app_name"
        android:textColor="#fff"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Locked mode is on"
        android:textColor="#fff"
        android:textSize="18sp" />

    </LinearLayout>

</FrameLayout>

في خدمتك لإظهار أو إخفاء استخدام التراكب:

  private View lockedOverlay = null;

  private void hideLockedOverlay() {
    if (lockedOverlay != null) {
      WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
      windowManager.removeView(lockedOverlay);
      lockedOverlay = null;
    }
  }

  private void showLockedOverlay() {
    if (lockedOverlay != null) {
      return;
    }

    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    WindowManager.LayoutParams viewLayoutParams = new WindowManager.LayoutParams(
    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
        PixelFormat.TRANSLUCENT);
    viewLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;

    LayoutInflater inflater = LayoutInflater.from(this);
    lockedOverlay = inflater.inflate(R.layout.locked_overlay, null);
    windowManager.addView(lockedOverlay, viewLayoutParams);
  }

ستحتاج إلى الإذن

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Add in to your Main Activity
@Override 
    public void onAttachedToWindow()
    {  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();  
    }

And Override Key down event

@Override 
    public boolean onKeyDown(int iKeyCode, KeyEvent event)
    {

        if(iKeyCode == KeyEvent.KEYCODE_BACK || iKeyCode == KeyEvent.KEYCODE_HOME) 
        {
            return true;
        }
       }

يحرر:هذا يعمل في جميع الإصدار الأقدم من Android. ولكن لن يعمل في ICS و Jelly Bean وسوف يعطيك تحطمك في التطبيق

لقد استبدلت قاذفة المنزل الافتراضية باستخدام الكود التالي:

Intent selector = new Intent("android.intent.action.MAIN");
selector.addCategory("android.intent.category.HOME");
selector.setComponent(new ComponentName("android","com.android.internal.app.ResolverActivity"));
startActivity(selector);

بالنسبة للإصدارات 4.0 وما فوق ، يمكنك تجنب قيود أمان Android وتعيين التطبيق الخاص بك كقاذفة. أضف هذا إلى ملف البيان الخاص بك:

<uses-permission android:name="android.permission.GET_TASKS" />

 <activity
    android:launchMode="singleInstance"
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.HOME" />
    </intent-filter>
</activity>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top