首页 > 解决方案 > 将 GameSpark Ba​​aS 集成到 Android 后出现黑屏

问题描述

我正在尝试将 GmaeSpark 系统集成到 Android 应用程序中。首先,我想在一个简单的项目中进行尝试,因此通过 Android Studio 创建了基本项目,并添加了配置作为 GameSpark 教程。

我在项目的 gradle 中添加了依赖项;

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.+'
        classpath "com.github.dcendents:android-maven-gradle-plugin:2.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "http://repo.gamesparks.net/mvn"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我在模块的 gradle 中添加了 GameSpark 客户端的实现;

apply plugin: 'com.android.feature'

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':base')
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.gamesparks.sdk:gamesparks-android-client-sdk:+'
}

之后,我将所需的代码添加到 AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.slowthstudio.android.testingapp.GameSparkTest">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application>
        <activity
            android:name=".MainActivity"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar"
            tools:replace="android:theme">

            <intent-filter android:order="1">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="android.slowthstudio.com"
                    android:pathPattern="/.*"
                    android:scheme="https" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

最后我在我的活动中添加了开始代码;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String apiKey = "apikey";
        String secret = "secret";
        String credential = "device";
        GSAndroidPlatform.initialise(this, apiKey, secret, credential, false, true);

        GSAndroidPlatform.gs().setOnAvailable(new GSEventConsumer<Boolean>() {
            @Override
            public void onEvent(Boolean available) {

                if (available) {
                    //If we connect, authenticate our player

                    toastMessage("Successful");

                } else
                    toastMessage("unSuccessful");
            }
        });

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    @Override
    public void onStart() {
        super.onStart();
        GSAndroidPlatform.gs().start();
    }
...
}

但是当我运行代码时,我只看到带有 Gamespark 预览模式文本的黑屏。连接成功,但我看到黑屏。我究竟做错了什么?

标签: android

解决方案


我通过深入研究gamespark android sdk代码的方式解决了问题。我在 MainActivity 创建了一个 Intent 并像下面这样开始该活动;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String apiKey = "apikey";
        String secret = "secret";
        String credential = "device";

        GSAndroidPlatform.initialise(this, apiKey, secret, credential, false, true);

        GSAndroidPlatform.gs().setOnAvailable(new GSEventConsumer<Boolean>() {
            @Override
            public void onEvent(Boolean available) {

                if (available) {
                    //If we connect, authenticate our player

                    toastMessage("Successful");

                } else
                    toastMessage("unSuccessful");
            }
        });

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        Intent openMainActivity = new Intent(this.getContext(), MainActivity.class);
        openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(openMainActivity);
    }

    @Override
    public void onStart() {
        super.onStart();
        GSAndroidPlatform.gs().start();
    }
...
}

然后就解决了。


推荐阅读