Frage

Ich habe entwickelt und App, die eine Diashow von Bildern ist, die jedes Spiel ein Ton, wenn Sie sie tippen. Es ist wie ein Bilderbuch für Kinder ab 2-4.

Das Problem ist, da Android erhalten Sie eine Home-Taste drücken nicht zulassen, erfassen und im Wesentlichen deaktivieren, wenn die Eltern das Telefon zu ihrem Kind gibt mit unbeaufsichtigt (brav Eltern) zu spielen, kann das Kind nämlich versehentlich die App verlassen und dann Anrufe tätigen oder auf andere Weise das Telefon zwicken.

Es gibt zwei weitere Anwendungen, die derzeit eine psuedo Fehlerbehebung für dieses Problem haben. Die Apps sind Toddler Lock und ToddlePhone. Ich habe versucht, für einige Hinweise, die Entwickler dieser Anwendungen in Kontakt, aber sie haben nicht bereit gewesen, alles offen zu legen, die, wenn in Ordnung, aber hat jemand hier irgendwelche Vorschläge?

Es sieht aus wie diese beiden anderen Anwendungen sind wie ein Home-Bildschirm Ersatz App fungiert. Wenn Sie aktivieren den „kindersicheren Modus“ auf diesen Anwendungen der Benutzer aufgefordert wird, zu wählen und App für die Aktion und die Möglichkeiten sind „Launcher, LauncherPro, usw.“ plus Kleinkind App. Sie müssen dann das Kleinkind App machen die Standard-und voila, das Telefon „gesperrt“ und nur „entsperrt“ werden können, eine Tastenkombination oder die vier Ecken des Bildschirms berühren, usw., wenn Sie „Unlock“ das Telefon. Ihr normaler Startbildschirm app Standard gestellt. Sie haben nicht einmal den Kleinkind-App machen müssen der Standard Sie das nächste Mal den „kindersicher Modus“ aktivieren.

Ich habe gelesen, dass diese beiden Anwendungen Probleme mit Samsung-Handys haben, und sie können eine unendliche Crash-und-Neustart-Schleife verursachen, die einen Werksreset zu Update erfordert. Natürlich ist dies nicht die ideale Lösung für das Problem, aber es sieht aus wie der einzige availiable an dieser Stelle.

Hat jemand irgendwelche Ideen, wie einen „aktiven Kindermodus“ implementieren?

War es hilfreich?

Lösung

Ich glaube, du hast Recht in Bezug auf die Home-Bildschirm Ersatz. Toddler Lock Ich kenne die Home-Taste nicht außer Kraft setzen, da (zumindest auf meinem LG GW620), während in Toddle Sperren halten die Home-Taste das ALT-TAB-Typ-Menü bringt -., Die dann das Telefon zum Absturz neigt

Es ist ein Startbildschirm Ersatz App zur Verfügung, mit Quellcode, auf der Android Entwickler-Website:

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

EDIT: auch, ADW.Launcher:

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

Andere Tipps

Ich brauchte Kleinkind Sperre in einem neuen App haben, und wollte nicht einen Starter verwenden. Hier ist, was ich getan habe, können Sie die App sehen unter https: / /play.google.com/store/apps/details?id=com.justforkids.animalsounds

  1. Wenn die Sperre aktiviert ist, starten Sie einen Dienst, und es nicht mehr, wenn Sperre deaktiviert ist
  2. Der Service prüft die oben läuft App, und wenn es nicht meine Tätigkeit ist, die Serviceeinführungen meiner Tätigkeit
  3. war es immer noch ein Problem, dass, wenn der Benutzer klickt auf „Home“, es ca. 6 Sekunden dauert, bis meine Tätigkeit wieder gestartet wird. Ich nehme an, das eine Sicherheitsfunktion in Android ist aber nicht sicher. Um Bypass dies, wenn der Dienst erkennt, dass eine andere Anwendung sichtbar ist, es fügt eine Draufsicht (als Alarm-Fenster), dass deckt den Startbildschirm für die wenigen Sekunden, um die App zu Relaunches nimmt.

Für Schritt 3 sind hier weitere Details:

Erstellen Sie das Overlay-Layout, zum Beispiel Datei 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>

In Ihrem Dienst zu zeigen oder die Overlay Verwendung zu verbergen:

  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);
  }

Sie werden die Erlaubnis benötigen

<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;
        }
       }

Edit: Dies funktioniert in allen älteren Version von Android. Aber wird nicht Arbeit in ICS und Jelly Bean und geben Sie in app abstürzen

I ersetzt den Standard-Startseite Launcher mit dem folgenden Code:

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);

Für die Versionen 4.0 und höher Sie Android Sicherheitsbeschränkungen umgehen können und Ihre App als Trägerrakete gesetzt. Fügen Sie diese auf Ihre Manifest-Datei:

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top