<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=79.240.46.5</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=79.240.46.5"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/79.240.46.5"/>
	<updated>2026-05-06T19:47:34Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Location_API&amp;diff=20064</id>
		<title>Android - Location API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Location_API&amp;diff=20064"/>
		<updated>2013-10-15T09:48:16Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://developer.android.com/training/location/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Location Client ===&lt;br /&gt;
Die Location Services senden die User Position durch einen location client. Dieser ist eine Instanz der Location Services Klasse &amp;#039;&amp;#039;&amp;#039;LocationClient&amp;#039;&amp;#039;&amp;#039;. Alle Location Infos gehen durch diesen Client&lt;br /&gt;
=== Google Play services APK ===&lt;br /&gt;
Location Services is part of the Google Play services APK. you should always check that the APK is installed before you attempt to connect to Location Services&lt;br /&gt;
  GooglePlayServicesUtil.isGooglePlayServicesAvailable()&lt;br /&gt;
&lt;br /&gt;
== Schnellstart ==&lt;br /&gt;
=== Position abfragen ===&lt;br /&gt;
* Create LocationClient (lc)&lt;br /&gt;
* Verbinde lc mit LocationServices&lt;br /&gt;
* Rufe die getLastLocation() Methode des lc auf&lt;br /&gt;
&lt;br /&gt;
== GooglePlayService Test ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class MainActivity extends FragmentActivity {&lt;br /&gt;
    ...&lt;br /&gt;
    // Global constants&lt;br /&gt;
    /*&lt;br /&gt;
     * Define a request code to send to Google Play services&lt;br /&gt;
     * This code is returned in Activity.onActivityResult&lt;br /&gt;
     */&lt;br /&gt;
    private final static int&lt;br /&gt;
            CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;&lt;br /&gt;
    ...&lt;br /&gt;
    // Define a DialogFragment that displays the error dialog&lt;br /&gt;
    public static class ErrorDialogFragment extends DialogFragment {&lt;br /&gt;
        // Global field to contain the error dialog&lt;br /&gt;
        private Dialog mDialog;&lt;br /&gt;
        // Default constructor. Sets the dialog field to null&lt;br /&gt;
        public ErrorDialogFragment() {&lt;br /&gt;
            super();&lt;br /&gt;
            mDialog = null;&lt;br /&gt;
        }&lt;br /&gt;
        // Set the dialog to display&lt;br /&gt;
        public void setDialog(Dialog dialog) {&lt;br /&gt;
            mDialog = dialog;&lt;br /&gt;
        }&lt;br /&gt;
        // Return a Dialog to the DialogFragment.&lt;br /&gt;
        @Override&lt;br /&gt;
        public Dialog onCreateDialog(Bundle savedInstanceState) {&lt;br /&gt;
            return mDialog;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
    /*&lt;br /&gt;
     * Handle results returned to the FragmentActivity&lt;br /&gt;
     * by Google Play services&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    protected void onActivityResult(&lt;br /&gt;
            int requestCode, int resultCode, Intent data) {&lt;br /&gt;
        // Decide what to do based on the original request code&lt;br /&gt;
        switch (requestCode) {&lt;br /&gt;
            ...&lt;br /&gt;
            case CONNECTION_FAILURE_RESOLUTION_REQUEST :&lt;br /&gt;
            /*&lt;br /&gt;
             * If the result code is Activity.RESULT_OK, try&lt;br /&gt;
             * to connect again&lt;br /&gt;
             */&lt;br /&gt;
                switch (resultCode) {&lt;br /&gt;
                    case Activity.RESULT_OK :&lt;br /&gt;
                    /*&lt;br /&gt;
                     * Try the request again&lt;br /&gt;
                     */&lt;br /&gt;
                    ...&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    ...&lt;br /&gt;
    private boolean servicesConnected() {&lt;br /&gt;
        // Check that Google Play services is available&lt;br /&gt;
        int resultCode =&lt;br /&gt;
                GooglePlayServicesUtil.&lt;br /&gt;
                        isGooglePlayServicesAvailable(this);&lt;br /&gt;
        // If Google Play services is available&lt;br /&gt;
        if (ConnectionResult.SUCCESS == resultCode) {&lt;br /&gt;
            // In debug mode, log the status&lt;br /&gt;
            Log.d(&amp;quot;Location Updates&amp;quot;,&lt;br /&gt;
                    &amp;quot;Google Play services is available.&amp;quot;);&lt;br /&gt;
            // Continue&lt;br /&gt;
            return true;&lt;br /&gt;
        // Google Play services was not available for some reason&lt;br /&gt;
        } else {&lt;br /&gt;
            // Get the error code&lt;br /&gt;
            int errorCode = connectionResult.getErrorCode();&lt;br /&gt;
            // Get the error dialog from Google Play services&lt;br /&gt;
            Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(&lt;br /&gt;
                    errorCode,&lt;br /&gt;
                    this,&lt;br /&gt;
                    CONNECTION_FAILURE_RESOLUTION_REQUEST);&lt;br /&gt;
&lt;br /&gt;
            // If Google Play services can provide an error dialog&lt;br /&gt;
            if (errorDialog != null) {&lt;br /&gt;
                // Create a new DialogFragment for the error dialog&lt;br /&gt;
                ErrorDialogFragment errorFragment =&lt;br /&gt;
                        new ErrorDialogFragment();&lt;br /&gt;
                // Set the dialog in the DialogFragment&lt;br /&gt;
                errorFragment.setDialog(errorDialog);&lt;br /&gt;
                // Show the error dialog in the DialogFragment&lt;br /&gt;
                errorFragment.show(getSupportFragmentManager(),&lt;br /&gt;
                        &amp;quot;Location Updates&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Htaccess&amp;diff=20063</id>
		<title>Htaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Htaccess&amp;diff=20063"/>
		<updated>2013-10-15T09:47:04Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Spezielle Optionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anwendung von .htaccess - Dateien ==&lt;br /&gt;
=== Weiterführende Links: ===&lt;br /&gt;
http://httpd.apache.org/docs/1.3/howto/htaccess.html&lt;br /&gt;
&lt;br /&gt;
von: http://www.uni-duesseldorf.de/Service/Webmaster/htaccess.php3 Juli 2006&lt;br /&gt;
&lt;br /&gt;
Referenz: Apache Manual: http://www.uni-duesseldorf.de/apache-manual/&lt;br /&gt;
&lt;br /&gt;
[[Apache Mod Rewrite Syntax]]&lt;br /&gt;
&lt;br /&gt;
=== Wozu braucht man das ?===&lt;br /&gt;
An wen ein HTTP-Server Dokumente herausgibt, welche spezielle Verarbeitung er u.U. bei einer spezifischen Anforderung (einem request) durchführt - all das wird zunächst durch eine von der Server-Software abhängigen Konfiguration bestimmt, die ein Administrator - ein Webmaster - eingerichtet hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oft ist es aber wünschenswert, daß einzelne Verantwortliche für eine Dokumentenhierarchie auf dem Web-Server selbst ohne Intervention des Webmasters Setzungen vornehmen können, daß z.B. auf einzelne Dokumente oder alle in einem bestimmten Verzeichnis nur ein Zugriff aus bestimmten Domains oder mit verifiziertem Usernamen möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beim Apache-HTTP-Server wie seinem Vorgänger, dem NCSA-httpd, gibt es diese Möglichkeiten durch die Einrichtung von .htaccess-Dateien in dem jeweiligen Verzeichnis. In der folgenden Darstellung wird als Referenz jeweils ein Verweis auf den entsprechenden Abschnitt in der lokale Kopie der Apache-Dokumentation für die Version 1.2 gegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Achtung:&amp;#039;&amp;#039;&amp;#039; In der Server-Konfiguration kann ein anderer Name als .htaccess vereinbart sein (AccesFileName-Direkt ive).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zweiter Hinweis:&amp;#039;&amp;#039;&amp;#039; Die Datei muß für den HTTP-Server lesbar sein, z.B. dadurch erreicht, daß sie öffentlich lesbar ist:&lt;br /&gt;
&lt;br /&gt;
 chmod 644 .htaccess &lt;br /&gt;
&lt;br /&gt;
=== Zugriffsbeschränkung auf eine Domain === &lt;br /&gt;
==== für alle Dateien in einem Verzeichnis ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 order deny,allow&lt;br /&gt;
 deny  from all&lt;br /&gt;
 allow from .uni-duesseldorf.de 134.99 &lt;br /&gt;
&lt;br /&gt;
Alle Dateien in dem Verzeichnis werden nur an Clients ausgeliefert, die eine IP-Adresse beginnend mit 134.99 oder einen Hostnamen endend mit uni-duesseldorf.de besitzen; anderenfalls erfolgt eine Fehlermeldung des Servers (403 Forbidden).&lt;br /&gt;
&lt;br /&gt;
Natürlich genügt in vielen Fällen eine der Alternativen. Beachten Sie dabei die Unterschiede:&lt;br /&gt;
&lt;br /&gt;
* Die Angabe des Domain-Namens allein schließt - bewußt oder nicht - den Zugriff von PC&amp;#039;s aus, die nicht im Domain Name System (DNS) registriert sind.&lt;br /&gt;
* Die Angabe des IP-Subnetzes allein kann andere ausschließen, die organisatorisch zur gleichen Domain gehören, technisch aber in einem anderen Subnetz hängen. &lt;br /&gt;
&lt;br /&gt;
Wie lässt sich diese Zugriffsbeschränkung testen? Normalerweise benötigt man dazu einen Internet-Zugang über einen anderen Provider (T-Online, AOL, Compuserve etc.). Oder man benutzt einen Browser auf dem Server selbst z.B. in folgender Weise:&lt;br /&gt;
&lt;br /&gt;
 lynx http://localhost/Service/Webmaster/htaccess.phtml &lt;br /&gt;
&lt;br /&gt;
Der Zugriff erfolgt dann über das Loopback-Interface mit der IP-Adresse 127.0.0.1.&lt;br /&gt;
&lt;br /&gt;
Referenz: order, deny, allow. &lt;br /&gt;
&lt;br /&gt;
==== für einzelne Dateien ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files huh*.html&amp;gt;&lt;br /&gt;
 order deny,allow&lt;br /&gt;
 deny  from all&lt;br /&gt;
 allow from .uni-duesseldorf.de 134.99&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zugriffsbeschränkung wie oben gilt jetzt nur für die Dateien, deren Namen auf das hinter Files angegebene Muster passen. Es kann ein einzelner Name angegeben werden oder ein Muster mit den Wildcard-Zeichen ? für ein beliebiges einzelnes Zeichen oder * für eine beliebige Folge von Zeichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schließlich sind auch feinere Muster über reguläre Ausdrücke möglich. Die Syntax der Files-Direktive dafür ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files ~ &amp;quot;regexp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Referenz: &amp;lt;Files&amp;gt;, order, deny, allow.&lt;br /&gt;
&lt;br /&gt;
=== Zugriffsbeschränkung über Passwort ===&lt;br /&gt;
==== für ein Verzeichnis ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName MeyersLeute&lt;br /&gt;
 AuthUserFile /home/meyer/passwd&lt;br /&gt;
 require valid-user&lt;br /&gt;
&lt;br /&gt;
Dokumente in einem Verzeichnis mit dieser .htaccess-Datei (oder einem Unterverzeichnis) können erst nach Eingabe eines gültigen Benutzernamen und Passwortes gelesen werden. Der Wert hinter AuthName wird vom Browser in der Dialog-Box für die Passwortabfrage angezeigt und dient gleichzeitig dazu, andere Dokumente mit dem gleichen Schutz zu erkennen und einmal eingelesene Werte für Username und Password ohne erneute Abfrage unmittelbar zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Hinter AuthUserFile steht der Pfad der Passwortdatei, die die Benutzernamen und (verschlüsselten) Passwörter enthält. Sie sieht etwa so aus:&lt;br /&gt;
&lt;br /&gt;
 /home/meyer/passwd&lt;br /&gt;
&lt;br /&gt;
 meyer:xm.kPd4VJc3Fo&lt;br /&gt;
 mueller:eJFQCL8GftDXI&lt;br /&gt;
&lt;br /&gt;
Auch die Passwortdatei muß für den HTTP-Server lesbar sein. Gerade deshalb sollte sie niemals in demselben Bereich liegen wie die vom Server bedienten Dokumente, da sonst zumindest die gültigen Benutzernamen lesbar wären. (Aus diesem Grund müssen Sie aber u.U. daran denken, auch das entsprechende Verzeichnis - wie /home/meyer im Beispiel - für den HTTP-Server zumindest suchbar zu setzen, also etwa:&lt;br /&gt;
&lt;br /&gt;
    chmod 711 /home/meyer &lt;br /&gt;
&lt;br /&gt;
Angelegt und gepflegt werden kann die Passwortdatei mit dem Programm htpasswd:&lt;br /&gt;
&lt;br /&gt;
    htpasswd -c /home/meyer/passwd meyer&lt;br /&gt;
    htpasswd /home/meyer/passwd mueller &lt;br /&gt;
&lt;br /&gt;
Referenz: AuthType, AuthName, AuthUserFile, require.&lt;br /&gt;
&lt;br /&gt;
==== für einzelne Dateien ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName MeyersLeute&lt;br /&gt;
 AuthUserFile /home/meyer/passwd&lt;br /&gt;
 &amp;lt;Files Huh*.html&amp;gt;&lt;br /&gt;
 require user meyer mueller&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kombination von 2. und 3. - Passwortschutz für einzelne Dateien in dem aktuellen Verzeichnis. Beim require wird hier noch eine andere Alternative gezeigt: die Aufzählung einzelner Benutzernamen aus der Passwortdatei. Wenn neue Benutzer in der Passwortdatei ergänzt werden, haben diese noch keinen Zugriff auf die so geschützten Seiten.&lt;br /&gt;
&lt;br /&gt;
Wenn die gleiche Liste von Benutzern an mehreren Stellen verwendet werden soll, ist die Definition der Liste über eine Gruppendatei empfehlenswert. Für diese dritte Alternative bzgl. der require-Direktive sind fogende Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
1. In der .htaccess-Datei wird eine Gruppendatei angegeben:&lt;br /&gt;
 AuthGrouprFile /home/meyer/groups&lt;br /&gt;
Für den Ort der Ablage dieser Datei gelten dieselben Erwägungen wie für die Passwortdatei oben.&lt;br /&gt;
2. In der require-Direktive wird jetzt auf eine Gruppendefinition in der Gruppendatei Bezug genommen:&lt;br /&gt;
 require group meyers&lt;br /&gt;
3. Die Gruppendatei ist eine einfache Textdatei mit je einer Gruppendefinition pro Zeile in folgender Form: &lt;br /&gt;
&lt;br /&gt;
 /home/meyer/groups&lt;br /&gt;
 meyers: meyer mueller&lt;br /&gt;
&lt;br /&gt;
Referenz: AuthType, AuthName, AuthUserFile, AuthGroupFile, &amp;lt;Files&amp;gt;, require. &lt;br /&gt;
&lt;br /&gt;
===Spezielle Optionen===&lt;br /&gt;
==== automatischer Index (Directory Listing)====&lt;br /&gt;
ausführliche Infos hier: [[htaccess - Directory Listing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Options +Indexes&lt;br /&gt;
&lt;br /&gt;
Mittels der Options-Direktive können - so von der globalen Server-Konfiguration her erlaubt - Voreinstellungen für Verarbeitungsoptionen für das aktuelle Verzeichnis und Unterverzeichnisse überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Die gezeigte Variante weist den Server an, bei der Referenz auf das aktuelle Verzeichnis oder ein Unterverzeichnis ein Directory-Listing als Index-Datei automatisch zu generieren. Er macht dies allerdings nur, wenn nicht schon eine Index-Datei (mit vordefiniertem Namen wie index.html) vorhanden ist. Ggf. kann man die hier bekannten Namen mit der Direktive&lt;br /&gt;
&lt;br /&gt;
    DirectoryIndex Welcome.html &lt;br /&gt;
&lt;br /&gt;
einschränken.&lt;br /&gt;
&lt;br /&gt;
Referenz: Options, DirectoryIndex.&lt;br /&gt;
&lt;br /&gt;
==== Startdatei festlegen ====&lt;br /&gt;
Mit dem vorigen Beispiel kann man auch festlegen welche Dateien beim Aufruf eines Verzeichnisses (oder der Webadresse) an den Browser geliefert werden sollen. Manchmal hat man den Fall das die Startdatei eines CMS index.php heißt und bei Wartungsarbeiten die Datei index.html aufgerufen werden soll.&lt;br /&gt;
&lt;br /&gt;
 DirectoryIndex index.html index.php start.html&lt;br /&gt;
&lt;br /&gt;
weist den Apache an falls vorhanden die Datei index.html aufzurufen, wenn nicht die index.php und so weiter.&lt;br /&gt;
&lt;br /&gt;
Bei Wartungsarbeiten kann man nun einfach eine index.html aufspielen die bei Aufruf der Domain angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
==== PHP - Werte setzen ====&lt;br /&gt;
Wenn der Server das erlaubt kann man es folgendermaßen machen:&lt;br /&gt;
===== PHP Memory Limit =====&lt;br /&gt;
 php_value memory_limit 256M&lt;br /&gt;
&lt;br /&gt;
==== Error Reporting ====&lt;br /&gt;
===== Produktiv Betrieb =====&lt;br /&gt;
(Fehler unterdrückt aber protokolliert)&lt;br /&gt;
&lt;br /&gt;
 php_value error_reporting 2047&lt;br /&gt;
 php_value display_errors 0&lt;br /&gt;
 php_value log_errors 1&lt;br /&gt;
 php_value error_log /eigener/pfad/fehler.log&lt;br /&gt;
&lt;br /&gt;
===== Entwicklung =====&lt;br /&gt;
hier sollte display_errors auf 1 stehen&lt;br /&gt;
&lt;br /&gt;
siehe auch [[PHP - Error Reporting / Fehlerbehandlung]]&lt;br /&gt;
&lt;br /&gt;
siehe auch [[TYPO3 - Error Reporting / Fehlerbehandlung]]&lt;br /&gt;
&lt;br /&gt;
==== Skripte sperren ====&lt;br /&gt;
z.B. bei Überlastung durch ein Skript (hier im Beispiel meineDomain.de/ajax/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{REQUEST_URI}   (.*)ajax(.*)   [NC]&lt;br /&gt;
RewriteRule ^(.*)  - [F]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Weiterleitung mit .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Hinweis: eine Alternative hierfür ist eine PHP Weiterleitung ([[PHP - Tipps und Tricks]])&lt;br /&gt;
Quelle Dr.Web 28.12.2006&lt;br /&gt;
&lt;br /&gt;
Sie können sowohl Zugriffe auf bestimmte Dateien als auch auf Verzeichnisse bequem weiterleiten. Das klappt innerhalb der eigenen Domain, aber auch mit externen Verweisen.&lt;br /&gt;
&lt;br /&gt;
Die Datei .htaccess kann mit jedem Text-Editor bearbeitet werden. Eine Umleitung könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielverzeichnis http://www.drweb.de&lt;br /&gt;
&lt;br /&gt;
Ruft jemand die URL http://www.drweb.de/beispielverzeichnis auf landet er ohne weiteren Zwischenstopp direkt auf der Startseite.&lt;br /&gt;
&lt;br /&gt;
Mit Einzeldateien klappt es auch:&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielseite.shtml http://www.drweb.de&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielseite.shtml neueseite.shtml&lt;br /&gt;
&lt;br /&gt;
Wer mag, kann die gesamte Domain auf eine andere umleiten&lt;br /&gt;
&lt;br /&gt;
 Redirect / http://www.drweb.de/&lt;br /&gt;
&lt;br /&gt;
Nützlich während Bauarbeiten, bei Reparaturen oder wenn Dateien durch andere ersetzt wurden. Da die Umleitung serverseitig geschieht, spielt der Browser des Besuchers keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Weitere nützliche Beispiele:&lt;br /&gt;
&lt;br /&gt;
Den Domainnamen ohne www auf den mit www umleiten. Es wird der Code 301 mitgegeben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^www\. [NC]&lt;br /&gt;
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weiterleitung über IP===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Options +FollowSymlinks&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
&lt;br /&gt;
#IP Bedingung&lt;br /&gt;
RewriteCond %{REMOTE_HOST} ^85\.13\.128\.137&lt;br /&gt;
&lt;br /&gt;
#Zielseite erlauben&lt;br /&gt;
RewriteCond %{REQUEST_URI} !/ip-remote\.php$&lt;br /&gt;
&lt;br /&gt;
#Umleiten&lt;br /&gt;
#RewriteRule ^/* http://demo.webmynet.de/ip-remote.php [R,NE,NC]&lt;br /&gt;
RewriteRule /(.*)$ /ip-remote.php [R=302,L]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erlaubte Anweisungen in .htaccess-Dateien ==&lt;br /&gt;
&lt;br /&gt;
http://de.selfhtml.org/servercgi/server/htaccess.htm&lt;br /&gt;
&lt;br /&gt;
Auszug (Datum des Zugriffs: 10.9.2007): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Die Anweisung AllowOverride kann nicht innerhalb einer .htaccess notiert werden, sondern wird ausschließlich vom Server-Administrator in der zentralen Konfigurationsdatei vorgegeben. Um den AllowOverride-Wert in Erfahrung zu bringen, benötigen Sie Einsicht in die Serverkonfiguration. Kontaktieren Sie dazu gegebenenfalls Ihren Webhosting-Provider. Dieser kann den Wert auch ändern, falls Sie bestimmte bisher nicht erlaubte Anweisungen verwenden möchten. Im einzelnen gibt es dafür folgende mögliche Werte:&lt;br /&gt;
&lt;br /&gt;
    * Mit AllowOverride None wird der Webserver angewiesen, .htaccess-Dateien zu ignorieren. Das ist im Übrigen die Voreinstellung.&lt;br /&gt;
    * Mit AllowOverride All wird festgelegt, dass in einer .htaccess-Datei (so gut wie) sämtliche zentrale Vorgaben überschrieben und damit abgeändert werden dürfen. Das kann bedeuten, dass Vorhaben, die eigentlich verboten sind (beispielsweise die Ausführung von CGI-Scripts), mit Hilfe einer .htaccess-Datei erlaubt werden. Als Server-Administrator werden Sie diese Anweisung also nur sehr vorsichtig einsetzen.&lt;br /&gt;
    * Mit AllowOverride Options wird festgelegt, dass in einer .htaccess-Datei nach unten Anweisungen zur Steuerung spezieller Verzeichniseigenschaften zulässig sind.&lt;br /&gt;
    * Mit AllowOverride Limit wird festgelegt, dass in einer .htaccess-Datei nach unten Zugriffe von bestimmten Hosts erlaubt oder untersagt werden können.&lt;br /&gt;
    * Mit AllowOverride Indexes wird festgelegt, dass in einer .htaccess-Datei nach unten Anweisungen zur Steuerung von Verzeichnisindizes zulässig sind.&lt;br /&gt;
    * Mit AllowOverride FileInfo wird festgelegt, dass in einer .htaccess-Datei Anweisungen zur Akzeptanz bestimmter Dokumenttypen zulässig sind - beispielsweie, um nach unten Individuelle Fehlermeldungen ausgeben zu können.&lt;br /&gt;
    * Mit AllowOverride AuthConfig wird festgelegt, dass in einer .htaccess-Datei Autorisierungsanweisungen stehen dürfen - das betrifft beispielsweise Regelungen zum nach unten Passwortschutz.&lt;br /&gt;
&lt;br /&gt;
Diese Werte können auch miteinander kombiniert werden. All ist der mächtigste Parameter, mit dem alles das zugelassen wird, was die anderen Parameter steuern.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Ändern muß natürlich der Server neu gestartet werden (bei Debian: apache restart)&lt;br /&gt;
&lt;br /&gt;
== Moved Permanently 301 Redirect ==&lt;br /&gt;
Quelle:http://www.fladi.de/2008/04/28/howto-webseiten-redirect-mit-301/ (25.7.2008)&lt;br /&gt;
&lt;br /&gt;
Was ist ein 301 redirect?&lt;br /&gt;
&lt;br /&gt;
301 redirect ist die wohl beste Möglichkeit das aktuelle Suchmaschinenranking beim Umzug einer Seite oder des gesamten Webauftritts zu behalten. Der Code “301″ steht für “moved permanently” (dauerhaft verschoben). Ein solches Redirect wird in der .htaccess Datei eintragen. Es trägt die Form (alles in einer Zeile):&lt;br /&gt;
&lt;br /&gt;
 redirect 301 pfad/alte/seite/datei.html http://www.domain.de/pfad/neue/seite/datei.html &lt;br /&gt;
&lt;br /&gt;
Beachte, kein “http://www” in das erste Statement zu schreiben. Es muss der komplette Pfad vom Root deines Webservers angegeben werden. Schauen wir uns die Zeile nun nochmal genauer an:&lt;br /&gt;
&lt;br /&gt;
    * “redirect 301″ - die eigentliche Anweisung für den Webserver&lt;br /&gt;
    * “/pfad/alte/seite/datei.html” - die Seite die umgeleitet werden soll&lt;br /&gt;
    * “http://www.domain.de/pfad/neue/seite.datei.html” - die komplette neue URL&lt;br /&gt;
&lt;br /&gt;
Wie reagiert nun ein Suchmaschinen-Spider auf eine solche Umleitung? Die .htaccess wird ja nicht vom Spider ausgelesen, sondern vom Webserver “ausgeführt”. Der Spider jedoch erkennt den Statuscode, den der Webserver liefert. Beim nächsten Update seiner Datenbank sollte die Suchmaschine nun die alte URL aus dem Index werfen und die neue aufnehmen. Häufig kommt es aber auch vor, dass alte und neue URL gemischt auftauchen. Auch leichte Änderungen im Pagerank können auftreten. Es dauert so ca. 6-8 Wochen bis sich die Änderungen an der Seite auch in den Suchergebnissen niederschlagen.&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten von 301 redirect:&lt;br /&gt;
&lt;br /&gt;
   1. Um ALLE Dateien Deiner Domain mithilfe einer .htaccess umzuleiten kannst Du (auf einem Unix/Linux-Webserver) i.d.R. folgendes verwenden:&lt;br /&gt;
 redirect 301 ^(.*)$ http://www.domain.de&lt;br /&gt;
 redirectMatch permanent ^(.*)$ http://www.domain.de&lt;br /&gt;
&lt;br /&gt;
Um Deine alte Startseite (index.html) umzuleiten:&lt;br /&gt;
 redirect 301 /index.html http://www.domain.de/index.html&lt;br /&gt;
 redirect permanent /index.html http://www.domain.de/index.html&lt;br /&gt;
&lt;br /&gt;
2. Wenn Du http://domain.de auf http://www.domain.de umleiten möchtest und mod_rewrite auf dem Webserver verfügbar ist, erreichst Du dies durch folgende .htaccess:&lt;br /&gt;
&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteCond %{HTTP_HOST} ^domain\.de&lt;br /&gt;
 RewriteRule ^(.*)$ http://www.domain.de/$1 [R=permanent,L]&lt;br /&gt;
&lt;br /&gt;
 oder&lt;br /&gt;
&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteCond %{HTTP_HOST} ^domain\.de$ [NC]&lt;br /&gt;
 RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301,L]&lt;br /&gt;
&lt;br /&gt;
3. Alle .html Dateien auf .php Dateien umzuleiten ist durch mod_rewrite auch kein großes Problem:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteBase /&lt;br /&gt;
 RewriteRule (.*).html$ /$1.php&lt;br /&gt;
&lt;br /&gt;
4. Um ein Verzeichnis und alles darunter umzuleiten:&lt;br /&gt;
&lt;br /&gt;
 redirectMatch 301 ^/verzeichnis-alt/(.*) http://www.domain.de/verzeichnis-neu/&lt;br /&gt;
&lt;br /&gt;
=== Warum nicht per META-Tag redirect machen? ===&lt;br /&gt;
&lt;br /&gt;
Die Umleitung per META-Tag erfolgt direkt in der aufgerufenen Seite. Dort wird im HEAD-Teil&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;meta http-equiv=”refresh” content=”0; url=http://www.domain.de/”&amp;gt;&lt;br /&gt;
eingetragen. Hierbei bewirkt das “content=10″, dass der Browser nach 10 Sekunden die darauffolgende URL aufruft. Wenn man “content=0″ einträgt wird die Umleitung sofort ausgeführt. Ein paar alte Browser unterstützen diese Art der Umleitung nicht. Deshalb ist es besser noch zusätzlich den Link (neue Domain) mit anzugeben.&lt;br /&gt;
&lt;br /&gt;
Technisch gesehen liefert die angefragte Seite, wie auch die Seite auf die umgeleitet wird, einen Statuscode “200 OK” zurück. Es sind also zwei unabhängige Seiten. Dementsprechend versucht die Suchmaschinen auch beide Seiten zu indizieren. Hier genau liegt aber das Problem. Denn der Spider des Suchmaschinenbetreibers erkennt die Umleitung und wertet Deine Seite deshalb u.U. ab, da es sich um eine beliebte SPAM-Methode handelt. So könnte man 1000 Domains mit solchen Seiten und jeder Menge Keywords einrichten. Echte Besucher (kein Spider) werden umgeleitet auf die eigentliche Seite. Indiziert wird aber nicht nur die eigentliche Seite sondern auch die 1000 Domains mit Keywords, die meist gar nichts mit dem eingentlichen Inhalt zu tun haben.&lt;br /&gt;
&lt;br /&gt;
Beim 301 redirect wird hingegen nur die echte Zielseite in den Index aufgenommen und durch den Statuscode kann der Suchmaschinenbetreiber zusätzlich noch die veralteten Seite aus dem Index werfen. Dies ist also der beste Weg um alte Seiten auf neue umzuleiten und gleichzeitig wird auch der Page Rank mit übertragen.&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Location_API&amp;diff=20062</id>
		<title>Android - Location API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Location_API&amp;diff=20062"/>
		<updated>2013-10-15T08:18:56Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: Die Seite wurde neu angelegt: „http://developer.android.com/training/location/index.html   == Einleitung == === Location Client === Die Location Services senden die User Position durch einen lo…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://developer.android.com/training/location/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Location Client ===&lt;br /&gt;
Die Location Services senden die User Position durch einen location client. Dieser ist eine Instanz der Location Services Klasse &amp;#039;&amp;#039;&amp;#039;LocationClient&amp;#039;&amp;#039;&amp;#039;. Alle Location Infos gehen durch diesen Client&lt;br /&gt;
=== Google Play services APK ===&lt;br /&gt;
Location Services is part of the Google Play services APK. you should always check that the APK is installed before you attempt to connect to Location Services&lt;br /&gt;
  GooglePlayServicesUtil.isGooglePlayServicesAvailable()&lt;br /&gt;
&lt;br /&gt;
== GooglePlayService Test ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class MainActivity extends FragmentActivity {&lt;br /&gt;
    ...&lt;br /&gt;
    // Global constants&lt;br /&gt;
    /*&lt;br /&gt;
     * Define a request code to send to Google Play services&lt;br /&gt;
     * This code is returned in Activity.onActivityResult&lt;br /&gt;
     */&lt;br /&gt;
    private final static int&lt;br /&gt;
            CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;&lt;br /&gt;
    ...&lt;br /&gt;
    // Define a DialogFragment that displays the error dialog&lt;br /&gt;
    public static class ErrorDialogFragment extends DialogFragment {&lt;br /&gt;
        // Global field to contain the error dialog&lt;br /&gt;
        private Dialog mDialog;&lt;br /&gt;
        // Default constructor. Sets the dialog field to null&lt;br /&gt;
        public ErrorDialogFragment() {&lt;br /&gt;
            super();&lt;br /&gt;
            mDialog = null;&lt;br /&gt;
        }&lt;br /&gt;
        // Set the dialog to display&lt;br /&gt;
        public void setDialog(Dialog dialog) {&lt;br /&gt;
            mDialog = dialog;&lt;br /&gt;
        }&lt;br /&gt;
        // Return a Dialog to the DialogFragment.&lt;br /&gt;
        @Override&lt;br /&gt;
        public Dialog onCreateDialog(Bundle savedInstanceState) {&lt;br /&gt;
            return mDialog;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
    /*&lt;br /&gt;
     * Handle results returned to the FragmentActivity&lt;br /&gt;
     * by Google Play services&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    protected void onActivityResult(&lt;br /&gt;
            int requestCode, int resultCode, Intent data) {&lt;br /&gt;
        // Decide what to do based on the original request code&lt;br /&gt;
        switch (requestCode) {&lt;br /&gt;
            ...&lt;br /&gt;
            case CONNECTION_FAILURE_RESOLUTION_REQUEST :&lt;br /&gt;
            /*&lt;br /&gt;
             * If the result code is Activity.RESULT_OK, try&lt;br /&gt;
             * to connect again&lt;br /&gt;
             */&lt;br /&gt;
                switch (resultCode) {&lt;br /&gt;
                    case Activity.RESULT_OK :&lt;br /&gt;
                    /*&lt;br /&gt;
                     * Try the request again&lt;br /&gt;
                     */&lt;br /&gt;
                    ...&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    ...&lt;br /&gt;
    private boolean servicesConnected() {&lt;br /&gt;
        // Check that Google Play services is available&lt;br /&gt;
        int resultCode =&lt;br /&gt;
                GooglePlayServicesUtil.&lt;br /&gt;
                        isGooglePlayServicesAvailable(this);&lt;br /&gt;
        // If Google Play services is available&lt;br /&gt;
        if (ConnectionResult.SUCCESS == resultCode) {&lt;br /&gt;
            // In debug mode, log the status&lt;br /&gt;
            Log.d(&amp;quot;Location Updates&amp;quot;,&lt;br /&gt;
                    &amp;quot;Google Play services is available.&amp;quot;);&lt;br /&gt;
            // Continue&lt;br /&gt;
            return true;&lt;br /&gt;
        // Google Play services was not available for some reason&lt;br /&gt;
        } else {&lt;br /&gt;
            // Get the error code&lt;br /&gt;
            int errorCode = connectionResult.getErrorCode();&lt;br /&gt;
            // Get the error dialog from Google Play services&lt;br /&gt;
            Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(&lt;br /&gt;
                    errorCode,&lt;br /&gt;
                    this,&lt;br /&gt;
                    CONNECTION_FAILURE_RESOLUTION_REQUEST);&lt;br /&gt;
&lt;br /&gt;
            // If Google Play services can provide an error dialog&lt;br /&gt;
            if (errorDialog != null) {&lt;br /&gt;
                // Create a new DialogFragment for the error dialog&lt;br /&gt;
                ErrorDialogFragment errorFragment =&lt;br /&gt;
                        new ErrorDialogFragment();&lt;br /&gt;
                // Set the dialog in the DialogFragment&lt;br /&gt;
                errorFragment.setDialog(errorDialog);&lt;br /&gt;
                // Show the error dialog in the DialogFragment&lt;br /&gt;
                errorFragment.show(getSupportFragmentManager(),&lt;br /&gt;
                        &amp;quot;Location Updates&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_Development_-_Google_Maps&amp;diff=20061</id>
		<title>Android Development - Google Maps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_Development_-_Google_Maps&amp;diff=20061"/>
		<updated>2013-10-15T08:08:58Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* MapView Activity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Link  auf Google Maps als Content Provider ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Possible geo uris:&lt;br /&gt;
// geo:lat,long&lt;br /&gt;
// geo:lat,long?z=zoom&lt;br /&gt;
// geo:0,0?q=AddressOrPlace&lt;br /&gt;
double latitude = 48.3895;&lt;br /&gt;
double longitude = 9.1869;&lt;br /&gt;
int zoom = 13;&lt;br /&gt;
String uriBegin = &amp;quot;geo:&amp;quot; + latitude + &amp;quot;,&amp;quot; + longitude;&lt;br /&gt;
String query = latitude + &amp;quot;,&amp;quot; + longitude;&lt;br /&gt;
String encodedQuery = Uri.encode(query);&lt;br /&gt;
String uriString = uriBegin + &amp;quot;?q=&amp;quot; + encodedQuery + &amp;quot;&amp;amp;z=&amp;quot; + zoom;&lt;br /&gt;
Uri uri = Uri.parse(uriString);&lt;br /&gt;
i = new Intent(android.content.Intent.ACTION_VIEW, uri);&lt;br /&gt;
showActivity(i);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MapView Activity ==&lt;br /&gt;
 https://developers.google.com/maps/documentation/android/?hl=de //veraltet&lt;br /&gt;
 https://developers.google.com/maps/documentation/android/intro&lt;br /&gt;
 http://ddewaele.github.io/GoogleMapsV2WithActionBarSherlock/part1&lt;br /&gt;
&lt;br /&gt;
Mit der Google Maps API v2 verändern sich ein paar Dinge:&lt;br /&gt;
* Die API ist jetzt teil des Google Play services SDK &lt;br /&gt;
* Maps sind jetzt in der MapFragment class gekapselt, einer Erweiterung der Fragment class. Dadurch kann man Karten als Teil einer größeren Activity nutzen. Die Karte kann auch Teil eines größeren UIs sein.&lt;br /&gt;
* Als MapFragment Klasse kann man sie implementieren indem man die Standard Activity Klasse erweitert (statt der Erweiterung einer MapActivity in v1)&lt;br /&gt;
* Vektorbasierte Kacheln -&amp;gt; schneller, weniger Speicher&lt;br /&gt;
* Verbessertes Caching&lt;br /&gt;
* 3D Funktionalität. Mittels User Viewpoint sind Karten mit Perspektive möglich.&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
* Google Play Services SDK muß installiert sein (SDK Manager)&lt;br /&gt;
* In Eclipse muß folgendes Projekt importiert sein: myadtfolder/sdk/extras/google/google_play_services/libproject/google-play-services_lib damit die Packages zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
=== Projekt und API Key ===&lt;br /&gt;
* Project Properties &amp;gt; Android &amp;gt; Project Build Targets &amp;gt; Google APIs wählen&lt;br /&gt;
* darunter bei Libaries die google-play-services_lib hinzufügen&lt;br /&gt;
* Fingerprint holen&lt;br /&gt;
* Registrieren auf der google developer console und API Schlüssel holen&lt;br /&gt;
&lt;br /&gt;
=== Manifest Datei - Permissions und Key registrieren ===&lt;br /&gt;
Im Beispiel  sind Permissions für diverse Zwecke rund um Kartendienste vorgesehen (siehe Kommentare)&lt;br /&gt;
&lt;br /&gt;
vor application tag&lt;br /&gt;
 &amp;lt;uses-library android:name=&amp;quot;com.google.android.maps&amp;quot; /&amp;gt;&lt;br /&gt;
Permissions (die erste nur bei Einsatz der ActionSherlock Toolbar)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Google Maps related permissions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;permission android:name=&amp;quot;com.ecs.google.maps.v2.actionbarsherlock.permission.MAPS_RECEIVE&amp;quot; android:protectionLevel=&amp;quot;signature&amp;quot;/&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.example.mapdemo.permission.MAPS_RECEIVE&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Network connectivity permissions --&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- Access Google based webservices --&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.google.android.providers.gsf.permission.READ_GSERVICES&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- External storage for caching. --&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- My Location --&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_COARSE_LOCATION&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Maps API needs OpenGL ES 2.0. --&amp;gt;&lt;br /&gt;
&amp;lt;uses-feature android:glEsVersion=&amp;quot;0x00020000&amp;quot; android:required=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Application Tag wird der API-Key hinterlegt:&lt;br /&gt;
 &amp;lt;meta-data android:name=&amp;quot;com.google.android.maps.v2.API_KEY&amp;quot; android:value=&amp;quot;INSERT_YOUR_API_KEY_HERE&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ein MapFragment hinzufügen ===&lt;br /&gt;
Wir fügen ein Map Fragment zum Standard Layout hinzu &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis:&amp;#039;&amp;#039;&amp;#039; Fragments gehen erst ab API11 - Honeycomb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FrameLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
	android:id=&amp;quot;@+id/root&amp;quot;&lt;br /&gt;
	android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
	android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
	android:orientation=&amp;quot;horizontal&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;fragment android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
		  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
		  android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
		  android:name=&amp;quot;com.google.android.gms.maps.MapFragment&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/FrameLayout&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Abwärtskompatibilität ===&lt;br /&gt;
Um die neue Google Maps V2 API auf älteren Geräten zu nutzen muß man 3 Dinge tun:&lt;br /&gt;
&lt;br /&gt;
* Im Layout ein SupportMapFragment statt ein MapFragment nutzen&lt;br /&gt;
* eine FragmentActivity statt einer Activity nutzen&lt;br /&gt;
* Den SupportFragmentManager statt des FragmentManagers in der FragmentActivity nutzen:&lt;br /&gt;
&lt;br /&gt;
activty_map_view.xml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FrameLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
	android:id=&amp;quot;@+id/root&amp;quot;&lt;br /&gt;
	android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
	android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
	android:orientation=&amp;quot;horizontal&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;fragment&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  class=&amp;quot;com.google.android.gms.maps.SupportMapFragment&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/FrameLayout&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
MapViewActivity.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package de.webmynet.android.location;&lt;br /&gt;
&lt;br /&gt;
import com.google.android.gms.maps.GoogleMap;&lt;br /&gt;
import com.google.android.gms.maps.SupportMapFragment;&lt;br /&gt;
&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.support.v4.app.FragmentActivity;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MapViewActivity extends FragmentActivity{&lt;br /&gt;
&lt;br /&gt;
	private SupportMapFragment mapFragment;&lt;br /&gt;
	private GoogleMap googleMap;&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle arg0) {&lt;br /&gt;
		super.onCreate(arg0);&lt;br /&gt;
		setContentView(R.layout.activity_map_view);&lt;br /&gt;
		&lt;br /&gt;
		mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);&lt;br /&gt;
		googleMap = mapFragment.getMap();&lt;br /&gt;
		googleMap.setMyLocationEnabled(true);&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Activity Klasse ===&lt;br /&gt;
 extends MapActivity&lt;br /&gt;
&lt;br /&gt;
== Android Location API und Location Awareness ==&lt;br /&gt;
[[Android - Location API]]&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20060</id>
		<title>Android - Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20060"/>
		<updated>2013-10-15T06:55:24Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Optionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es nur Code Schnipsel zum Kopieren ohne Erklärung&lt;br /&gt;
== Neue Activity ==&lt;br /&gt;
 MyNameActivity.java // Class&lt;br /&gt;
 activity_my_name.xml // Layout File&lt;br /&gt;
 AndroidManifest.xml&lt;br /&gt;
 strings.xml&lt;br /&gt;
&lt;br /&gt;
=== Activity Class ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package de.webmynet.android.myappname;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class MyNameActivity extends Activity{&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
		super.onCreate(savedInstanceState);&lt;br /&gt;
		setContentView(R.layout.activity_my_name);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Buttons verdrahten ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
public class MyNameActivity extends Activity implements OnClickListener {&lt;br /&gt;
	Button b1,b2;&lt;br /&gt;
...&lt;br /&gt;
		b1 = (Button)findViewById(R.id.b1); &lt;br /&gt;
		b2 = (Button)findViewById(R.id.b2); &lt;br /&gt;
		b1.setOnClickListener(this); &lt;br /&gt;
		b2.setOnClickListener(this);&lt;br /&gt;
...&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onClick(View v) {&lt;br /&gt;
		int id = v.getId();&lt;br /&gt;
		Intent i = null;&lt;br /&gt;
		switch (id){&lt;br /&gt;
		case R.id.b1:&lt;br /&gt;
			i = new Intent(this,OtherNameActivity.class);&lt;br /&gt;
			break;&lt;br /&gt;
		case R.id.b2:&lt;br /&gt;
			i = new Intent(&amp;quot;de.webmynet.appname.OTHERNAME&amp;quot;);//Variant with Manifest Activity Name&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		startActivity(i);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map View ==&lt;br /&gt;
=== Google API Key bereithalten ===&lt;br /&gt;
=== Map Fragment zur Activity hinzufügen ===&lt;br /&gt;
Im Layout File&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:name=&amp;quot;com.google.android.gms.maps.MapFragment&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder direkt in der Activity&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mMapFragment = MapFragment.newInstance();&lt;br /&gt;
 FragmentTransaction fragmentTransaction =&lt;br /&gt;
         getFragmentManager().beginTransaction();&lt;br /&gt;
 fragmentTransaction.add(R.id.my_container, mMapFragment);&lt;br /&gt;
 fragmentTransaction.commit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handle für die Karte===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private GoogleMap mMap;&lt;br /&gt;
...&lt;br /&gt;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Verfügbarkeit testen ===&lt;br /&gt;
In onResume (evtl. auch onCreate) Testen ob die Karte verfügbar ist.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void setUpMapIfNeeded() {&lt;br /&gt;
    // Do a null check to confirm that we have not already instantiated the map.&lt;br /&gt;
    if (mMap == null) {&lt;br /&gt;
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))&lt;br /&gt;
                            .getMap();&lt;br /&gt;
        // Check if we were successful in obtaining the map.&lt;br /&gt;
        if (mMap != null) {&lt;br /&gt;
            // The Map is verified. It is now safe to manipulate the map.&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map Optionen ==&lt;br /&gt;
=== Map Type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GoogleMap map;&lt;br /&gt;
...&lt;br /&gt;
// Sets the map type to be &amp;quot;hybrid&amp;quot;&lt;br /&gt;
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 MAP_TYPE_NORMAL: Basic map with roads.&lt;br /&gt;
 MAP_TYPE_SATELLITE: Satellite view with roads.&lt;br /&gt;
 MAP_TYPE_TERRAIN: Terrain view with roads.&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
==== Optionen im Layout File ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
  xmlns:map=&amp;quot;http://schemas.android.com/apk/res-auto&amp;quot;&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  class=&amp;quot;com.google.android.gms.maps.SupportMapFragment&amp;quot;&lt;br /&gt;
  map:cameraBearing=&amp;quot;112.5&amp;quot;&lt;br /&gt;
  map:cameraTargetLat=&amp;quot;-33.796923&amp;quot;&lt;br /&gt;
  map:cameraTargetLng=&amp;quot;150.922433&amp;quot;&lt;br /&gt;
  map:cameraTilt=&amp;quot;30&amp;quot;&lt;br /&gt;
  map:cameraZoom=&amp;quot;13&amp;quot;&lt;br /&gt;
  map:mapType=&amp;quot;normal&amp;quot;&lt;br /&gt;
  map:uiCompass=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiRotateGestures=&amp;quot;true&amp;quot;&lt;br /&gt;
  map:uiScrollGestures=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiTiltGestures=&amp;quot;true&amp;quot;&lt;br /&gt;
  map:uiZoomControls=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiZoomGestures=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Optionen über Programmierung ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GoogleMapOptions options = new GoogleMapOptions();&lt;br /&gt;
&lt;br /&gt;
options.mapType(GoogleMap.MAP_TYPE_SATELLITE)&lt;br /&gt;
    .compassEnabled(false)&lt;br /&gt;
    .rotateGesturesEnabled(false)&lt;br /&gt;
    .tiltGesturesEnabled(false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Optionen im Konstruktor mit übergeben:&lt;br /&gt;
 MapFragment.newInstance(GoogleMapOptions options)&lt;br /&gt;
oder bei MapViews:&lt;br /&gt;
 MapView(Context, GoogleMapOptions)&lt;br /&gt;
== Marker ==&lt;br /&gt;
https://developers.google.com/maps/documentation/android/marker&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20059</id>
		<title>Android - Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20059"/>
		<updated>2013-10-15T06:44:39Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Map Type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es nur Code Schnipsel zum Kopieren ohne Erklärung&lt;br /&gt;
== Neue Activity ==&lt;br /&gt;
 MyNameActivity.java // Class&lt;br /&gt;
 activity_my_name.xml // Layout File&lt;br /&gt;
 AndroidManifest.xml&lt;br /&gt;
 strings.xml&lt;br /&gt;
&lt;br /&gt;
=== Activity Class ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package de.webmynet.android.myappname;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class MyNameActivity extends Activity{&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
		super.onCreate(savedInstanceState);&lt;br /&gt;
		setContentView(R.layout.activity_my_name);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Buttons verdrahten ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
public class MyNameActivity extends Activity implements OnClickListener {&lt;br /&gt;
	Button b1,b2;&lt;br /&gt;
...&lt;br /&gt;
		b1 = (Button)findViewById(R.id.b1); &lt;br /&gt;
		b2 = (Button)findViewById(R.id.b2); &lt;br /&gt;
		b1.setOnClickListener(this); &lt;br /&gt;
		b2.setOnClickListener(this);&lt;br /&gt;
...&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onClick(View v) {&lt;br /&gt;
		int id = v.getId();&lt;br /&gt;
		Intent i = null;&lt;br /&gt;
		switch (id){&lt;br /&gt;
		case R.id.b1:&lt;br /&gt;
			i = new Intent(this,OtherNameActivity.class);&lt;br /&gt;
			break;&lt;br /&gt;
		case R.id.b2:&lt;br /&gt;
			i = new Intent(&amp;quot;de.webmynet.appname.OTHERNAME&amp;quot;);//Variant with Manifest Activity Name&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		startActivity(i);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map View ==&lt;br /&gt;
=== Google API Key bereithalten ===&lt;br /&gt;
=== Map Fragment zur Activity hinzufügen ===&lt;br /&gt;
Im Layout File&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:name=&amp;quot;com.google.android.gms.maps.MapFragment&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder direkt in der Activity&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mMapFragment = MapFragment.newInstance();&lt;br /&gt;
 FragmentTransaction fragmentTransaction =&lt;br /&gt;
         getFragmentManager().beginTransaction();&lt;br /&gt;
 fragmentTransaction.add(R.id.my_container, mMapFragment);&lt;br /&gt;
 fragmentTransaction.commit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handle für die Karte===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private GoogleMap mMap;&lt;br /&gt;
...&lt;br /&gt;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Verfügbarkeit testen ===&lt;br /&gt;
In onResume (evtl. auch onCreate) Testen ob die Karte verfügbar ist.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void setUpMapIfNeeded() {&lt;br /&gt;
    // Do a null check to confirm that we have not already instantiated the map.&lt;br /&gt;
    if (mMap == null) {&lt;br /&gt;
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))&lt;br /&gt;
                            .getMap();&lt;br /&gt;
        // Check if we were successful in obtaining the map.&lt;br /&gt;
        if (mMap != null) {&lt;br /&gt;
            // The Map is verified. It is now safe to manipulate the map.&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map Optionen ==&lt;br /&gt;
=== Map Type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GoogleMap map;&lt;br /&gt;
...&lt;br /&gt;
// Sets the map type to be &amp;quot;hybrid&amp;quot;&lt;br /&gt;
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 MAP_TYPE_NORMAL: Basic map with roads.&lt;br /&gt;
 MAP_TYPE_SATELLITE: Satellite view with roads.&lt;br /&gt;
 MAP_TYPE_TERRAIN: Terrain view with roads.&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
==== Optionen im Layout File ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
  xmlns:map=&amp;quot;http://schemas.android.com/apk/res-auto&amp;quot;&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  class=&amp;quot;com.google.android.gms.maps.SupportMapFragment&amp;quot;&lt;br /&gt;
  map:cameraBearing=&amp;quot;112.5&amp;quot;&lt;br /&gt;
  map:cameraTargetLat=&amp;quot;-33.796923&amp;quot;&lt;br /&gt;
  map:cameraTargetLng=&amp;quot;150.922433&amp;quot;&lt;br /&gt;
  map:cameraTilt=&amp;quot;30&amp;quot;&lt;br /&gt;
  map:cameraZoom=&amp;quot;13&amp;quot;&lt;br /&gt;
  map:mapType=&amp;quot;normal&amp;quot;&lt;br /&gt;
  map:uiCompass=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiRotateGestures=&amp;quot;true&amp;quot;&lt;br /&gt;
  map:uiScrollGestures=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiTiltGestures=&amp;quot;true&amp;quot;&lt;br /&gt;
  map:uiZoomControls=&amp;quot;false&amp;quot;&lt;br /&gt;
  map:uiZoomGestures=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Optionen über Programmierung ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GoogleMapOptions options = new GoogleMapOptions();&lt;br /&gt;
&lt;br /&gt;
options.mapType(GoogleMap.MAP_TYPE_SATELLITE)&lt;br /&gt;
    .compassEnabled(false)&lt;br /&gt;
    .rotateGesturesEnabled(false)&lt;br /&gt;
    .tiltGesturesEnabled(false);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Optionen im Konstruktor mit übergeben:&lt;br /&gt;
 MapFragment.newInstance(GoogleMapOptions options)&lt;br /&gt;
oder bei MapViews:&lt;br /&gt;
 MapView(Context, GoogleMapOptions)&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20058</id>
		<title>Android - Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20058"/>
		<updated>2013-10-15T06:40:15Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Verfügbarkeit testen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es nur Code Schnipsel zum Kopieren ohne Erklärung&lt;br /&gt;
== Neue Activity ==&lt;br /&gt;
 MyNameActivity.java // Class&lt;br /&gt;
 activity_my_name.xml // Layout File&lt;br /&gt;
 AndroidManifest.xml&lt;br /&gt;
 strings.xml&lt;br /&gt;
&lt;br /&gt;
=== Activity Class ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package de.webmynet.android.myappname;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class MyNameActivity extends Activity{&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
		super.onCreate(savedInstanceState);&lt;br /&gt;
		setContentView(R.layout.activity_my_name);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Buttons verdrahten ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
public class MyNameActivity extends Activity implements OnClickListener {&lt;br /&gt;
	Button b1,b2;&lt;br /&gt;
...&lt;br /&gt;
		b1 = (Button)findViewById(R.id.b1); &lt;br /&gt;
		b2 = (Button)findViewById(R.id.b2); &lt;br /&gt;
		b1.setOnClickListener(this); &lt;br /&gt;
		b2.setOnClickListener(this);&lt;br /&gt;
...&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onClick(View v) {&lt;br /&gt;
		int id = v.getId();&lt;br /&gt;
		Intent i = null;&lt;br /&gt;
		switch (id){&lt;br /&gt;
		case R.id.b1:&lt;br /&gt;
			i = new Intent(this,OtherNameActivity.class);&lt;br /&gt;
			break;&lt;br /&gt;
		case R.id.b2:&lt;br /&gt;
			i = new Intent(&amp;quot;de.webmynet.appname.OTHERNAME&amp;quot;);//Variant with Manifest Activity Name&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		startActivity(i);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map View ==&lt;br /&gt;
=== Google API Key bereithalten ===&lt;br /&gt;
=== Map Fragment zur Activity hinzufügen ===&lt;br /&gt;
Im Layout File&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:name=&amp;quot;com.google.android.gms.maps.MapFragment&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder direkt in der Activity&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mMapFragment = MapFragment.newInstance();&lt;br /&gt;
 FragmentTransaction fragmentTransaction =&lt;br /&gt;
         getFragmentManager().beginTransaction();&lt;br /&gt;
 fragmentTransaction.add(R.id.my_container, mMapFragment);&lt;br /&gt;
 fragmentTransaction.commit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handle für die Karte===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private GoogleMap mMap;&lt;br /&gt;
...&lt;br /&gt;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Verfügbarkeit testen ===&lt;br /&gt;
In onResume (evtl. auch onCreate) Testen ob die Karte verfügbar ist.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void setUpMapIfNeeded() {&lt;br /&gt;
    // Do a null check to confirm that we have not already instantiated the map.&lt;br /&gt;
    if (mMap == null) {&lt;br /&gt;
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))&lt;br /&gt;
                            .getMap();&lt;br /&gt;
        // Check if we were successful in obtaining the map.&lt;br /&gt;
        if (mMap != null) {&lt;br /&gt;
            // The Map is verified. It is now safe to manipulate the map.&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Map Optionen ==&lt;br /&gt;
=== Map Type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GoogleMap map;&lt;br /&gt;
...&lt;br /&gt;
// Sets the map type to be &amp;quot;hybrid&amp;quot;&lt;br /&gt;
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 MAP_TYPE_NORMAL: Basic map with roads.&lt;br /&gt;
 MAP_TYPE_SATELLITE: Satellite view with roads.&lt;br /&gt;
 MAP_TYPE_TERRAIN: Terrain view with roads.&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20057</id>
		<title>Android - Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Android_-_Cheat_Sheet&amp;diff=20057"/>
		<updated>2013-10-15T06:27:55Z</updated>

		<summary type="html">&lt;p&gt;79.240.46.5: /* Map View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es nur Code Schnipsel zum Kopieren ohne Erklärung&lt;br /&gt;
== Neue Activity ==&lt;br /&gt;
 MyNameActivity.java // Class&lt;br /&gt;
 activity_my_name.xml // Layout File&lt;br /&gt;
 AndroidManifest.xml&lt;br /&gt;
 strings.xml&lt;br /&gt;
&lt;br /&gt;
=== Activity Class ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package de.webmynet.android.myappname;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class MyNameActivity extends Activity{&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
		super.onCreate(savedInstanceState);&lt;br /&gt;
		setContentView(R.layout.activity_my_name);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Buttons verdrahten ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
public class MyNameActivity extends Activity implements OnClickListener {&lt;br /&gt;
	Button b1,b2;&lt;br /&gt;
...&lt;br /&gt;
		b1 = (Button)findViewById(R.id.b1); &lt;br /&gt;
		b2 = (Button)findViewById(R.id.b2); &lt;br /&gt;
		b1.setOnClickListener(this); &lt;br /&gt;
		b2.setOnClickListener(this);&lt;br /&gt;
...&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onClick(View v) {&lt;br /&gt;
		int id = v.getId();&lt;br /&gt;
		Intent i = null;&lt;br /&gt;
		switch (id){&lt;br /&gt;
		case R.id.b1:&lt;br /&gt;
			i = new Intent(this,OtherNameActivity.class);&lt;br /&gt;
			break;&lt;br /&gt;
		case R.id.b2:&lt;br /&gt;
			i = new Intent(&amp;quot;de.webmynet.appname.OTHERNAME&amp;quot;);//Variant with Manifest Activity Name&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		startActivity(i);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map View ==&lt;br /&gt;
=== Google API Key bereithalten ===&lt;br /&gt;
=== Map Fragment zur Activity hinzufügen ===&lt;br /&gt;
Im Layout File&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;fragment&lt;br /&gt;
  android:id=&amp;quot;@+id/map&amp;quot;&lt;br /&gt;
  android:name=&amp;quot;com.google.android.gms.maps.MapFragment&amp;quot;&lt;br /&gt;
  android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  android:layout_height=&amp;quot;match_parent&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder direkt in der Activity&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mMapFragment = MapFragment.newInstance();&lt;br /&gt;
 FragmentTransaction fragmentTransaction =&lt;br /&gt;
         getFragmentManager().beginTransaction();&lt;br /&gt;
 fragmentTransaction.add(R.id.my_container, mMapFragment);&lt;br /&gt;
 fragmentTransaction.commit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handle für die Karte===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private GoogleMap mMap;&lt;br /&gt;
...&lt;br /&gt;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Verfügbarkeit testen ===&lt;br /&gt;
In onResume (evtl. auch onCreate) Testen ob die Karte verfügbar ist.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void setUpMapIfNeeded() {&lt;br /&gt;
    // Do a null check to confirm that we have not already instantiated the map.&lt;br /&gt;
    if (mMap == null) {&lt;br /&gt;
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))&lt;br /&gt;
                            .getMap();&lt;br /&gt;
        // Check if we were successful in obtaining the map.&lt;br /&gt;
        if (mMap != null) {&lt;br /&gt;
            // The Map is verified. It is now safe to manipulate the map.&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>79.240.46.5</name></author>
	</entry>
</feed>