Solucionado (ver solução)
Solucionado
(ver solução)
20
respostas

Mensagem - A agenda não será executada a menos que atualize os serviços do Google Play

Jeferson.

Quando clico na opção de mapa, exibe a mensagem:

Agenda won't run unless update Google Play services. [UPDATE]

Sendo que habilitei no SDK Manager > SDK Tools > Google Play Services.

E o registro do aplicativo foi feito com sucesso, seguem as evidências do Google:

Chave de API criada
Transfira esta chave com o parâmetro key=API_KEY para usá-la no seu aplicativo.

Sua chave de API
AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE
 Restrinja sua chave para evitar uso não autorizado na produção.

 Chave de API
 Esta chave de API pode ser usada neste projeto e com qualquer API compatível com ela. Para usar essa chave no seu aplicativo, transfira-a com o parâmetro key=API_KEY .

 Data da criação
 1 de nov de 2016 15:59:38
 Criada por
 vlconsultoria@ig.com.br (você)
 Chave de API
 AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE
 Nome

 Chave de API 1
 Restrição de chave

 Restringir uma chave é especificar quais websites, endereços IP ou aplicativos podem utilizá-la. Saiba mais

 Nenhum
 Referenciadores de HTTP (sites da Web)
 Endereços IP (servidores da Web, cron jobs etc.)
 Apps para Android
 Apps para iOS

  Restringir o uso de seus apps para Android (Opcional)
 Adicione o nome do seu pacote e a impressão digital do certificado de assinatura SHA-1 para restringir o uso dos seus aplicativos para Android
 Saiba mais Receba o nome do pacote do arquivo AndroidManifest.xml. Depois, use o comando a seguir para conseguir a impressão digital:

 $ keytool -list -v -keystore mystore.keystore

 Nome do pacote           Impressão digital para certificação SHA-1

 vlc.com.br.agenda.web 76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84

  Adicionar nome do pacote e impressão digital
 Nota: pode levar até cinco minutos para que as configurações sejam aplicadas

 Salvar Cancelar

Chaves de API

Nome    Data de criação    Restrição    Chave

Chave de API 1    1 de nov de 2016    App para Android    AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE

Seguem os arquivos: google_maps_api, AndroidManifest, MapsActivity, build.gradle.

<resources>
    <!--
    TODO: Before you run your application, you need a Google Maps API key.

    To get one, follow this link, follow the directions and press "Create" at the end:

    https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84%3Bvlc.com.br.agenda.web

    You can also add your credentials to an existing key, using this line:
    76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84;vlc.com.br.agenda.web

    Alternatively, follow the directions here:
    https://developers.google.com/maps/documentation/android/start#get-key

    Once you have your key (it starts with "AIza"), replace the "google_maps_key"
    string in this file.
    -->
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE</string>
</resources>
   <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality. 
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".web.ListaAlunosActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".web.FormularioActivity"
            android:label="@string/title_activity_formulario" />

        <receiver android:name=".receiver.SMSReceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

        <activity android:name=".web.ProvasActivity" />
        <activity android:name=".web.DetalhesProvaActivity" />
        <activity android:name=".web.ProvasTabletActivity" />
        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/. 
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE"/>

        <activity
            android:name=".web.MapsActivity"
            android:label="@string/title_activity_maps"></activity>
    </application>

</manifest>
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import vlc.com.br.agenda.R;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "vlc.com.br.agenda"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true        
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }

    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.android.gms:play-services:9.8.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:cardview-v7:23.4.0'
    compile 'com.android.support:support-v4:23.4.0'}
20 respostas

O problema não está no código. Configure um emulador que já venha com o google services.

Qual emulador seria este?

Tentei com os três abaixo, e em todos continua exibindo a mensagem Agenda won't run unless update Google Play services. [UPDATE].

5.1 WVGA API 23 - 480 x 800: mdpi Galaxy Nexus API 23 - 720 x 1280: xhdpi Nexus 5X API 23 - 1080 x 1920: 420 dpi

Todos com o Target Android 6.0 (Google APIs), CPU/ABI x86, Size 4GB, System Image Marshmallow.

Por favor, veja se consegue resolver este problema, pois não estou conseguindo dar continuidade ao curso, pois o mapa não é exibido.

Grato.

Senhores.

Por favor, vejam se conseguem me ajudar a resolver este problema, pois está inviabilizando a minha continuidade com o curso, o qual tenho muito interesse em concluir, e fazer outros também.

