2015-07-11 11 views
9

के माध्यम से Windows रनटाइम घटक से Microsoft बैंड से कनेक्ट नहीं कर रहा है जो एक माइक्रोसॉफ्ट बैंड के साथ जोड़ता है कुछ सूचना भेजने के लिए एक Windows फ़ोन पर 8.1 एप्लिकेशन विकसित करने कर रहा हूँ। मुझे कुछ पृष्ठभूमि कार्यों करने की आवश्यकता है, इसलिए मैंने विंडोज रनटाइम घटक प्रोजेक्ट जोड़ा है।ब्लूटूथ

मैं रनटाइम घटक प्रोजेक्ट से पृष्ठभूमि कार्य i.e. से अधिसूचना भेज रहा हूं। लेकिन मुझे एक त्रुटि मिल रही है। इस प्रकार त्रुटि है:

Error: System.TypeInitializationException: The type initializer for 'Microsoft.Band.Store.StoreResources' threw an exception. ---> System.Exception: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) at Windows.UI.Xaml.Application.get_Current() at Microsoft.Band.Store.StoreResources..cctor() --- End of inner exception stack trace --- at Microsoft.Band.Store.StoreResources.get_RfComm_FromId_ReturnedNull() at Microsoft.Band.Store.BluetoothTransport.GetTransport(RfcommDeviceService service, ILoggerProvider loggerProvider, UInt16 maxConnectAttempts) at Microsoft.Band.Store.BluetoothTransport.<>c__DisplayClass1.b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute()

के रूप में इस Question कि अग्रभूमि एप्लिकेशन जबकि पृष्ठभूमि ऐप्लिकेशन कनेक्ट करने के लिए कोशिश कर रहा है बैंड कनेक्ट करने का प्रयास नहीं करना चाहिए में एक जवाब में कहा।

  • मेरा अग्रभूमि ऐप कनेक्ट करने की कोशिश नहीं कर रहा है और न ही बैंड के साथ कनेक्शन है।

मुझे लगता है कि त्रुटि, ब्लूटूथ से कनेक्ट करने में समस्याओं के लिए है, क्योंकि मैं डिबग है और त्रुटि के स्थान पता चला:

public async void Run(IBackgroundTaskInstance taskInstance) 
    { 
     var deferral = taskInstance.GetDeferral(); 

     try 
     { 
      Debug.WriteLine("Task Triggered " + DateTime.Now); 
      taskInstance.Canceled += (s, e) => { }; 
      taskInstance.Progress = 0; 

      // Get the list of Microsoft Bands paired to the phone. 
      var pairedBands = await BandClientManager.Instance.GetBandsAsync(); 
      if (pairedBands.Length < 1) 
      { 
       Debug.WriteLine(
        "This sample app requires a Microsoft Band paired to your device. Also make sure that you have the latest firmware installed on your Band, as provided by the latest Microsoft Health app."); 
       return; 
      } 

      // This is the line I am getting the error 
      using (var bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0])) 
      { 
       Debug.WriteLine("Tile creation started"); 

मेरे बैंड के ब्लूटूथ माइक्रोसॉफ्ट स्वास्थ्य अनुप्रयोग के साथ ठीक कनेक्ट कर रहा है तो, मुझे लगता है कि मेरे फोन और बैंड के ब्लूटूथ में कुछ भी गलत नहीं है।

अग्रभूमि अनुप्रयोग के लिए मेरे Package.appmanifest इस प्रकार है:

Foreground app Package.appmanifest

पृष्ठभूमि टास्क (विंडोज रनटाइम घटक परियोजना) के लिए Package.appmanifest:

<?xml version="1.0" encoding="utf-8"?> 
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest"> 
<Capabilities> 
<DeviceCapability Name="bluetooth.rfcomm" xmlns="http://schemas.microsoft.com/appx/2013/manifest"> 
<Device Id="any"> 
    <!-- Used by the Microsoft Band SDK --> 
    <Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" /> 
    <!-- Used by the Microsoft Band SDK --> 
    <Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" /> 
    </Device> 
</DeviceCapability> 

तो संभावित मुद्दा क्या हो सकता है? क्या आप इस समस्या के समाधान या कार्य-आसपास प्रदान कर सकते हैं?

+0

आप NuGet पैकेज का किस संस्करण का उपयोग कर रहे हैं? पूर्व संस्करणों में लोडिंग संसाधन स्ट्रिंग से संबंधित ज्ञात मुद्दे थे (उम्मीद है कि) नवीनतम रिलीज (1.3.10702) के साथ हल हो गए हैं। –

+0

@ फिलहॉफ़ - एमएसएफटी मैं रिलीज का उपयोग कर रहा हूं (1.3.10702.1)। –

उत्तर

1

क्या आपने पैकेज.appxmanifest फ़ाइल में सही क्षमताओं और घोषणाएं निर्धारित की हैं?

न्यूनतम के रूप में आपको क्षमताओं में "निकटता" (ब्लूटूथ का उपयोग करने) की जांच करने और घोषणाओं में पृष्ठभूमि कार्य के लिए एक प्रकार और प्रविष्टि बिंदु निर्दिष्ट करने की आवश्यकता है।

+0

मैंने एचवी क्षमताओं के साथ अपना जवाब अपडेट किया, कृपया वहां जांचें। और मैंने पहले से ही टास्कर के रूप में कार्य प्रकार निर्दिष्ट किया था और घोषणाओं में एक प्रविष्टि बिंदु भी जोड़ा था। एफवाईआई मेरा काम ट्रिगर हो रहा है, केवल समस्या ब्लूटूथ के साथ कनेक्शन बना रही है। –

0

बहुत कोशिश करने के बाद मुझे अंततः एक समाधान मिला। हालांकि मुझे त्रुटि का वास्तविक कारण नहीं पता था, मुझे एक समाधान समाधान मिला।

कोड अब इस तरह दिखता है:

public async void Run(IBackgroundTaskInstance taskInstance) 
    { 
     Debug.WriteLine("Task triggered"); 

     var deferral = taskInstance.GetDeferral(); 
     var bandInfo = (await BandClientManager.Instance.GetBandsAsync()).FirstOrDefault(); 
     IBandClient bandClient = null; 
     if (bandInfo != null) 
     { 
      Debug.WriteLine("Band found"); 
      try 
      { 
       bandClient = await BandClientManager.Instance.ConnectAsync(bandInfo); 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine("Exception: " + ex); 
      } 

      if (bandClient != null) 
      { 
       try 
       { 
        Debug.WriteLine("Band connected: " + bandClient.GetFirmwareVersionAsync().Result); 
        var bandContactState = await bandClient.SensorManager.Contact.GetCurrentStateAsync(); 
        Debug.WriteLine(bandContactState.State == BandContactState.NotWorn 
         ? "Band not worn" 
         : "Band worn"); 
       } 
       catch (Exception ex) 
       { 
        Debug.WriteLine("Exception 1: "+ ex); 
       } 
      } 
     } 
     if (bandClient != null) 
     { 
      deferral.Complete(); 
      bandClient.Dispose(); 
      bandClient = null; 
     } 
    } 

पैकेज के लिए दोनों अग्रभूमि और पृष्ठभूमि कार्यों प्रश्न में जैसे ही हैं प्रकट होता है।

एकमात्र अंतर Microsoft.Band पैकेज संस्करण: 1.3.10417.1 है, जो मैंने अपने माइक्रोसॉफ्ट को उपलब्ध नमूने से लिया है। पहले मैंने संस्करण 1.3.10702.1 का उपयोग किया था।