Können wir die EffectFactory-Klasse für niedrigere Versionen verwenden?

8

Für meine neue Aufgabe wollte ich eine Bibliothek verwenden, die einen "Posterize-Effekt" bietet. Ich fand viele Bibliotheken wie Aviary SDK und jhlabs Ja, diese sind einfach zu benutzen, aber diese machen den Code schwerer. SO suche ich weiter nach der Android-API selbst, die ähnliche Aufgaben erledigen kann. Und nach einer Menge RnD habe ich endlich eine Zeitspar-Klasse EffectsFactory gefunden, die genau das bietet, was ich wollte. Ich habe es auch in meinem Auftrag angewendet. Aber das Schlechte, dass es in API-Ebene 14 hinzugefügt wurde, und meine App sollte mit mindestens API-Ebene 8 kompatibel sein.

Also, meine Frage ist,

Kann ich die EffectsFactory-Klasse für eine niedrigere Version verwenden? Wenn ja, wie?

Oder, wenn nein, haben wir dann eine API im Android SDK selbst, die effectfactory ähnlich ist?

Bitte vermeiden Sie den Verweis auf eine Bibliothek oder die offene cv-Bibliothek von NDK.

    
TheLittleNaruto 27.12.2013, 07:05
quelle

1 Antwort

3

Nein, es gibt keine Android-API, die ein Bild unterhalb von API 14 verpuppt. Auch oberhalb von API 14 EffectsFactory funktioniert möglicherweise nicht, wie es in Android-Dokumentation :

  

Einige Effekte sind möglicherweise nicht auf allen Plattformen verfügbar. Bevor Sie also einen bestimmten Effekt erstellen, sollte die Anwendung bestätigen, dass der Effekt auf dieser Plattform unterstützt wird, indem Sie isEffectSupported(String) aufrufen.

Sie könnten jedoch leicht selbst eine leichte Lösung erstellen. Posterisierung ist ein einfacher Prozess. Zum Beispiel ist der Code hinter JHlabs 'Posterize-Filter weniger als 50 Zeilen (und die meisten davon sind Zucker). In Ihren Schuhen, wenn die Verwendung einer 3rd-Party-Bibliothek nicht in Frage kam, würde ich nicht zögern, meine eigene zu schreiben.

Bearbeiten : Wenn Sie Bilder, die Ihre App von der Kamera aufnimmt, vertonen, gibt es auch Camera.Parameters.setColorEffect () , aber auch dies wird nicht auf allen Geräten unterstützt, wie in die Dokumentation :

  

Zum Beispiel sollte die Anwendung getSupportedColorEffects() vor dem Aufruf von setColorEffect(String) aufrufen.

    
Eric Simonton 29.12.2013, 15:32
quelle

Tags und Links