Desde já, agradecido pela "força" .

Estava com este problema antes, primeiramente achei que era o emulador sem o google play services, mais no final vi que estava correto.

A solução é diminuir a versão do google play services no app. Usei esta versão e funcionou

compile 'com.google.android.gms:play-services:8.4.0'

Espero ter ajudado

Alterei para 8.4.0, e agora não exibe mais a mensagem Agenda won't run unless update Google Play services. [UPDATE], mas exibe a mensagem abaixo, sendo que conforme evidências que enviei junto com a minha primeira postagem, o projeto foi registrado com sucesso.

Vocês não poderiam testar com a chave do meu projeto, para ver se realmente não está registrado.

Continuo não dando continuidade ao curso, pois a mapa não é exibido.

I/zzad: Making Creator dynamically
W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000001/n/x86
I/Google Maps Android API: Google Play services client version: 8487000
I/Google Maps Android API: Google Play services package version: 9683470
D/FLASH: Couldn't find file:  /data/user/0/vlc.com.br.agenda/files/DATA_ServerControlledParametersManager.data.vlc.com.br.agenda: open failed: ENOENT (No such file or directory)
I/Choreographer: Skipped 38 frames!  The application may be doing too much work on its main thread.
I/b: Sending API token request.

     [ 11-07 16:00:25.012  3260: 3322 D/         ]
     HostConnection::get() New Host Connection established 0xaa886350, tid 3322
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb2ef94d0
E/b: Authentication failed on the server.
E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
                           Ensure that the "Google Maps Android API v2" is enabled.
                           Ensure that the following Android Key exists:
                               API Key: AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE
                               Android Application (<cert_fingerprint>;<package_name>): 76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84;vlc.com.br.agenda
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:1
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 1
D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded
D/GoogleCertificatesImpl: Fetched 336 Google certificates

Acrescentando a postagem anterior.

Quando executo com a versão 9.8.0, exibe a seguinte mensagem, sendo que o Google Play Services está atualizado.

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9877000 but found 9683470
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa0442150
D/OpenGLRenderer: endAllStagingAnimators on 0xaabe7b00 (RippleDrawable) with handle 0xaed92b40

Segue novamente evidência do registro da chave.

Credenciais

Credenciais Tela de consentimento OAuth Confirmação de domínio
Criar credenciais  Excluir
Crie credenciais para acessar suas APIs ativadas. Consulte os detalhes na documentação da API.

Chaves de API

Nome    Data de criação    Restrição    Chave    

Chave de API 1    1 de nov de 2016    App para Android    AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE

Senhores.

Por favor, vejam se conseguem me ajudar a resolver este problema, pois está inviabilizando a minha continuidade com o curso, o qual tenho muito interesse em concluir, e fazer outros também.

Desde já, agradecido pela "força" .

Utilizando sua chave tenho problemas de permissão que você teve.

Eu tentaria apagar o arquivo com a chave, criar uma nova activity do tipo de mapa e fazer o processo novamente, aparentemente é algo relacionado a chave de acesso. Pois obtive o mesmo erro testando com a sua chave.

Felipe.

Testei o aplicativo de duas maneiras.

Primeiro, criei um aplicativo sómente com o Google Maps Activity, e funcionou perfeitamente.

Segundo, deletei e criei novamente: uma nova chave de API e uma nova activity de mapa com a API criada, sendo que estes novos processos funcionaram em partes, apresentando agora os problemas abaixo relatados, parando na última linha e não exibindo o mapa.

Por favor, peça uma ajuda ao Jeferson, porque três cabeças pensam melhor que duas.

Continuo salientando que não estou dando continuidade ao curso em consequência deste problema.

I/zzad: Making Creator dynamically
W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000004/n/x86
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
I/art: Background sticky concurrent mark sweep GC freed 4178(507KB) AllocSpace objects, 3(156KB) LOS objects, 7% free, 11MB/12MB, paused 107.393ms total 187.354ms
I/Google Maps Android API: Google Play services client version: 8487000
I/Google Maps Android API: Google Play services package version: 9877470
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
D/FLASH: Couldn't find file:  /data/user/0/vlc.com.br.agenda/files/DATA_ServerControlledParametersManager.data.vlc.com.br.agenda: open failed: ENOENT (No such file or directory)
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
E/Google Maps Android API: Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
I/Choreographer: Skipped 234 frames!  The application may be doing too much work on its main thread.
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:2
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 2
D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded
I/Choreographer: Skipped 100 frames!  The application may be doing too much work on its main thread.
I/art: Background sticky concurrent mark sweep GC freed 6727(1022KB) AllocSpace objects, 15(1372KB) LOS objects, 15% free, 13MB/16MB, paused 5.760ms total 87.611ms
D/GoogleCertificatesImpl: Fetched 363 Google certificates
I/Choreographer: Skipped 52 frames!  The application may be doing too much work on its main thread.
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9d12bec0
I/Choreographer: Skipped 52 frames!  The application may be doing too much work on its main thread.
I/GMPM: Tag Manager is not found and thus will not be used

Conversando com alguns amigos da minha área, eles indicaram desabilitar o strict mode.

Ainda não testei, vou testar no final de semana apenas, porem segue o código para possível solução.

Insira o código abaixo no onCreate da activity logo apos o super.onCreate....

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());

        setContentView(R.layout.activity_mapa);

       //seu codigo
    }

Caso funcione me avisa aqui

O problema continua.

I/zzad: Making Creator dynamically
W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000004/n/x86
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
I/Google Maps Android API: Google Play services client version: 8487000
I/Google Maps Android API: Google Play services package version: 9877470
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
D/FLASH: Couldn't find file:  /data/user/0/vlc.com.br.agenda/files/DATA_ServerControlledParametersManager.data.vlc.com.br.agenda: open failed: ENOENT (No such file or directory)
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
E/Google Maps Android API: Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
I/Choreographer: Skipped 208 frames!  The application may be doing too much work on its main thread.
I/Choreographer: Skipped 51 frames!  The application may be doing too much work on its main thread.
I/Choreographer: Skipped 39 frames!  The application may be doing too much work on its main thread.
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:2
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 2
D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9d1f3400
D/GoogleCertificatesImpl: Fetched 363 Google certificates
I/Choreographer: Skipped 94 frames!  The application may be doing too much work on its main thread.

Olá Vitor,

Alguns problemas possíveis que consegui identificar com base nas suas mensagens:

O pacote que foi usado para fazer o registro da chave na Google pode não estar batendo com o pacote padrão do seu aplicativo. Verifique no começo do seu AndroidManifest.xml qual o package que aparece no atributo package. Se o que eu estou imaginando está correto, provavelmente você deve ter um valor diferente de: vlc.com.br.agenda.web (provavelmente não tem esse web)

Pelo que vi nas suas evidências de registro, o pacote usado para o cadastro da chave foi vlc.com.br.agenda.web mas se esse não for o pacote padrão então o registro não vai funcionar. Para isso, você vai precisar repetir o processo que é feito no navegador mas alterando a URL para que o pacote fique correto. Ele deve ficar algo como:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84%3Bvlc.com.br.agenda

Repare que o nome do pacote vai no final dessa URL. Se o pacote que você encontrar no manifest for diferente desse que eu coloquei no final da URL, sinta-se a vontade para corrigir.

Depois de fazer o processo de registro novamente, copie a API_KEY novamente para o XML e teste novamente.

A mensagem "Google Play services out of date. Requires 9877000 but found 9683470" indica que você está utilizando um emulador muito recente mas a sua lib do play services tá desatualizada. O ideal é você remover o play services das dependências do seu projeto e criar uma google maps activity para que o Android Studio registre a dependência correta. Estou com o Android Studio 2.2 na minha máquina e ele inseriu a versão 9.6.1, por exemplo.

Jeferson,

Deletei e criei novamente uma chave de API para vlc.com.br.agenda, e alterei no build.gradle para,

compile 'com.google.android.gms:play-services:9.8.0'

que a maps activity havia criado originalmente, eu estava usando a 8.4.0, achando que resolveria o problema.

Agora esta apresentado os problemas abaixo descritos, sendo que notei que quando usadas qualquer uma das funcionalidades do aplicativo, são exibidas estas mensagens:

I/Choreographer: Skipped NNN frames!  The application may be doing too much work on its main thread.

Ai vão os problemas apresentados:

