Um Bilder im Album „Aufnahmen“ abzulegen, kann folgender Code in einer iOS App verwendet werden:
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
Um Bilder im Album „Aufnahmen“ abzulegen, kann folgender Code in einer iOS App verwendet werden:
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
Wenn man zum Beispiel ein WordPress Plugin programmiert und möchte eine Funktion zum automatischen Laden von Klassen verwenden so funktioniert das nur solange bis ein anderes Plugin ebenfalls eine __autoload Funktion implementiert.
Umgehen kann man das, in dem man seine Autoloadfunktion einen eindeutigen Namen gibt, oder den Namespace des Plugins verwendet.
function wpsg_autoload() // statt __autoload() { .. }
Diese Funktion muss nun noch als Autload Funktion registriert werden, dies geschieht mittels:
spl_autoload_register(‚wpsg_autoload‘);
Für das ganze muss die SPS Unterstützung im PHP aktiv sein. Ab PHP 5.3 ist sie standardmäßig aktiv.
Die Lautstärke in einer Android App kann mit folgendem Code beeinflußt werden:
AudioManager myAudioManager = (AudioManager)activity.getSystemService(Context.AUDIO_SERVICE); myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, (int)(max_system_volume * volume), AudioManager.FLAG_SHOW_UI);
Man setzt dabei immer die Lautstärke für einen Stream, im Beispiel für die Musikwiedergabe. Über den 3. Parameter kann man bestimmen ob die Änderung der Lautstärke in der GUI angezeigt wird oder ob ein Musterton in der Lautstärke abgespielt wird.
Wie man das ganze auf einem iGerät (iPhone, iPade etc.) umsetzt habe ich hier beschrieben.
Um die Geschwindigkeit in m/s oder die Längen und Breitenangaben des GPS Empfängers eines Android Gerätes zu ermitteln muss man als erstes in der Mainfest Datei der Answendung folgende Berechtigungen hinzufügen:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" /> <uses-permission android:name="android.permission.INTERNET" />
Nun kann man mittels folgendem Code einen LocationListener hinzufügen:
myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } public void onLocationChanged(Location location) { System.out.println("Speed: " + location.getSpeed()); System.out.println("Latitude: " + location.getLatitude()); System.out.println("Longitude: " + location.getLongitude()); System.out.println("Bearing: " + location.getBearing()); } });
Wie man das Ganze auf einem iGerät (iPhone, iPad etc.) macht habe ich hier beschrieben.
Um die standardmäßige Fade Animation zwischen zwei Aktivitäten (activities) auszutauschen muss man die Aktivitäten zu erst mittels Animationsbeschreibung in XML definieren.Diese Dateien sollten unter res/anim/ abgelegt werden. Hier nun die vier Animationen die man für einen horizontalen Wechsel der Ansichten benötigt:
Bewegung der Ansicht nach rechts raus (slide_to_right.xml) :
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" /> </set>
Bewegung der Ansicht von rechts rein (slide_from_right.xml) :
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="100%" android:toXDelta="0" android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" /> </set>
Bewegung der Ansicht nach links raus (slide_to_left.xml) :
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="-100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" /> </set>
Bewegung der Ansicht von links rein (slide_from_left.xml) :
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0" android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" /> </set>
Damit die Animation nun beim wechsel zu einer neuen Aktivitätsansicht angezeigt wird kann man die standard Animationen mit folgendem Befehl überschreiben:
public void onClick(View v) { Intent i = new Intent(getApplicationContext(), SecondActivity.class); startActivity(i); overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); }
In dem Beispiel würde das Fenster nach links herausgeschoben und das neue kommt parallel von rechts herein.
Beim verlassen der zweiten Aktivität muss man nun die Animation so umschreiben dass das Fenster nach rechts rausfliegt und die alte Ansicht von links hereinkommt. Dazu ruft man nach dem finish() Aufruf wieder folgenden Befehl auf:
finish(); overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
Eine Vertikale Animation kann über entsprechende Werte in den XML Dateien erreicht werden. Über den Wert bei duration kann die Geschwindigkeit der Animation festgelegt werden.
In alten TYPO3 Versionen konnten PHP Funktionen aus dem Typoscript ganz einfach mittels folgendem Aufruf aufgerufen werden:
lib.breadcrumbs.stdWrap.postUserFunc = tx_extension_pi1->getBreadcrumb
Wenn man aber das MVC Konzept von TYPO3 4.3 mit Extbase und Fluid nutzen möchte muss man etwas anders vorgehen.
10 = USER 10 { userFunc = tx_extbase_core_bootstrap->run #Nicht verändern pluginName = Extension #Name des Plugins eintragen (Case sensitive) extensionName = Extension #Name der Extension (Case sensitive) controller = Data #Name des Controllers der aufgerufen werden soll action = breadcrumb #Name der Action die aufgerufen werden soll switchableControllerActions { Data { #Controllername ersetzen 1 = breadcrumb #Actionname ersetzen } } # so belassen settings =< plugin.tx_vjkaevents.settings persistence =< plugin.tx_vjkaevents.persistence view =< plugin.tx_vjkaevents.view }
Den Pluginnamen bekommt man aus der ext_localconf.php des Plugins heraus:
Tx_Extbase_Utility_Extension::configurePlugin( $_EXTKEY, ‚Extension‘, /* Pluginname ! */ array( ‚Data‘ => ‚list, show, breadcrumb‘, /*Action hinzutragen! */ ), array( ‚Data‘ => “, ) );
Im Controller muss dann die entsprechende Action definiert werden:
class Tx_Extension_Controller_DataController extends Tx_Extbase_MVC_Controller_ActionController { public function breadcrumbAction() { return ‚Ausgabe der Userfunc‘; } }
<f:format.html>{events.teaser}</f:format.html>
<f:if condition="{events.showonlyifnotempty}"> {data.showonlyifnotempty} </f:if>
<f:image src="uploads/tx_vjkaevents/{data.image}" width="280" height="210" alt="{data.titel}" />
<f:for each="{events.FileData}" as="document"> …
<f:link.action pageUid="{settings.singlePid}" action="show" arguments="{data:data}">{data.titel}</f:link.action>
Gestern wurde die neue Version des Airleben Luftdichtheitsklassenrechners veröffentlicht. Der Airleben Luftdichtheitsklassenrechner ist eine iPhone Anwendung der Firma LBG GmbH Gotha, programmiert von maennchen1.de.
Die neuen Funktionen im Überblick:
Die App kann hier kostenlos über den App. Store bezogen werden.
Die neue Version des Magento Bildersliders ist fertig. Es ist nun möglich Texte über die Bilder zu legen, die dabei bequem im Backend positioniert werden können.
Hier noch einmal die neuen Funktionen im Überblick:
Möchte man das erste Element eines Arrays ermitteln, so kann man die Funktion array_shift verwenden. Für das letzte Element gibt es die Funktion array_pop.
Beide Funktionen liefern dasElement und entfernen es aus dem Uhrsprungsarray. Man kann den Array vorher kopieren oder man verwendet folgenden Aufruf:
$first = array_values($array)[0]; // Statt array_shift $last = array_values($array)[sizeof(array) – 1]; // Statt array_pop
Man könnte auch einfach $array[0] bzw. $array[sizeof($array) – 1] verwenden, dies würde aber nicht bei Assoziativen Arrays funktionieren.