在Android中,可以使用Google Play游戏服务API来获取用户的游戏数据,包括已玩游戏和解锁的成就。下面是一种实现方法:
dependencies {
implementation 'com.google.android.gms:play-services-games:19.0.0'
}
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Games.API)
.addScope(Games.SCOPE_GAMES)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
// 当Google Play游戏服务API连接成功后,可以获取用户的游戏数据
Games.Achievements.unlock(mGoogleApiClient, "achievement_id"); // 解锁成就示例
Games.Players.getCurrentPlayer(mGoogleApiClient).getResultCallback(new ResultCallback() {
@Override
public void onResult(@NonNull Players.LoadPlayersResult loadPlayersResult) {
Player player = loadPlayersResult.getPlayers().get(0);
String displayName = player.getDisplayName();
String playerId = player.getPlayerId();
// 获取当前玩家的显示名称和ID
}
});
}
@Override
public void onConnectionSuspended(int i) {
// 连接暂停
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
// 连接失败
}
}
在上述代码中,我们创建了一个GoogleApiClient实例,并在onConnected()方法中使用Games API来解锁成就和获取当前玩家的信息。你需要将"achievement_id"替换为你的成就ID。
请注意,为了使用Google Play游戏服务API,你需要在Google Play控制台上创建一个项目,并在其中启用Google Play游戏服务。你还需要为你的应用配置SHA-1指纹和包名,并将生成的配置文件添加到你的项目中。
此外,还需要确保设备上安装了Google Play服务,并且用户已登录到Google Play游戏服务。