android - 将 GameSpark BaaS 集成到 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 预览模式文本的黑屏。连接成功,但我看到黑屏。我究竟做错了什么?
解决方案
我通过深入研究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();
}
...
}
然后就解决了。
推荐阅读
- javascript - 自动播放标签在 chrome 和 firefox 上不起作用
- c# - 在服务中使用相同的连接 (NATS)
- algorithm - 无法找出 BFS 中的错误
- azure - 用于 MongoDB 迁移的 Delta Lake Gen2
- css - 如何阻止 WebKit 递归减小字体大小?
- javascript - React native Algolia Search undefined is not an object
- qt - QML 中的堆栈布局
- javascript - CSS - 如何在背景图像上呈现按钮?
- reactjs - 使用 RequireJS 反应组件
- python - 谷歌云存储 python 客户端 AttributeError: 'ClientOptions' object has no attribute 'scopes' 在部署后发生