Android Open Source - DistributedMemory Join Game Activity






From Project

Back to project page DistributedMemory.

License

The source code is released under:

Apache License

If you think the Android project DistributedMemory listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.faudroids.distributedmemory.ui;
//from w  w w  .  jav a 2  s.com
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.Lists;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

import org.faudroids.distributedmemory.R;
import org.faudroids.distributedmemory.common.BaseListActivity;
import org.faudroids.distributedmemory.network.ClientNetworkListener;
import org.faudroids.distributedmemory.network.ConnectionHandler;
import org.faudroids.distributedmemory.network.HostInfo;
import org.faudroids.distributedmemory.network.NetworkManager;

import java.util.List;

import javax.inject.Inject;

import butterknife.ButterKnife;
import butterknife.OnClick;
import timber.log.Timber;


public class JoinGameActivity extends BaseListActivity implements ClientNetworkListener<JsonNode> {

  @Inject ClientUtils clientUtils;
  @Inject NetworkManager networkManager;
  @Inject QRCodeUtils qrCodeUtils;
  private ArrayAdapter<HostInfo> adapter;
  private ProgressDialog connectingToHostDialog;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_join_game);
    ButterKnife.inject(this);

    adapter = new ArrayAdapter<>(this, R.layout.list_item);
    setListAdapter(adapter);
  }


  @Override
  public void onListItemClick(ListView listView, View view, int position, long id) {
    HostInfo hostInfo =  adapter.getItem(position);
    connectToHost(hostInfo);
  }


  @Override
  public void onResume() {
    super.onResume();
    networkManager.startDiscovery(this, new Handler(getMainLooper()));
    adapter.clear();
    adapter.notifyDataSetChanged();
  }


  @Override
  public void onPause() {
    networkManager.stopDiscovery();
    super.onPause();
  }


  @OnClick(R.id.join_help)
  public void onHelpJoinClicked() {
    new AlertDialog.Builder(this)
        .setTitle(R.string.join_game_help_title)
        .setMessage(getString(R.string.join_game_help_client_instructions1))
        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            IntentIntegrator intentIntegrator = new IntentIntegrator(JoinGameActivity.this);
            intentIntegrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
            intentIntegrator.setPrompt(getString(R.string.join_game_help_client_instructions2));
            intentIntegrator.setResultDisplayDuration(0);
            intentIntegrator.initiateScan();
          }
        })
        .setNegativeButton(android.R.string.cancel, null)
        .show();
  }


  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    final IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    if (scanResult != null) {
      new AsyncTask<Void, Void, HostInfo>() {

        @Override
        protected HostInfo doInBackground(Void... params) {
          return qrCodeUtils.readHostInfo(scanResult.getContents());
        }

        @Override
        protected void onPostExecute(HostInfo hostInfo) {
          if (hostInfo != null) connectToHost(hostInfo);
          else Toast.makeText(JoinGameActivity.this, getString(R.string.join_game_help_client_error), Toast.LENGTH_LONG).show();
        }

      }.execute(null, null);
      Timber.d(scanResult.getContents());
    }
  }


  @Override
  public void onServiceDiscovered(HostInfo hostInfo) {
    adapter.add(hostInfo);
    adapter.notifyDataSetChanged();
  }


  @Override
  public void onServiceLost(String hostName) {
    for (int i = 0; i < adapter.getCount(); ++i) {
      if (adapter.getItem(i).getName().equals(hostName)) {
        adapter.remove(adapter.getItem(i));
        break;
      }
    }
    adapter.notifyDataSetChanged();
  }


  @Override
  public void onServiceDiscoveryError() {  }


  @Override
  public void onConnectedToHostSuccess(ConnectionHandler<JsonNode> connectionHandler) {
    connectingToHostDialog.cancel();
    connectingToHostDialog = null;

    clientUtils.setupClient(connectionHandler);

    Intent intent = new Intent(this, GameActivity.class);
    startActivity(intent);
    finish();
  }


  @Override
  public void onConnectedToHostError() {
    connectingToHostDialog.cancel();
    connectingToHostDialog = null;
    Toast.makeText(this, "Failed to join game!", Toast.LENGTH_LONG).show();
  }


  private void connectToHost(HostInfo hostInfo) {
    networkManager.connectToHost(hostInfo, this, new Handler(getMainLooper()));
    connectingToHostDialog = ProgressDialog.show(this, "Connecting to host", "Please wait ...", false);
  }


  @Override
  protected List<Object> getModules() {
    return Lists.<Object>newArrayList(new UiModule());
  }

}




