Hauptmenü

Werkzeuge

Kategorien

Archiv

Mehrere Autoload Funktionen in einem Projekt

Erstellt in PHP am 17. Februar 2013 vom Daschmi

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.

Änderung der Lautstärke in einer Android App

Erstellt in Allgemein am 17. Februar 2013 vom Daschmi

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.

Bestimmung der Position (Längen- und Breitengrade) und der Geschwindigkeit mittels GPS

Erstellt in Android SDK am 17. Februar 2013 vom Daschmi

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.

Slide Animationen beim Wechseln von Aktivitäten in Android Apps

Erstellt in Android SDK am 16. Februar 2013 vom Daschmi

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.

TYPO3 Userfunktion aufrufen über TYPO3 4.6 MVC Konzept mit Extbase und Fluid

Erstellt in TYPO3 am 9. Februar 2013 vom Daschmi

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‘;

    }

  }