2016-07-19 103 views
0

Wir entwickeln eine Gear VR-Anwendung mit GVRf. Es gibt zwei GVRS-Szenen in der App, und wir möchten, dass wenn der Benutzer die Taste in Szene B kurz zurückdrückt, zu Szene A zurückkehrt, und wenn der Benutzer die Taste in Szene A kurz zurückdrückt, verlässt er die App. Wenn Sie lange auf die Zurück-Taste drücken, sollte das Oculus-Einstellungsmenü angezeigt werden. Wenn Sie danach die Taste erneut drücken, wird die App fortgesetzt (entsprechend den Oculus-Speicheranforderungen).Gear VR Framework Override Zurück Schaltfläche Funktionalität

Da GVRActivity.onBackPressed() nicht aus dem Rahmen genannt, haben wir versucht, die onKeyUp von GVRActivity außer Kraft zu setzen:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (KeyEvent.KEYCODE_BACK == keyCode) { 
     if (mScript.onBackPressed()) {//mScript.onBackPressed() handles change scene logic 
             //and returns true if we are in scene B, and returns 
             //false if we are in scene A 
      super.onBackPressed(); 
     } 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

Gerade jetzt kurz drücken von Szene B ist ok, und lange drücken zeigt die Oculus Einstellungen. Das Problem ist, dass wenn wir von Szene B zurück drücken und von den Einstellungen zurück drücken, es zu Szene A wechselt, und wenn wir das Gleiche von Szene A machen, startet die App neu.

Was ist der richtige Weg, dies zu implementieren? Danke im Voraus.

Antwort

0

Wir haben dafür eine Lösung gefunden.

Ändern Sie zunächst GVRActivitymPaused zu protected.

protected boolean mPaused = true; 

Und dann haben wir overrode die onKeyUp() in unserem Activity:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    Log.d(TAG, "onKeyUp: "+keyCode); 
    if(!mPaused && keyCode==KeyEvent.KEYCODE_BACK){ 
     if(!mScript.onBackPressed()) 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

Hope this jemand anderes helfen kann, wenn jemand eine bessere Lösung hat, fühlen sich frei, es zu veröffentlichen.