Java Source Code List

org.faudroids.distributedmemory.ApplicationTest.java
org.faudroids.distributedmemory.app.AppModule.java
org.faudroids.distributedmemory.app.DistributedMemoryApplication.java
org.faudroids.distributedmemory.common.BaseActivity.java
org.faudroids.distributedmemory.common.BaseApplication.java
org.faudroids.distributedmemory.common.BaseListActivity.java
org.faudroids.distributedmemory.common.BaseService.java
org.faudroids.distributedmemory.common.CommonModule.java
org.faudroids.distributedmemory.common.Injector.java
org.faudroids.distributedmemory.core.Card.java
org.faudroids.distributedmemory.core.ClientGameListener.java
org.faudroids.distributedmemory.core.ClientGameManager.java
org.faudroids.distributedmemory.core.CoreModule.java
org.faudroids.distributedmemory.core.Device.java
org.faudroids.distributedmemory.core.Evaluation.java
org.faudroids.distributedmemory.core.GameSetupInfo.java
org.faudroids.distributedmemory.core.GameStateManager.java
org.faudroids.distributedmemory.core.GameState.java
org.faudroids.distributedmemory.core.HostGameListener.java
org.faudroids.distributedmemory.core.HostGameManager.java
org.faudroids.distributedmemory.core.HostGameStateManager.java
org.faudroids.distributedmemory.core.HostStateTransitionListener.java
org.faudroids.distributedmemory.core.HostStateTransition.java
org.faudroids.distributedmemory.core.MessageConstants.java
org.faudroids.distributedmemory.core.MessageReader.java
org.faudroids.distributedmemory.core.MessageWriter.java
org.faudroids.distributedmemory.core.Player.java
org.faudroids.distributedmemory.network.BroadcastMessage.java
org.faudroids.distributedmemory.network.ClientNetworkListener.java
org.faudroids.distributedmemory.network.ConnectionHandlerFactory.java
org.faudroids.distributedmemory.network.ConnectionHandler.java
org.faudroids.distributedmemory.network.HostInfo.java
org.faudroids.distributedmemory.network.HostNetworkListener.java
org.faudroids.distributedmemory.network.HostSocketHandler.java
org.faudroids.distributedmemory.network.JsonConnectionHandler.java
org.faudroids.distributedmemory.network.NetworkManager.java
org.faudroids.distributedmemory.network.NetworkModule.java
org.faudroids.distributedmemory.network.StringConnectionHandler.java
org.faudroids.distributedmemory.ui.AboutActivity.java
org.faudroids.distributedmemory.ui.BitmapCache.java
org.faudroids.distributedmemory.ui.ClientUtils.java
org.faudroids.distributedmemory.ui.GameActivity.java
org.faudroids.distributedmemory.ui.HelpActivity.java
org.faudroids.distributedmemory.ui.HelpDialogActivity.java
org.faudroids.distributedmemory.ui.HostGameActivity.java
org.faudroids.distributedmemory.ui.HostService.java
org.faudroids.distributedmemory.ui.JoinGameActivity.java
org.faudroids.distributedmemory.ui.LobbyActivity.java
org.faudroids.distributedmemory.ui.MainActivity.java
org.faudroids.distributedmemory.ui.QRCodeUtils.java
org.faudroids.distributedmemory.ui.StopServerBroadcastReceiver.java
org.faudroids.distributedmemory.ui.UiModule.java
org.faudroids.distributedmemory.utils.Assert.java
org.faudroids.distributedmemory.utils.NotificationUtils.java
org.faudroids.distributedmemory.utils.QRCodeEncoder.java
org.faudroids.distributedmemory.utils.ServiceUtils.java
org.faudroids.distributedmemory.utils.UtilsModule.java