2013-02-07 11 views
8

मैंने एक प्रोजेक्ट बनाया, जहां मैंने अपने ब्लूटूथ प्लगइन से अपने जावास्क्रिप्ट में एक सफल संचार स्थापित किया। मेरी जावास्क्रिप्ट से मैं अपने जावा में इस तरह प्लगइन को एक कॉलबैक रजिस्टर:फोनगैप सेटकिप कॉलबैक - यह क्या है?

if (action.equals(ACTION_REGISTER_CALLBACK)) { 

      if(mJSCallback != null) { 
       pluginResult = new PluginResult(PluginResult.Status.ERROR, "An event callback has already been registered."); 
      } else { 
       mJSCallback = callbackId; 
       pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); 
       pluginResult.setKeepCallback(true); 
      } 

     } 

इस पाठ्यक्रम कार्यकारी समारोह में किया की है। इस तथ्य के कारण, ब्लूटूथ घटनाएं कुछ निश्चित समय पर नहीं आती हैं, मैंने एक प्रसारण रिसीवर पंजीकृत किया है, जो मेरे जावास्क्रिप्ट को संदेश भेजता है, जब उदाहरणों के लिए एक उपकरण पाया जाता है।

if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 

    sendMessagetoJSCallback(new PluginResult(PluginResult.Status.OK, "Discovery finished.")); 

} 

संबंधित समारोह भेजने के लिए:

public void sendMessagetoJSCallback(PluginResult res) { 
    res.setKeepCallback(true); 
    success(res, mJSCallback); 
} 

मैं वास्तव में समझने में इस संदर्भ है नहीं था क्या, क्या setKeepCallback उन विभिन्न कार्यों में करता है। मैंने सोचा कि एक दस्तावेज होगा, लेकिन वहाँ नहीं है।

क्या कोई मुझे बता सकता है? मैंने https://github.com/phonegap/phonegap-plugins/tree/master/Android/PhoneListener

उत्तर

3

पर विकास को उन्मुख किया है इसका मतलब है कि जेएस पक्ष पर कॉलबैक देशी (जावा) पक्ष से जेएस पक्ष तक आगे की कॉल के लिए रखा जाता है। यह कहीं cordova.js कोड में प्रबंधित है।

आप नेटवर्क सूचना प्लगइन करने के लिए उदाहरण के लिए देखें तो: https://github.com/apache/cordova-plugin-network-information/blob/master/src/android/NetworkManager.java#L221 आप देखते हैं कि हर नेटवर्क स्थिति पर (वाईफ़ाई, 3 जी, 4 जी, ऑफ़लाइन, ...) प्लगइन जे एस के लिए और कॉलबैक रखने के साथ परिणाम भेज जेएस साइट में एक ही सफलता कॉलबैक में प्रत्येक कॉल प्राप्त होता है।

संबंधित मुद्दे