Fragen zu einigen Stichpunkten bei einer APP-Entwicklung

  • Antworten:4
Kian S
  • Forum-Beiträge: 3

06.09.2010, 17:33:31 via Website

Hi zusammen,

ich hoffe ihr könnt mir eventuell weiterhelfen.


Ich habe vor ein App zu programmieren, welches einige Services Testet.


1. FTP Download ( X anzahl von Zyklen )
2. FTP Upload ( X anzahl von Zyklen )
3. Website Aufruf ( X anzahl von Zyklen )
4. Ping Test ( X anzahl von Zyklen )
5. Email verschicken mit Anhang ( X anzahl von Zyklen )
6. Email empfangen ( Pop3 ) ( X anzahl von Zyklen )


ich würde alle Services in verschiedenen Klassen programmieren.

ziel ist es die Zeit vor dem FTP DOWN/UP zu emitteln und wenn die Datei fertig hoch bzw. runtergeladen ist.

simultan "website aufruf, email, ping "


Ich habe aber nun paar Fragen.

1.
Wie bekomme ich die Zeiten , die in der Klasse dynamisch erstellt wurden , im GUI angezeigt ? also wie kann ich sie weiter bearbeiten ( z.b. bei einem Download würde ich gern Balken einführen der den aktuellen zustand zeigt 0 KB bis 2000 KB ) und ne anzeige , das ein zyklus fertig ist .


2.
und die andere frage, wie kann ich eine Webseite im Hintergrund öffnen und die Zeit heraus bekommen, wie lange es gedauert hat die komplette Site anzuzeigen ...

und wieder die Zeiten im Gui anzeigen "Problem" :-)

3.
Wie kann ich ein Ping Test unter Java ausführen bzw. mit der SDK.




4. sagen wir mal , ich habe eine Klasse ( mit public variablen A,B ),
kann ich die Variablen zur Anzeige im GUI nutzen?


Wenn mir da jemand paar Tips geben kann, wäre ich sehr dankbar.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

06.09.2010, 18:12:40 via Website

Das pingen sollte im Android SDK vorhanden sein, da es in Java 5 ebenfalls enthalten ist:

InetAddress#isReachable(int timeout)


public boolean isReachable(int timeout)
throws IOException

Test whether that address is reachable. Best effort is made by the implementation to try to reach the host, but firewalls and server configuration may block requests resulting in a unreachable status while some specific ports may be accessible. A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host.

The timeout value, in milliseconds, indicates the maximum amount of time the try should take. If the operation times out before getting an answer, the host is deemed unreachable. A negative value will result in an IllegalArgumentException being thrown.

Parameters:
timeout - the time, in milliseconds, before the call aborts
Returns:
a boolean indicating if the address is reachable.
Throws:
IOException - if a network error occurs
IllegalArgumentException - if timeout is negative.
Since:
1.5



Das Anzeigen des Fortschrittes im UI kannst du mittels des Observer Pattern und einem Thread lösen! Das ist auch kein Problem, dies hat eigentlich jedes UI in irgendeiner Form das den User nicht verärgern will.

Anhand deiner Fragestellung würde Ich dir aber erstmals dazu Raten dich intensiver mit Java zu beschäftigen, das ganze nach Android zu portieren ist dann das kleinere Problem.

mfg,
Mac

— geändert am 06.09.2010, 18:17:21

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

06.09.2010, 18:18:59 via Website

Hallo Kian,

eine frage vorab, hast Du schon mal in Java programmiert ?

BTW. zu 1.
long start = ((System.currentTimeMillis() - start) / 1000);
// hier das Geschäft erledigen
// vielleicht mit Fortschrittsanzeige, siehe: http://developer.android.com/reference/android/widget/ProgressBar.html
long stop = ((System.currentTimeMillis() - start) / 1000);

long vergangen = stop - start; // Zeit in Millisekunden

— geändert am 06.09.2010, 18:30:16

lg Voss

Antworten
Kian S
  • Forum-Beiträge: 3

21.09.2010, 18:45:15 via Website

Hi,

danke vorab für die Hilfe ....


ich habe noch Fragen "sicher nicht die letzte"

1.
-> Wie kann ich die Werte die ich in einem "localen Service" bearbeiten lasse"
z.B. die Downloadgröße einer Datei to von 0 byte auf X byte steigt und dies via "localen Service" deklariert wurde


in meiner Activity anzeigen lassen.



also wie kann ich aus meinem localen Service , datenwerte in meiner activity anzeigen lassen bzw. übertragen ?

2.
Ich habe vor eine Webseite komplett zu laden ( HTML Baum, GIF Dateien , Links ) , dies soll auch als Service gemacht werden. Gleichzeitig frage ich mich eine Sache :

Kann ich auch es irgendwie anzeigen lassen, was er gerade lädt ? eine art Downloadverlauf einer kompletten Homepage

www.foo.com/1.gif done
www.foo.com/2.gif done
www.foo.com/index.htm failed

dafür muss ich wohl immer ein eigenen Getbefehl festlegen und alle Verlinkungen als String speichern ? oder ?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.09.2010, 18:57:11 via Website


1.
-> Wie kann ich die Werte die ich in einem "localen Service" bearbeiten lasse"
z.B. die Downloadgröße einer Datei to von 0 byte auf X byte steigt und dies via "localen Service" deklariert wurde


in meiner Activity anzeigen lassen.



also wie kann ich aus meinem localen Service , datenwerte in meiner activity anzeigen lassen bzw. übertragen ?

Gute Frage!

Da lässt sich über ein Callback Interface lösen das von einer RemoteCallbackList gehalten wird:

private final RemoteCallbackList<IServiceCallbackListener> callbackListener = new RemoteCallbackList<IServiceCallbackListener>();



in deinem Service oder an anderer Stelle iterierst du über die liste, z,b so:

1final int nrOfCallbacks = callbackListener.beginBroadcast();
2 final int what = msg.what;
3 if (Logging.isEnabled)
4 {
5 Log.d(LOG_TAG, "broadcast " + what + " to " + nrOfCallbacks + " callback listeners");
6 }
7 try
8 {
9 for (int i = 0; i < nrOfCallbacks; i++)
10 {
11 try
12 {
13 if (what == TASK_COMPLETED)
14 {
15 callbackListener.getBroadcastItem(i).onTaskComplete();
16 }
17 else if (what == TASK_CANCELLED)
18 {
19 callbackListener.getBroadcastItem(i).onTaskFailed();
20 }
21 else
22 {
23 callbackListener.getBroadcastItem(i).onTaskFailed();
24 }
25
26 }
27 catch (final RemoteException e)
28 {
29 // The RemoteCallbackList will take care of
30 // removing
31 // the dead object for us.
32 }
33 }
34 }
35 finally
36 {
37 callbackListener.finishBroadcast();
38 callbackListener.kill();
39 }

Mehr dazu in der API Doc.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten