2015-04-16 9 views
9

Ho un'app per Android che desidero impostare automaticamente in base al sesso e all'età dell'utente.Android: come ottenere il sesso e l'età dell'utente?

Quali sono i diversi modi per ottenere l'età e il sesso di un utente? (che sono conformi alle norme di Google Play)

Ad esempio, c'è un modo per ottenere queste informazioni tramite Google Play Services?

Grazie.

+0

Puoi ottenerle tramite [API Google+] (https://developers.google.com/+/api/latest/people) –

+1

Il problema è che PlusClient è deprecato http://www.doc.ic.ac .uk/project/2013/271/g1327125/android-studio/sdk/extras/google/google_play_services/docs/reference/com/google/android/gms/plus/PlusClient.html e sostituito da GoogleApiClient http: // www. doc.ic.ac.uk/project/2013/271/g1327125/android-studio/sdk/extras/google/google_play_services/docs/reference/com/google/android/gms/common/api/GoogleApiClient.html ma io non vediamo come ottenere l'età e il sesso con esso. –

risposta

10

Dovresti utilizzare lo interface Person, avrai tutto ciò che devi sapere sull'utente. (Attraverso getGender() e getBirthday() (O getAgeRange())

Edit: Ad usando per esempio diciamo getGender(), si dovrebbe fare qualcosa intorno a questo:

GoogleApiClient client = new GoogleApiClient.Builder(this) 
     .addApi(Plus.API) 
     .addScope(Plus.SCOPE_PLUS_LOGIN) 
     .setAccountName("[email protected]") 
     .build(); 


client.connect(); 
Person.Gender gender; 
Person personProfile = Plus.PeopleApi.getCurrentPerson(client); 

if (person.hasGender()) // it's not guaranteed 
      gender = person.getGender(); 
+0

Grazie! Hai qualche codice di esempio? Cordiali saluti –

+0

@Regis_AG Ho modificato la mia risposta per il codice di esempio che hai chiesto, potrebbe mancare qualche piccola cosa dal momento che non sono sul mio computer principale al momento, ma farà il trucco. Divertiti ! – Mekap

+0

Grazie! Ho appena provato un codice simile a quello che hai scritto (la differenza principale è che getCurrentPerson deve essere in un callback onConnected). Sono turbato dai risultati. Ho provato con 3 diversi account Gmail (i miei, quelli di mia madre e mia sorella) e la maggior parte delle funzioni Person.getSomething restituiscono null o qualcosa di incompleto/non accurato. getBirthdayDate: restituito nulla nei 3 casi getAgeRange: restituito null 2 ​​su 3 volte (una volta solo un età min (21) lontano dalla mia vera età (36)) getGender: affidabile getCurrentLocation: null GetLanguage: null 1 volta, ok 2 volte Conclusione: affidabile solo per il genere. –

3

Un'alternativa, forse più affidabile, l'approccio a indovinare il sesso del tuo utente in Android potrebbe colpire un'API di terze parti con l'indirizzo email del tuo utente, quindi lasciare che l'API cerchi un nome all'interno della stringa email, confrontarlo con un database di nomi, quindi restituirti una riservatezza di genere + Ho usato "Gender API" (nessuna affiliazione)

resta che aggiungere alla AndroidManifest:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

quindi ottenere indirizzi Gmail del vostro utente:

Pattern pattern = Patterns.EMAIL_ADDRESS; 
Account[] accounts = AccountManager.get(context).getAccounts(); 
for (Account account : accounts) { 
if (pattern.matcher(account.name).matches()) { 

    String emailAddress = account.name 
    // grab each of your user's email addresses 


} 
} 

Quindi, se si desidera utilizzare l'API che ho usato, ottenere una chiave dal genere api. com e ha colpito questo link per ogni indirizzo e-mail:

https://gender-api.com/get?email=ANDROID_USER_EMAIL_ADDRESS&key=<YOUR_PRIVATE_KEY> 

questa API restituisce genere e livello di fiducia e sono sicuro che ci sono altri là fuori che fanno la stessa cosa.

+1

Questo è fantastico, grazie per aver condiviso questo. Esistono API simili che potrebbero fornire un'età? – AlexVPerl