Frage

Ich bin mit PhoneGap 0.8 und ich möchte eine grundlegende Schüttelbewegung erkennen. Ich habe zwei relevante Schnipsel gefunden:

http://groups.google.com/group/phonegap/browse_thread / thread / 25178468b8eb9e9f

http://phonegap.pbworks.com/Handling-Shake-Events

Keiner von ihnen arbeiten für mich. Leider scheint die Dokumentation ein wenig veraltet und die API-Referenz für PhoneGap ist nur ein Haufen von Tests. Ich weiß, es kann ich nur getan werden, keine bekannten guten Ausgangspunkt haben.

Wenn jemand einen kurzen Ausschnitt aus Shake Erkennungscode für PhoneGap zur Verfügung stellen kann, dass sie Werke für sie wissen, würde ich sehr dankbar. Vielen Dank für Ihre Zeit!

War es hilfreich?

Lösung

Ihre erste Verbindung wird mit PhoneGap.Gesture, die soweit ich (zumindest für iphone) existiert nicht sehen kann in 0,8. Es ist ein ganz kürzlich erschienener Beitrag obwohl so vor kurzem hinzugefügt wurde? Ich habe keine spätere Revision als 0,8 verwendet

I wurden durch ‚‘ erstreckt phonegap Schüttelbewegung Unterstützung einer phonegap app wie folgt hinzugefügt. Aber zuerst eine Warnung:

hat Apple PhoneGap 0.8 als akzeptabel erachtet zur Vorlage an App-Store. Da dies im Wesentlichen eine Erweiterung (wenn auch sehr einfach) ist zu PhoneGap 0.8 besteht das Risiko der Ablehnung sein. Die App entwickeln ich dies für noch nicht durch den Zulassungsprozess durchlaufen, so kann ich jede auf diese nicht rate weiter.

Beachten Sie auch, dass dies funktioniert nur auf OS 3.0+ aufgrund der Verwendung des neuen UIEventSubtypeMotionShake API

Darüber hinaus ist dieses iPhone spezifisch. Wenn Sie die Cross-Plattform-Fähigkeiten von PhoneGap wollen, kann diese Antwort nicht für Sie, wenn Sie bequem sind die native Seiten Änderung auf den anderen Plattformen Implementierung (Android, etc.). In diesem Fall kann es besser sein, nur für einen offiziellen phonegap Release zu warten, das diese auf dem iPhone unterstützt.

Fügen Sie den folgenden Code zu PhoneGapViewController.m

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (UIEventSubtypeMotionShake == motion)
    {
        [webView stringByEvaluatingJavaScriptFromString:@"navigator.myext.onShakeGesture();"];
    }
}

Dann fügen Sie diese als Javascript-Modul myext.js

/* We need PhoneGap.js to be loaded to work properly before we can initialise so wait for it here */
(function() 
{
    var timer = setInterval(function() 
    {
        if (typeof(PhoneGap == 'object'))
        {
            clearInterval(timer);
            myExtInit();
        }
    }, 1);
})();

function MyExt()
{
    // initialization
    this.callbacks = {
        onShakeGesture: []
    };
}

/* Called by ObjectiveC side when a shake gesture is detected */
MyExt.prototype.onShakeGesture = function()
{
    for (var i = 0; i < this.callbacks.onShakeGesture.length; i++) 
    {
        var f = this.callbacks.onShakeGesture[i];
        f();
    }
};

MyExt.prototype.addShakeGestureListener = function(shakeCallback)
{
    if (typeof(shakeCallback) == 'function')
    {
        this.callbacks.onShakeGesture.push(shakeCallback)
    }
};

function myExtInit()
{
    // Init phonegap extension specific objects using PhoneGap.addConstructor
    PhoneGap.addConstructor(function() {
        if (typeof navigator.myext == "undefined") navigator.myext = new MyExt();
    });
}

Jetzt myext.js in Ihrem HTML-Inhalt <head> Abschnitt ist kurz nach dem Link zu phonegap.js

<script type="text/javascript" charset="utf-8" src="myext.js"/>

und verwenden von Skript (zB verursacht einen Alarm, aber das tun, was Sie tun müssen):

function watchShake() {
  var cb = function(){
    navigator.notification.alert("Shake it!");
  };
    navigator.myext.addShakeGestureListener(cb);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top