Hallo zusammen,
wer gestern nicht auf der Strasse gewesen sein sollte.
Kann sich HIER einmal Informieren was er verpasst.
Aber zurück zum Thema des Posts.
Dieses Tutorial beschreibt das Abfragen und Auslesen von JSON unter Android mit API 1 oder höher.
Vorraussetzung ist ein laufender Apache mit PHP und JSON Ausgabe.
plusone
Posts mit dem Label Android werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Android werden angezeigt. Alle Posts anzeigen
26. Februar 2012
Abfragen und Auslesen von JSON unter Android - Client-Server/JSON-Rest-WebService (Part3)
14. November 2011
Alles nur eine Sache der Performance - String vs StringBuilder
Hallo zusammen,
Projekte wachsen mit der Zeit. Irgendwann stellt euch die Frage, wie kann ich das Vorhandene verbessern? Oder ist es überhaupt notwendig?
Ich bin an der Stelle schon einige Male gewesen. Ich würde nur ungerne prozersorschwache Geräte von meine APP ausschließen, also habe ich angefangen das Kapitel über die Performance zu lesen und umzusetzten.
Projekte wachsen mit der Zeit. Irgendwann stellt euch die Frage, wie kann ich das Vorhandene verbessern? Oder ist es überhaupt notwendig?
Ich bin an der Stelle schon einige Male gewesen. Ich würde nur ungerne prozersorschwache Geräte von meine APP ausschließen, also habe ich angefangen das Kapitel über die Performance zu lesen und umzusetzten.
Labels:
+=,
Android,
beispiel,
optimize,
performance,
String,
StringBuilder,
verbessern
31. Oktober 2011
Android Service - bindService und Methodenaufruf (Part2)
Guten Abend,
ich habe euch bereits in Part 1 gezeigt, wie ihr mit einem Android Service umgehen könnt. Aber einen Service im Hintergrund starten und seine Arbeitet verrichten zu lassen, ist uns jetzt nicht genug. Dafür könnten wir auch Threads benutzen.
Heute beschäftigen wir uns anbinden von einem Service, der uns dann zur Verfügung steht und auch dann die Arbeit verrichtet, die wir auch zu dem Zeitpunkt auch brauchen.
ich habe euch bereits in Part 1 gezeigt, wie ihr mit einem Android Service umgehen könnt. Aber einen Service im Hintergrund starten und seine Arbeitet verrichten zu lassen, ist uns jetzt nicht genug. Dafür könnten wir auch Threads benutzen.
Heute beschäftigen wir uns anbinden von einem Service, der uns dann zur Verfügung steht und auch dann die Arbeit verrichtet, die wir auch zu dem Zeitpunkt auch brauchen.
13. Oktober 2011
Die Arbeit von APPs Dritter erledigen lassen
Guten Abend,
ich hab euch HIER schon Einmal geschildert, wie die Kommunikation zwischen APPs mit Hilfe von der Manifestdatei zustande kommt. Heute will ich euch BroadcastReceiver zeigen und wie ihr eure Arbeit auf andere abwälzen könnt.
ich hab euch HIER schon Einmal geschildert, wie die Kommunikation zwischen APPs mit Hilfe von der Manifestdatei zustande kommt. Heute will ich euch BroadcastReceiver zeigen und wie ihr eure Arbeit auf andere abwälzen könnt.
3. Oktober 2011
Android Service - Einstieg (Part1)
Frohen Tag der Deutschen Einheit,
das Wetter ist uns gesonnen und in Bonn geht die Party ab.
Für die jenigen, die trozdem auch an Android Services interessiert sind, hier ist mein Einstieg.
Die developer-Seite hat drei recht gute Seiten, um den Einstieg zu bewältigen. Reference, DEV-Guide und Bound Service.
Mein Blog ist ja nicht auf englisch, also... fangen wir Mal an!
Was brauchen wir? Eine Klasse die von Service erbt ist ein guter Anfang.
Der Service hat nur eine abstrakte Methode und das ist onBind, leider können wir in diesem Beispiel
das Wetter ist uns gesonnen und in Bonn geht die Party ab.
Für die jenigen, die trozdem auch an Android Services interessiert sind, hier ist mein Einstieg.
Die developer-Seite hat drei recht gute Seiten, um den Einstieg zu bewältigen. Reference, DEV-Guide und Bound Service.
Mein Blog ist ja nicht auf englisch, also... fangen wir Mal an!
Was brauchen wir? Eine Klasse die von Service erbt ist ein guter Anfang.
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class StorageService extends Service {
public StorageService() {
super();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Diese Methode wird beim Starten aufgerufen!
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}Der Service hat nur eine abstrakte Methode und das ist onBind, leider können wir in diesem Beispiel
12. September 2011
WebService mit StringArray - Part 3
Nabend,
die Suchbegriffe für Android WebService stellen alle meine anderen Beiträge in den Schatten. Deswegen will ich euch heute zeigen, wie man String[] als Parameter beim Aufruf vom WebService mit einem AndroidClient mit der Hilfe der Ableitung von Vector<String> und Implementierung von KvmSerializable.
Soviel zu langen Sätzen nun zum Part drei meines "Android und WebService"-Tutorial und dem Code.
Ich habe bereits in meinem Beitrag über AndroidWebServiceClient bereits gezeigt, wie ihr eine einfache Verbindung zum WebService herstellen könnt. Jetzt verändern wir den Parameter zum StringArray.
Solltet ihr einfach nach gleichem Prinzip ein Array also ein Object[] oder eins der primitiven Datentypen rüberreichen (int[]), werdet ihr schnell eine Exception bekommen, wie diese hier:
die Suchbegriffe für Android WebService stellen alle meine anderen Beiträge in den Schatten. Deswegen will ich euch heute zeigen, wie man String[] als Parameter beim Aufruf vom WebService mit einem AndroidClient mit der Hilfe der Ableitung von Vector<String> und Implementierung von KvmSerializable.
Soviel zu langen Sätzen nun zum Part drei meines "Android und WebService"-Tutorial und dem Code.
Ich habe bereits in meinem Beitrag über AndroidWebServiceClient bereits gezeigt, wie ihr eine einfache Verbindung zum WebService herstellen könnt. Jetzt verändern wir den Parameter zum StringArray.
Solltet ihr einfach nach gleichem Prinzip ein Array also ein Object[] oder eins der primitiven Datentypen rüberreichen (int[]), werdet ihr schnell eine Exception bekommen, wie diese hier:
Caused by: java.lang.RuntimeException: Cannot serialize: [Ljava.lang.String;@46107820
at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:629)
26. August 2011
einfacher Kompass
Da bin ich wieder,
da ich schon seit paar Tagen einen kleinen Kompass habe, werde ich nun ein Tutorial dafür schreiben.
Das wichtigste dafür ist der SensorManager.
da ich schon seit paar Tagen einen kleinen Kompass habe, werde ich nun ein Tutorial dafür schreiben.
Das wichtigste dafür ist der SensorManager.
SensorManager meinSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
meinSensorManager.registerListener(this, mSensorManager .getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL);
6. August 2011
Android WebService Client - Part 2b
Und da bin ich wieder,
den leichten Weg mit JavaClient kenn ihr nun.
Jetzt ist Android dran.
Wir bauen unseren Client auf den JavaWebService an, und hier sei gesagt, dass an sich auch ein WebService basierend auf PHP auch gehen sollte (nicht ausprobiert).
Für dieses Vorhaben brauchen wir noch die passende Library.
Ich habe es mit einer inzwischen deprecated umgesetzt.
HIER zu finden. Diese kopiert ihr bei euch ins Projekt und bindet dann ein.
(Rechtsklick im"Package Explorer" von Eclipse auf die Jar-Datei -> Build Path -> Add to Build Path)
Kommen wir zum Code,
als erstes brauchen wir die Zielpunkte:
den leichten Weg mit JavaClient kenn ihr nun.
Jetzt ist Android dran.
Wir bauen unseren Client auf den JavaWebService an, und hier sei gesagt, dass an sich auch ein WebService basierend auf PHP auch gehen sollte (nicht ausprobiert).
Für dieses Vorhaben brauchen wir noch die passende Library.
Ich habe es mit einer inzwischen deprecated umgesetzt.
HIER zu finden. Diese kopiert ihr bei euch ins Projekt und bindet dann ein.
(Rechtsklick im"Package Explorer" von Eclipse auf die Jar-Datei -> Build Path -> Add to Build Path)
Kommen wir zum Code,
als erstes brauchen wir die Zielpunkte:
- Methodennamen
- Namespace (package vom WebService)
- SOAP-Action (besteht aus Namespace und Methodennamen)
- URL (wo euer WebService erreichbar ist - "localhost" mit eurer IP ersetzten)
final private String METHOD_NAME = "getFriends";
final private String NAMESPACE = "http://webservice.alexroid.de/";
final private String SOAP_ACTION = "\""+NAMESPACE + METHOD_NAME+"\"";
final private String URL = "http://localhost:8080/friends/";
/ *
* Diese Daten könnt ihr eurer WSDL-Datei entnehmen,
* zu finden unter
* http://localhost:8080/friends?wsdl
* /
Labels:
Android,
AndroidHttpTransport,
anyType,
ksoap2,
webserviceclient
26. Juli 2011
Android, Proguard und Obfuscation
Da bin ich wieder und mit neuem Wissen zum Verbreiten.
Ich habe vor euch mit Obfuscation vertraut zu machen.
Quelle: WIKI
Dazu habe ich genutzt:
Ich habe vor euch mit Obfuscation vertraut zu machen.
Der Begriff Obfuscator (engl. obfuscate „verdunkeln“, „verwirren“) bzw. Quelltextverschleierung bezeichnet ein Mittel zur Verschleierung von Programmcode.
Ein Obfuscator ist eine Funktionsfamilie mit folgenden Eigenschaften:
- Er muss die Funktionalität des Originalprogramms erhalten,
- Der verschleierte Code darf höchstens polynomiell langsamer ausführbar sein als das Originalprogramm
- Der verschleierte Code verhält sich wie eine Black Box, d. h. er darf keine Information über seinen internen Zustand nach außen durchdringen lassen
Quelle: WIKI
Dazu habe ich genutzt:
Labels:
Android,
Ant,
Obfuscation,
ProGuard
13. Juli 2011
Layout prozentual setzten / layout in percent
Nabend,
eine wirklich simple Sache, die aber bei der Masse an R.attr nicht direkt ins Auge spring.
Das LinearLayout bietet die Möglichtkeit das Maximum an "Gewicht" der Kinder mit weightSum festzulegen. Und bei den Kindern könnt ihr deren Verhältnis mit layout_weight festlegen, das zusammen natürlich mit dem Wert weightSum übereinstimmt.
Bei einer Summe von 6.0 also 100% der Breite und Teilbreiten von 1.5 und 3.0, wird der View mit dem Wert von 3.0 eine Breite von 50% einnehmen. Der Wert 1.5 wird dementsprechend nur 25% belegen.
Hier ein XML Beispiel (Vorrausgesetzt wird das Basiswissen für Layouts/Views in Android-XML-Dateien):
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:weightSum="6.0">
<TextView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1.5" />
<TextView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1.5" />
<TextView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="3.0" />
</LinearLayout>
Mit orientation reguliert ihr, ob es sich bei eurer Bewichtung der Vies um Breite oder Höhe handelt.
Wie iht seht, ist es simple.
Da ich mich nur schon ein zweites Mal damit beschäftigte und beim dritten Mal, das Thema nicht wieder suchen will.. *g
Habt ihr nun auch was davon.
regards
5. Mai 2011
Serial Port Profil per Bluetooth (#Update)
Hallo,
da bin ich wieder auf meinem Osterurlaub.
Heute zeige ich euch, wie ihr euer Serial Port Profile (SPP) programmtechnisch bei einer Bluetooth(BT)-Verbindung aktiviert und mit einem Gerät verbindet.
Damit habe ich geschaft eine BT-Verbindung mit SPP zu einem Bezahlterminal zu erstellen.
da bin ich wieder auf meinem Osterurlaub.
Heute zeige ich euch, wie ihr euer Serial Port Profile (SPP) programmtechnisch bei einer Bluetooth(BT)-Verbindung aktiviert und mit einem Gerät verbindet.
Als erstes braucht ihr denn BluetoothAdaper des Geräts, diesen bekommt ihr durch die statische Methode des BluetoothAdaper :
- BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Desweiteren braucht ihr die UUID die eure Verbindung als SPP kennzeichnet.
- UUID sppUUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
Anschließen benutzt ihr die Methode listenUsingRfcommWithServiceRecord(String, UUID) um eine ein ServerSocket zu öffnen und auf Verbindungen warten.
Ab hier ist es nur noch ServerSocket-Verarbeitung. Im Vorfeld solltet ihr natürlich überprüfen, ob euer Gerät überhaupt BT hat und dieses auch aktiviert ist. Gerät sichtbar machen, darf auch nicht fehlen. Im Code sieht es anschließen so aus:
//UUID für den SPP
UUID sppUUID = UUID
.fromString("00001101-0000-1000-8000-00805f9b34fb");
BluetoothServerSocket serverSocket;
//BT-Adapter
BluetoothAdapter bluetoothAdapter = BluetoothAdapter .getDefaultAdapter();
if (bluetoothAdapter == null) {
// Device does not support Bluetooth
}
//Anschalten des BTs nachfragen, falls dieses deaktiviert ist
if (!bluetoothAdapter .isEnabled()) {
Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivity(enableBtIntent);
}
//Sichbarkeit des BT für 300 Sekunden nachfragen
Intent discoverableIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); discoverableIntent.putExtra( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(discoverableIntent);
//ServerSocket erstellen
try {
serverSocket = bluetoothAdapter
.listenUsingRfcommWithServiceRecord( "Dein Name der Verbindung", sppUUID);//Auf Verbindungsaufbau des SPP-Geräts waren
BluetoothSocket bluetoothSocket = serverSocket.accept();
//und anschließen verarbeiten
handleBluetoothSocket(bluetoothSocket); } catch (IOException e) {
Log.e("meine APP", "BT - SPP", e);
}
Ich hoffe es hilft euch bei euren Problemen weiter.
regards
regards
- - - - - - - - - - - - -
#Update - Permissions
Hallo noch mal,
wie ihr bestimmt schon gemerkt habt, müsst ihr auch die Permission für BT erlangen/nachfragen.
Das wird in der AndroidManifest.xml getan. Diese Datei findet ihr in eurem Projektordner(../AndroidManifest.xml).
Im manifest-Tag müsst ihr nun noch diese Zeile hinzufügen:
< uses-permission android:name="android.permission.BLUETOOTH" />
Solltet ihr selbst die Sichtbarkeit euren Gerät aktivieren,
bluetoothAdapter.startDiscovery()
so benötigt ihr auch:
< uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Alles nachzulesen im android.bluethooth package.
regards
Labels:
Android,
Bluetooth,
Serial Port Profile,
SPP
1. April 2011
Threadübergreifend GUI ändern
So lieblings Problem, wenn man es nicht kennt ;)
Ein Handler der in der Activity definiert wird, erlaubt es euch über ihr auf die Activity und den GUI-Thread zu zugreifen.
Die Message bietet euch einiges an Objekten und prim. Datentypen, die euch helfen euer Ziel zu erreichen.
Zitat: "arg1 and arg2 are lower-cost alternatives to using
Einfaches handling:
Message instanzieren, Werte füllen und zum Handler schicken.
Was euch auch noch behilflich sein könnte ist Timed und AsyncTask.
Ich verabschiede mich und wünsche euch viel Erfolg beim Programmieren.
regards
Alex
- Problembeschreibung
- Activity beinhaltet den View
- Thread/Runnable läuft nebenbei und soll dem View Text setzten
- Exception
- android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
- Lösung
- android.os.Handler
Ein Handler der in der Activity definiert wird, erlaubt es euch über ihr auf die Activity und den GUI-Thread zu zugreifen.
private Handler handler = new Handler(){Diese kann auch ggfs. auch als static deklariert werden.
public void handleMessage(android.os.Message msg) {
//DO smth.
}
};
Die Message bietet euch einiges an Objekten und prim. Datentypen, die euch helfen euer Ziel zu erreichen.
Zitat: "arg1 and arg2 are lower-cost alternatives to using
setData() if you only need to store a few integer values."Einfaches handling:
Message instanzieren, Werte füllen und zum Handler schicken.
Message message = new Message();
message.arg1=8; //int 1
message.arg2=15; //int 2
handler.sendMessage(message);
Was euch auch noch behilflich sein könnte ist Timed und AsyncTask.
Ich verabschiede mich und wünsche euch viel Erfolg beim Programmieren.
regards
Alex
Java, Android und ich! Hey ihr..
... seid dabei meinen neuen Blog zu lesen.
Hi,
ich bin ein FIAEler. Ihr kennt Noob und Nerd von Einslive? Nein? Wird langsam Zeit...
So nun könnt ihr euch sicher sein, was ich definitiv nicht bin!
Jetzt zu mir und zum Inhalt. Ich bin ein Androidentwickler und hier werde ich euch auf dem Laufendem halten. Hier erfahrt ihr die üblichen Schwierigkeiten mit der Programmierung von Apps und natürlich der passenden Lösung dazu :)
Ich habe letztes Jahr mit Android angefangen und habe mehrjährige Erfahrung mit Java. Und werde auch in der Zukunft auf beiden Gebieten tätig sein.
Ich heiße euch herzlich Willkommen! Auf gutes Programmieren.
regards
Alex
Hi,
ich bin ein FIAEler. Ihr kennt Noob und Nerd von Einslive? Nein? Wird langsam Zeit...
So nun könnt ihr euch sicher sein, was ich definitiv nicht bin!
Jetzt zu mir und zum Inhalt. Ich bin ein Androidentwickler und hier werde ich euch auf dem Laufendem halten. Hier erfahrt ihr die üblichen Schwierigkeiten mit der Programmierung von Apps und natürlich der passenden Lösung dazu :)
Ich habe letztes Jahr mit Android angefangen und habe mehrjährige Erfahrung mit Java. Und werde auch in der Zukunft auf beiden Gebieten tätig sein.
Ich heiße euch herzlich Willkommen! Auf gutes Programmieren.
regards
Alex
Abonnieren
Posts (Atom)