I/zzai: Making Creator dynamically
W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000004/n/x86
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
I/Google Maps Android API: Google Play services client version: 9877000
I/Google Maps Android API: Google Play services package version: 9877470
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
D/FLASH: Couldn't find file:  /data/user/0/vlc.com.br.agenda/files/DATA_ServerControlledParametersManager.data.vlc.com.br.agenda: open failed: ENOENT (No such file or directory)
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
I/art: Background sticky concurrent mark sweep GC freed 1589(242KB) AllocSpace objects, 0(0B) LOS objects, 2% free, 12MB/12MB, paused 683us total 111.221ms
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
E/Google Maps Android API: Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
I/Choreographer: Skipped 86 frames!  The application may be doing too much work on its main thread.
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:2
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 2
D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded
I/Choreographer: Skipped 111 frames!  The application may be doing too much work on its main thread.
D/GoogleCertificatesImpl: Fetched 363 Google certificates
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9cb3c010
W/art: Suspending all threads took: 50.587ms

Complementando, é exibida uma activity em branco, igual a do Google Maps com Google escrito colorido no canto inferior esquerdo, mas não exibe o mapa.

Olá Vitor,

Essas mensagens que você apresentou geralmente aparecem quando a máquina não está conseguindo desenhar a tela na velocidade necessária e geralmente está associada ao fato do emulador não estar rodando com aceleração gráfica. Parece que o registro da chave agora está correto mas talvez o emulador só não esteja conseguindo mostrar o mapa.

Para termos certeza que o código e a configuração do seu projeto estão corretos, a maneira mais fácil e confiável é testar o aplicativo diretamente num celular Android.

Um outro teste possível é tentar abrir o aplicativo do Google Maps no emulador pra ver se ele tá funcionando antes de testar no seu aplicativo.

Se nada disso funcionar, faz um zip do seu projeto completo e me passa um link pro Google Drive ou Dropbox.

Jeferson,

Desculpe-me não ter respondido antes, mas na semana que passou, tirei férias, mas voltemos ao assunto.

Como já relatei anteriormente, criei um aplicativo somente com o Google Maps Activity e funcionou perfeitamente.

Quanto a utilizar o aplicativo no meu celular Android LGE LG-K430, é outra coisa que não estou conseguindo, mesmo com a depuração USB ativada nas opções de desenvolvedor, sendo que este problema eu já relatei anteriormente, e não conseguimos solucionar.

Segue endereço do aplicativo no Dropbox:

https://www.dropbox.com/s/rzb6ib60o1b7c7q/Agenda.rar?dl=0

solução!

Olá Vitor,

Testei o seu aplicativo na minha máquina e inicialmente tive o mesmo problema que você comentou da tela ficar em branco somente com o Google no canto mas sem carregar o mapa. Como esse é o principal sintoma de uma chave de API incorreta, refiz o processo de registro da chave e executei novamente a aplicação. Dessa vez tudo funcionou como o esperado então podemos descartar qualquer erro de código no aplicativo mesmo.

Dessa forma, restam apenas duas possibilidades que seriam o emulador e a chave da API que ainda pode estar incorreta na sua máquina. Como você comentou que o emulador já exibiu o mapa corretamente com o exemplo do MapsActivity então certamente o problema é a chave da API.

Quando você executa a sua aplicação e entra na tela do mapa, verifique se o Android não mostra uma mensagem parecida com essa abaixo:

E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
                           Ensure that the "Google Maps Android API v2" is enabled.
                           Ensure that the following Android Key exists:
                               API Key: AIzaSyBysqDgtwAHNS34hBxCHNA-AwZxDb16ZAE
                               Android Application (<cert_fingerprint>;<package_name>): 76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84;vlc.com.br.agenda

Para que a chave cadastrada funcione, ela vai precisar ter o mesmo fingerprint (parte 76:4B:B2:... até o ponto e vírgula) e pacote (vlc.com.br.agenda) apresentados na mensagem da sua máquina. Para gerar a chave correta você vai precisar modificar aquela URL do google_maps_api.xml novamente substituindo o final da URL pelo fingerprint + pacote da mensagem de erro ( 76:4B:B2:A2:1C:F9:C8:ED:8A:1D:18:C0:98:4F:F6:18:25:93:54:84;vlc.com.br.agenda ).

Tente fazer novamente esse processo, já que o código está correto só precisamos acertar esse ponto da configuração!

Jeferson,

Por incrível que pareça, não fiz nenhuma alteração e agora funcionou.

Muito obrigado pela sua ajuda, e vamos em frente continuar os cursos.

Jeferson, seria interessante ter uma tabela para nos indicar quais são as versões do Google Service que rodam em qual versão do Android. Por exemplo:

GS (Google Service) 10.0.0 -> a partir do Lollipop 5.1 (emulador)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software