2016-08-05 16 views
1

Ich entwickle eine App, in der ich ein paar Bilder mit ein paar Infos mache und dann das Ganze auf den Server hochlade. Ich lade die Datei als Antwort auf einen Knopfdruck hoch, aber das passiert nur, wenn das Internet gut funktioniert. Daher möchte ich die Aufgabe zum Hochladen von Daten für einen späteren Zeitpunkt planen, wenn das Internet nicht funktioniert, und ich möchte es automatisch auf den Server hochladen, sobald das Gerät mit dem Internet verbunden ist.Was ist der beste Weg, um den Upload von Dateien in Android zu planen?

Ich habe JobScheduler API durchlaufen, aber das Problem ist, dass es nicht Android-Gerät niedriger als 5.0 (API 21) unterstützt und meine Anforderung ist diese App bis API 17 zu bauen. Daher brauchen Sie Ihre Vorschläge und API für die gleich.

Vielen Dank im Voraus!

Antwort

1

Haben Sie mit ConnectivityManager für die Überwachung der Monitoring the Connectivity Status untersucht? Sie können ein Broadcast-Ereignis empfangen, wenn WLAN verfügbar ist, und den Upload fortsetzen/starten.

aus dem Android Docs:

Sie fest, ob Sie eine Internet-Verbindung

ConnectivityManager cm = 
     (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
boolean isConnected = activeNetwork != null && 
         activeNetwork.isConnectedOrConnecting(); 

die Art Ihrer Internetverbindung ermitteln

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; 

Monitor für Änderungen in Connectivity

Die ConnectivityManager sendet die CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE") Aktion, wenn die Konnektivität geändert haben. Sie können einen Broadcast-Empfänger in Ihrem Manifest registrieren, um auf diese Änderungen zu warten und Ihre Hintergrundaktualisierungen entsprechend fortzusetzen (oder auszusetzen).

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 

Änderungen an ein Konnektivität des Geräts können sehr Viel diese Sendung wird jedes Mal, wenn Sie zwischen mobilen Daten- und Wi-Fi bewegen ausgelöst. Aus diesem Grund sollten Sie diese Übertragung nur dann überwachen, wenn Sie zuvor Updates oder Downloads ausgesetzt haben, um sie fortzusetzen. Es reicht im Allgemeinen aus, vor dem Beginn einer Aktualisierung einfach auf die Internetkonnektivität zu prüfen und, falls keine vorhanden ist, weitere Updates zu sperren, bis die Verbindung wiederhergestellt ist.

Diese Technik erfordert das Umschalten von Broadcast-Empfängern, die Sie im Manifest deklariert haben, was in der nächsten Lektion beschrieben wird.

Hier ist eine andere gute Quelle:

http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/