From d22e231b4475570ff3ce7d80b011a904f05edcae Mon Sep 17 00:00:00 2001 From: mar-v-in Date: Fri, 23 Oct 2015 01:40:50 +0200 Subject: [PATCH] Add Games stub service Games proxy service (chimera) yet to be done for full Play Games support --- extern/GmsApi | 2 +- play-services-core/ic_gamepad.svg | 291 ++++++++++++++++++ .../src/main/AndroidManifest.xml | 21 +- .../microg/gms/games/GamesStubService.java | 58 ++++ .../org/microg/gms/games/UpgradeActivity.java | 73 +++++ .../src/main/res/drawable-hdpi/ic_gamepad.png | Bin 0 -> 2696 bytes .../src/main/res/drawable-mdpi/ic_gamepad.png | Bin 0 -> 1751 bytes .../main/res/drawable-xhdpi/ic_gamepad.png | Bin 0 -> 3654 bytes .../main/res/drawable-xxhdpi/ic_gamepad.png | Bin 0 -> 5805 bytes .../src/main/res/layout/games_info.xml | 107 +++++++ .../src/main/res/values/strings.xml | 18 +- 11 files changed, 562 insertions(+), 8 deletions(-) create mode 100644 play-services-core/ic_gamepad.svg create mode 100644 play-services-core/src/main/java/org/microg/gms/games/GamesStubService.java create mode 100644 play-services-core/src/main/java/org/microg/gms/games/UpgradeActivity.java create mode 100644 play-services-core/src/main/res/drawable-hdpi/ic_gamepad.png create mode 100644 play-services-core/src/main/res/drawable-mdpi/ic_gamepad.png create mode 100644 play-services-core/src/main/res/drawable-xhdpi/ic_gamepad.png create mode 100644 play-services-core/src/main/res/drawable-xxhdpi/ic_gamepad.png create mode 100644 play-services-core/src/main/res/layout/games_info.xml diff --git a/extern/GmsApi b/extern/GmsApi index d2b942d8..4f6a84de 160000 --- a/extern/GmsApi +++ b/extern/GmsApi @@ -1 +1 @@ -Subproject commit d2b942d87f5b5d0547e7e5f279bcc734d69cdef4 +Subproject commit 4f6a84de9d95fef255579c5ce06a89363dc05aa8 diff --git a/play-services-core/ic_gamepad.svg b/play-services-core/ic_gamepad.svg new file mode 100644 index 00000000..9743c3c5 --- /dev/null +++ b/play-services-core/ic_gamepad.svg @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index c34aba9f..3c1fd1b8 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -300,6 +300,26 @@ android:name=".auth.TokenActivity" android:exported="true"/> + + + + + + + + + + + + + + + + - diff --git a/play-services-core/src/main/java/org/microg/gms/games/GamesStubService.java b/play-services-core/src/main/java/org/microg/gms/games/GamesStubService.java new file mode 100644 index 00000000..4e07f543 --- /dev/null +++ b/play-services-core/src/main/java/org/microg/gms/games/GamesStubService.java @@ -0,0 +1,58 @@ +/* + * Copyright 2013-2015 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.microg.gms.games; + +import android.app.PendingIntent; +import android.content.Intent; +import android.os.Bundle; +import android.os.RemoteException; + +import com.google.android.gms.common.api.CommonStatusCodes; +import com.google.android.gms.common.internal.GetServiceRequest; +import com.google.android.gms.common.internal.IGmsCallbacks; + +import org.microg.gms.BaseService; +import org.microg.gms.common.Services.GAMES; + +import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; +import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME; +import static org.microg.gms.games.UpgradeActivity.ACTION_PLAY_GAMES_UPGRADE; +import static org.microg.gms.games.UpgradeActivity.EXTRA_GAME_PACACKE_NAME; + +public class GamesStubService extends BaseService { + + public static final String PARAM_GAME_PACKAGE_NAME = "com.google.android.gms.games.key.gamePackageName"; + + public GamesStubService() { + super("GmsGamesSvc", GAMES.SERVICE_ID); + } + + @Override + public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException { + String packageName = null; + if (request.extras != null) { + packageName = request.extras.getString(PARAM_GAME_PACKAGE_NAME); + } + if (packageName == null) packageName = GMS_PACKAGE_NAME; + Intent intent = new Intent(ACTION_PLAY_GAMES_UPGRADE); + intent.setPackage(GMS_PACKAGE_NAME); + intent.putExtra(EXTRA_GAME_PACACKE_NAME, packageName); + Bundle bundle = new Bundle(); + bundle.putParcelable("pendingIntent", PendingIntent.getActivity(this, packageName.hashCode(), intent, FLAG_UPDATE_CURRENT)); + callback.onPostInitComplete(CommonStatusCodes.RESOLUTION_REQUIRED, null, bundle); + } +} diff --git a/play-services-core/src/main/java/org/microg/gms/games/UpgradeActivity.java b/play-services-core/src/main/java/org/microg/gms/games/UpgradeActivity.java new file mode 100644 index 00000000..ca4b5db9 --- /dev/null +++ b/play-services-core/src/main/java/org/microg/gms/games/UpgradeActivity.java @@ -0,0 +1,73 @@ +/* + * Copyright 2013-2015 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.microg.gms.games; + +import android.app.Activity; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.TextView; + +import com.google.android.gms.R; + +public class UpgradeActivity extends Activity { + public static final String ACTION_PLAY_GAMES_UPGRADE = "com.google.android.gms.games.PLAY_GAMES_UPGRADE"; + public static final String EXTRA_GAME_PACACKE_NAME = "com.google.android.gms.games.GAME_PACKAGE_NAME"; + + private static final String TAG = "GmsUpgActivity"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.games_info); + + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); + lp.copyFrom(getWindow().getAttributes()); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + lp.height = WindowManager.LayoutParams.WRAP_CONTENT; + getWindow().setAttributes(lp); + + String packageName = getIntent().getStringExtra(EXTRA_GAME_PACACKE_NAME); + + // receive package info + PackageManager packageManager = getPackageManager(); + ApplicationInfo applicationInfo; + try { + applicationInfo = packageManager.getApplicationInfo(packageName, 0); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, e); + finish(); + return; + } + CharSequence appLabel = packageManager.getApplicationLabel(applicationInfo); + Drawable appIcon = packageManager.getApplicationIcon(applicationInfo); + + ((ImageView) findViewById(R.id.app_icon)).setImageDrawable(appIcon); + ((TextView) findViewById(R.id.title)).setText(getString(R.string.games_info_title, appLabel)); + findViewById(android.R.id.button1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } +} diff --git a/play-services-core/src/main/res/drawable-hdpi/ic_gamepad.png b/play-services-core/src/main/res/drawable-hdpi/ic_gamepad.png new file mode 100644 index 0000000000000000000000000000000000000000..43167f99119349c22e73ddf1f0adf2347f22e7cf GIT binary patch literal 2696 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 literal 0 HcmV?d00001 diff --git a/play-services-core/src/main/res/drawable-xhdpi/ic_gamepad.png b/play-services-core/src/main/res/drawable-xhdpi/ic_gamepad.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b21f88c531a0b184adfd712b107dff5caac827 GIT binary patch literal 3654 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 U!pN|)|CkRj(lghs#X6Gy2Xu?W5C8xG literal 0 HcmV?d00001 diff --git a/play-services-core/src/main/res/drawable-xxhdpi/ic_gamepad.png b/play-services-core/src/main/res/drawable-xxhdpi/ic_gamepad.png new file mode 100644 index 0000000000000000000000000000000000000000..556abb12859446937fff3eacad79a3a9b59623d0 GIT binary patch literal 5805 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 literal 0 HcmV?d00001 diff --git a/play-services-core/src/main/res/layout/games_info.xml b/play-services-core/src/main/res/layout/games_info.xml new file mode 100644 index 00000000..43e64795 --- /dev/null +++ b/play-services-core/src/main/res/layout/games_info.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +