tomig.at->

ich muß gar nix…

Archive for August, 2010

Android Widget noch komplizierter gehts echt nicht

Posted by tomig August - 18 - 2010 - Mittwoch ADD COMMENTS

Also, heiße 2,5 Stunden meines Lebens habe ich nun damit verbracht hinter das Layoutsystem eines Widgets zu kommen.
Leider hab ich noch immer keinen Plan wie ich pixel in dip umrechnen kann… i mag net mehr.

Aber egal… zurück zum Thema:
Kurz gesagt man will ein Widget für den Homescreen erstellen, auf der dev. Seite von Google gibt ja eine Anleitung um im Netz schwirren auch ein paar wenige herrum.
ss_tut_1.jpg

Man macht einen Frame oder borgt sich hier einen aus. Nehmen wir den 4×1 oder 320*480px Frame. Man baue in als Hintergrundbild für das Widget ein.
Nun poitioniere man noch 2 Button an pos x=0, y=0px und einen Textview im Widget und Starte es….

Richtig, es sieht sehr unförmig aus.
ss_tut_2.jpg

Das Liegt daran das für die Position x=0,y=0 die größe des Frames entscheident ist.
ss_tut_6.jpg
In dem Originalbild kann man erkennen das der Frame noch einen Durchsichtigen Rahmen hat damit die Widgets nicht aneinander kleben.

Jetzt kommts, hier verlangt Google nun den Draw-9-Patch anzuwenden. In eurem Android SDK Ordner unter Tools gibt es draw9patch.bat, diese Starten und die Original png File öffnen.
ss_tut_7.jpg

Hier kann man nun mit den Punkten die man setzen kann einen *neuen* 0 Punkt setzen.
Was die .9.png nun ganz genau machen weiß ich zwar noch nicht, aber mir ist das mit dem 0 Punkt wichtiger. ^^

Wenn man das bearbeitete Bild nun speichert hat man eine background_widget.9.png Datei. Diese nun in den drawable Ordner reinkopieren und in der xml ganz normal ohne .9 ansprechen.

android:background=”@drawable/background_widget”

Jetzt sollte das Bild so aussehen…
ss_tut_3.jpg

Der neue 0 Punkt wird angenommen!

Jetzt geht es nur mehr darum die Buttons und den TextView neu auszurichten.
ss_tut_5.jpg

Android und Netbeans…alles geht wenn man will

Posted by tomig August - 16 - 2010 - Montag 5 COMMENTS

Das man für die App Entwicklung Eclipse heranzieht hat sich sehr stark in der Developerszene eingebürgert…
Alle entwickeln mit Eclipse… Oh, sagt ich Alle? Nicht doch, eine kleine Gruppe von Netbeans Programmierern leitstet Eclipse immer noch erfolgreichen Widerstand obwohl es von allen Seiten nur Eclipse Tutorials gibt!

Hier ist Netbeans, und gleich werden wir einen Programmierer names Tomig kennenlernen…

Mit Eclipse ist es ja möglich die Apps direkt auf das Mobile per USB-Debugging zu übertragen und sie zu testen.
Natürlich ist das ganze auch mit Netbeans möglich…

Vorrausgesetzt das Netbeans JAVA SE und die Android SDK installiert ist und die Beiden miteinander verbunden sind….
Fangen wir an…

a) Wenn man wie ich ein W7 64bit benutzt wir vermutlich die Umgebungsvariable Path nicht passen und beim starten von ddms.bat kommt der Fehler :

WARNING: Java not found in your path. Checking it it’s installed in C:\Program Files\Java instead.

Diesen Fehler kann man schnell beheben… Systemsteuerung -> Erweiterte Systemeinstellungen -> Umgebungsvariablen -> Auswahl: Path -> Bearbeiten
umgebungsvariablen_path.jpg

Dann sucht man sich den richtigen Pfad zum Java Ordner raus… bei mir

C:\Program Files (x86)\Java\jdk1.6.0_20\bin\

