Frage

Ich bin auf der Suche nach einer Möglichkeit, zur Laufzeit zwischen Geräten mit dem neuen ARM-Prozessor (wie iPhone 3GS und einigen iPods 3G) und Geräte mit den alten ARM-Prozessoren ausgestattet zu unterscheiden. Ich weiß, ich kann uname (), um das Gerätemodell, um zu bestimmen, sondern nur einen Teil des iPods touch 3G einen Schub in ihrem ARM-Prozessor empfangen wird, das ist nicht genug.

Deshalb suche ich nach einem der folgenden:

  1. Ein Weg, Prozessor Modell des Erfassens - ich nehme an, es ist keine
  2. .
  3. Ein Weg zur Bestimmung, ob ARM Neon-Anweisungen unterstützt werden -. Hieraus könnte ich eine Antwort ableiten
  4. Ein Weg, um die Geräte zur Bestimmung Gesamtspeichergröße - die Kombination mit dem bereits bekannten Gerätemodell hackishly mich auf die Antwort führen könnte
  5. .

Vielen Dank im Voraus:)

War es hilfreich?

Lösung

Eine Abhilfe von dem ich denken kann, wird erkennen, ob OpenGL ES 2.0 verfügbar ist, da die neueren Prozessoren dass aktivieren.

Es gibt einen Artikel zu mobileorchard auf, wie es geht.

Andere Tipps

Nicht genau das, was Sie fragen, aber eine einfache Lösung ist Ihre Anwendung Fett zu bauen, so dass es sowohl für ARMv6 und ARMv7 ausführbaren Code enthält. Wenn Sie dies tun, läuft der entsprechende Code auf dem Prozessor automatisch, und Sie brauchen keine Laufzeitüberprüfung zu tun. Effektiv, du lässt den Lader für die Laufzeiterkennung tun.

Um dies zu tun, in Ihrem XCode-Projekt der Architekturen Einstellung von "Standard (ARMv6)" auf "Optimized (ARMv6 ARMv7)"

Dann in Ihrer Implementierung, Sie dies tun:

#if defined __ARM_NEON__
    // Code that uses NEON goes here
#else  // defined __ARM_NEON__
    // Fallback code without NEON goes here
#endif // defined __ARM_NEON__

Es gibt ein ähnliches Makro, das Sie für (nicht NEON) ARMv7 Funktionen verwenden kann, um zu überprüfen, die mich nicht aus der Spitze von meinem Kopf erinnern kann.

Wenn Sie wirklich Runtime-Versand tun wollen, werfen Sie einen Blick auf die sysctlbyname Funktion in libc. Insbesondere denke ich, dass die HW_MACHINE_ARCH Parameter aufzublicken Ihnen nützlich erweisen.

EDIT: Ich habe diese Antwort zurückgezogen, da es ein grelles Loch ausgelassen mir später klar: was zu tun ist, wenn wir einen unbekannten Subtyps auf einige zukünftige Hardware bekommen? Das war nicht zukunftssicher. Auch die Unsicherheit des dokumentierten Status dieser API nicht hilft, da Apples Null-Toleranz-Verbrauch von undokumentierten APIs.

Sie sollten Stephen Canons Antwort verwenden und Ihre Anwendung Fett zu bauen. Zuverlässig, zukunftssichere Laufzeiterkennung ist zu diesem Zeitpunkt nicht möglich (zu meinem Entsetzen, das versichere ich Ihnen).

Ich weiß, das ist mies, aber das Beste, was mir in den Sinn kommt, ist festzustellen, ob das Gerät Videoaufzeichnung unterstützt. Derzeit werden nur die ARM7 basierte iPhone und iPod-Geräte unterstützen sie, damit sich eine legit Weise, denke ich.

Um dies zu tun, verwenden Sie UIImagePickerController den availableMediaTypesForSourceType in Verbindung mit isSourceTypeAvailable auf kUTTypeMovie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top