2017-01-12 1 views
1

Ich arbeite an einer App, die auf der Architektur von Geräten funktioniert, bedeutet, wenn Benutzer 32bit Telefon verwendet, wird es einige andere Funktion und für 64bit eine andere Funktion zeigen. Wenn es einen Weg gibt, der auch ihr Bit auf dem Gerät drucken kann und den Benutzer wissen lässt. Vielen Dank im VorausWie überprüft man Architektur von Android-Gerät und zeigt sie?

+0

Sie versuchen, die Hardware-Informationen zu fragen? – W4R10CK

+0

Mögliche Duplikate von [Android: Holen Sie sich mobile Hardware-Informationen] (http://stackoverflow.com/questions/39530765/android-get-mobile-hardware-information) – W4R10CK

Antwort

0

https://developer.android.com/reference/android/os/Build.html

Gehen Sie auf die oben Bezug kann die Strings auf Felder Abschnitt verwendet werden.

Wenn Sie die Gerätearchitektur auf einen Toast zeigen möchten, verwenden Sie den folgenden Code;

String abi = Build.CPU_ABI; 
Toast arc = Toast.makeText(getApplicationContext(), "Device Architecture is "+ abi, Toast.LENGTH_LONG); 
arc.show(); 
+0

Danke für die Antwort, kann ich wissen, dass, wie es das Gerät zeigt ist 32 Bit oder 64 Bit? –

+0

Wenn Gerät 32 ist, wird der Versuch, 64 Bit zurückzugeben, möglicherweise null zurückgeben, überprüfen Sie dies. und ich bin auch 17 Jahre alt kanu. –

+0

check github.com/exploitr –

1

Kasse Build (android.os.build)

Erhalten Sie die Informationen über CPU und Abi

String cpuABI = Build.CPU_ABI; // Return the name of the instruction set (CPU type + ABI convention) of native code. 
String cpuABI2 = Build.CPU_ABI2; // Return The name of the second instruction set (CPU type + ABI convention) of native code. 

über zwei Felder in API-Ebene weiterentwickelt wurden 21

Verwenden Sie die folgenden Felder für die API-Level 21 oder höher .

String[] supportedABIS = Build.SUPPORTED_ABIS; // Return an ordered list of ABIs supported by this device. 
String[] supported32BitABIS = Build.SUPPORTED_32_BIT_ABIS; // Return an ordered list of 32 bit ABIs supported by this device. 
String[] supported64BitABIS = Build.SUPPORTED_64_BIT_ABIS; // Return an ordered list of 64 bit ABIs supported by this device. 
+0

Danke für die Antwort, darf ich wissen, dass das Gerät 32 Bit oder 64 Bit zeigt? –

1

Meine Antwort leiht sich sowohl von Patel und Majumder. Wenn Sie etwas mit einer bestimmten Architektur machen wollen, sollten Sie prüfen, für welchen spezifischen Befehlssatz Sie arbeiten möchten (wenn Sie mehr herausfinden möchten, als wenn es nur 32 oder 64 Bit ist). Sie können Beschreibungen für die ABIs here sehen.

Wie von Patel erklärt, werden nach API Level 21 einige der Werte veraltet, so dass Sie diese überprüfen sollten, bevor Sie Ihre Funktionen aufrufen. Ich habe Ihnen einen Code zur Verfügung gestellt, den Sie überprüfen können.

final String DEBUG_TAG_ARC = "Supported ABIS"; 

int OSNumber = Integer.valueOf(Build.VERSION.SDK_INT); 
Toast.makeText(this, "API: "+OSNumber, Toast.LENGTH_SHORT).show(); 
Log.d(DEBUG_TAG_ARC, "API: "+OSNumber); 


//if OS is less than API 21 
if(OSNumber < Build.VERSION_CODES.LOLLIPOP) { 
    String archType = Build.CPU_ABI2; 
    Toast.makeText(this, archType, Toast.LENGTH_SHORT).show(); 

    String archType2 = Build.CPU_ABI2; 
    Toast.makeText(this, archType2, Toast.LENGTH_SHORT).show(); 

    Log.d(DEBUG_TAG_ARC, "Supports the following: "+archType+" and "+archType2); 

    //here is were you do something with the values 
    //somthing like this 
    //32BIT 
    if(archType.equals("x86") || archType.equals("x86")){ 
     //do something 
    } 
    //64BIT 
    else if(archType.equals("x86_64") || archType.equals("x86_64")){ 
     //do something 
    } 
} 

//if OS is greater than or equal toAPI 21 
//check for supported ABIS 
if(OSNumber >= Build.VERSION_CODES.LOLLIPOP) { 
    String[] supportedABIS = Build.SUPPORTED_ABIS; 
    String[] supportedABIS_32_BIT = Build.SUPPORTED_32_BIT_ABIS; 
    String[] supportedABIS_64_BIT = Build.SUPPORTED_64_BIT_ABIS; 

    for(String aSupportedABI: supportedABIS){ 
     Log.d(DEBUG_TAG_ARC, aSupportedABI); 
    } 

    for(String aSupportedABI: supportedABIS_32_BIT){ 
     Log.d(DEBUG_TAG_ARC, "32BIT : "+aSupportedABI); 
    } 

    for(String aSupportedABI: supportedABIS_64_BIT){ 
     Log.d(DEBUG_TAG_ARC, "64BIT : "+aSupportedABI); 
    } 

    //checks that there is support for 32 or 64BIT 
    Log.d(DEBUG_TAG_ARC,"length of 32BIT support: "+supportedABIS_32_BIT.length); 
    Log.d(DEBUG_TAG_ARC,"length of 64BIT support: "+supportedABIS_64_BIT.length); 

    //to do something with the 32BIT Architecture 
    //if there is nothing (0) in the ordered list then it means that it does not support it 
    if(supportedABIS_32_BIT.length > 0){ 
     //do something with the 32BIT ARCH 
    } 
    //to do something with the 64BIT Architecture 
    //if there is nothing (0) in the ordered list then it means that it does not support it 
    else if(supportedABIS_64_BIT.length > 0){ 
     //do something with the 64BIT ARCH 
    } 

} 

Sie können auch alle diese Informationen auf dem Android-Monitor sehen von Debug Auswahl und Unterstützte ABI in das Suchfeld eingeben. Hoffe das hilft.

+0

Vielen Dank für Ihre Antwort, aber darf ich wissen, wie kann ich dies als App anzeigen, die dem Benutzer sagen wird, welches Bit er/sie benutzt? –

+0

kann man 'Toast.makeText (this," zeige ABI ", Toast.LENGTH_SHORT) .show();' um dies zu erreichen, indem man es im Code '// tue etwas' und am Ende auf dem' 'sagt if' und 'if else' Aussagen. –

Verwandte Themen