Diese Adresse hängt man einfach zu den schon bestehenden Pfadangaben bei der Umgebungsvariable Path an.
Alles Speichern und PC neustart…..

b) USB-Debugging auf dem Mobile einschalten und mit dem PC verbinden, dann in das Verzeichniss der Android sdk wechseln und dort ddms.bat Ausführen.

c) jetzt öffnet sich der Dalvik Debug Monitor öffnetn. Dort kann man unter Device->Screen Capture einen Screenshot machen, wenn man will.
screenshot_1.jpg

d) Netbeans starten……Kaffee trinken….

c) Dort unter Datei->Projekt Eigenschaften->Run->Target Device->Manual wählen.
netbeans_1.jpg

d) App Ausführen F6

e) Hier nun das Verbundene Mobile auswählen
netbeans_2.jpg

f) App wir nun nicht mehr im Emulator sondern direkt auf dem Mobile ausgeführt! :)

Viel erfolg

EDIT:

Man braucht das Android-Telefon eigentlich nur in den Debug-Modus versetzen dann startet die App auf dem Telefon!
Vorrausgesetzt man hat die Treiber installiert…

Socket-Verbindung unter Android und mehr Sex mit dem iPhone

Posted by tomig August - 12 - 2010 - Donnerstag ADD COMMENTS

Ich ärgere mich schon so lange und oft darüber das die meisten Kochbücher, Tutorials und Examples auf Englisch sind.
Klar, ich kann Englisch und verstehe es auch, aber trozdem ist es einfacher gewisse Dinge in der Muttersprache, in diesem Fall Deutsch, zu verstehen.
Darum hier 3 kurze Beispiele wie man Daten von Android an/von einem Server, Microcontroller, etc senden/empfangen kann.

a)
Diese Methode ist zwar nicht für das ausgelegt, aber sie ist verdammt schnell!

  1. WebView webview = new WebView(this);
  2. data = "foo=bar";
  3. webview.postUrl("http://192.168.178.200", data.getBytes());

b)
geht auch gut, Vorteil ist dass man hier auch Daten empfangen kann und das nur der String test gesendet wird, alles andere bleibt zuhause.

  1. public static final String SERVERIP = "192.168.178.200";
  2. public static final int SERVERPORT = 90;
  3. private Socket clientSocket;
  4. private StringBuffer response;
  5.  
  6. clientSocket = new Socket( SERVERIP, SERVERPORT );
  7. PrintStream os = new PrintStream( clientSocket.getOutputStream() );
  8. String test = "foo=bar";
  9. os.println( test );
  10. //antwort
  11. BufferedReader in = new BufferedReader(new InputStreamReader( clientSocket.getInputStream()) );
  12.  
  13. response = new StringBuffer(512);
  14. while((s = in.readLine()) != null) {
  15. response.append(s + "\r");
  16. }

c)
Wie b, nur werden hier die nötigen Daten einer POST Verbindung angehängt. Content-Length…. etc.

  1. String pathUrl = "http://192.168.178.200";
  2. String data = "foo=bar";
  3. URL url = new URL(pathUrl);
  4. HttpURLConnection hpcon = null;
  5. hpcon = (HttpURLConnection) url.openConnection();
  6. hpcon.setRequestMethod("POST");
  7. hpcon.setDoInput(true);
  8. hpcon.setDoOutput(true);
  9. hpcon.setUseCaches (false);
  10. hpcon.setConnectTimeout(100);
  11. hpcon.setReadTimeout(600);
  12.  
  13. DataOutputStream printout = new DataOutputStream (hpcon.getOutputStream());
  14. printout.writeBytes (data);
  15. printout.flush ();
  16. printout.close ();
  17. //antwort
  18. BufferedReader in = new BufferedReader(new InputStreamReader(hpcon.getInputStream()));
  19. String input;
  20. StringBuffer response = new StringBuffer(512);
  21.  
  22. while((input = in.readLine()) != null) {
  23. response.append(input + "\r");
  24. }

Für alle die sich über einen Artikel über Sex mit dem iPhone gefreut haben….. ^^