2016-05-24 14 views
0

Ich versuche Eclipse Paho-Bibliothek für die Android-App für mein IoT-Projekt zu verwenden. Die Android-App sendet einfach Gyroskop- und Beschleunigungsdaten an den Broker unter iot.eclipse.org. Ich verwende den folgenden Code, um eine Verbindung mit dem MQTT-Server herzustellen. `public void establishMQTTConnection() {Fehler beim Empfang der Broadcast-Absicht. Eclipse Paho

clientId = MqttClient.generateClientId(); 
    Log.d(TAG,clientId+""); 
    client = 
      new MqttAndroidClient(this.getApplicationContext(), "iot.eclipse.org:1883", 
        clientId); 

    // MqttConnectOptions options = new MqttConnectOptions(); 
    //options.setUserName("aiupvrxz"); 
    //options.setPassword("dOW0vFQzRGKA".toCharArray()); 
    try { 

     token = client.connect(); 
     token.setActionCallback(new IMqttActionListener() { 
      @Override 
      public void onSuccess(IMqttToken asyncActionToken) { 
       // We are connected 
       Log.d(TAG, "onSuccess"); 
      } 

      @Override 
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
       // Something went wrong e.g. connection timeout or firewall problems 
       Log.d(TAG, "onFailure"); 

      } 
     }); 
    } catch (MqttException e) { 
     e.printStackTrace(); 
    } 
}` 

Problem ist app nie die Verbindung herstellt. Ich bekomme den folgenden Fehler in der Logcat.

05-24 12:48:20.772 10236-10236/iot.dulanga.com.androidclientv2 E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000010 (has extras) } in org.eclipse.p[email protected]41fc9348 
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:737) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4573) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
android.permission.WAKE_LOCK 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK. 
    at android.os.Parcel.readException(Parcel.java:1327) 
    at android.os.Parcel.readException(Parcel.java:1281) 
    at android.os.IPowerManager$Stub$Proxy.acquireWakeLock(IPowerManager.java:432) 
    at android.os.PowerManager$WakeLock.acquireLocked(PowerManager.java:295) 
    at android.os.PowerManager$WakeLock.acquire(PowerManager.java:264) 
    at org.eclipse.paho.android.service.MqttService$NetworkConnectionIntentReceiver.onReceive(MqttService.java:794) 
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728) 
    at android.os.Handler.handleCallback(Handler.java:605)  
    at android.os.Handler.dispatchMessage(Handler.java:92)  
    at android.os.Looper.loop(Looper.java:137)  
    at android.app.ActivityThread.main(ActivityThread.java:4573)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:511)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)  
    at dalvik.system.NativeStart.main(Native Method) 

AndroidManifest ....

`

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 


    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

    <service android:name="org.eclipse.paho.android.service.MqttService" > 
    </service> 
</application> 

`

Kann jemand mir bitte helfen, das Problem mit meinem Code, um herauszufinden. Vielen Dank!!!!

Antwort

3

Die Ausnahme hat den Schlüssel Abschnitt in der Mitte:

Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK. 

Achten Sie darauf, den erforderlichen Abschnitt der Anwendung manifestieren

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

Sir, vielen Dank viel für Ihre Antwort hinzugefügt haben. Ich habe diese Berechtigung bereits im Manifest hinzugefügt. Trotzdem bekomme ich den gleichen Fehler. – Dulanga

+0

Wenn Sie das an der richtigen Stelle hinzugefügt haben, dann sollte sich die Ausnahme geändert haben – hardillb

+0

Nein, Sir, ich bekomme immer noch die gleiche Ausnahme. Ich habe die Frage bearbeitet. Ich habe das Manifest auch aufgenommen. Es wird sehr geschätzt, wenn Sie mir dabei helfen können. Vielen Dank – Dulanga