Advertisement
Guest User

Untitled

a guest
Jun 14th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.77 KB | None | 0 0
  1. /**
  2.  * Copyright Google Inc. All Rights Reserved.
  3.  * <p/>
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * <p/>
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * <p/>
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. package com.google.firebase.codelab.friendlychat;
  17.  
  18. import android.content.Intent;
  19. import android.content.SharedPreferences;
  20. import android.net.Uri;
  21. import android.os.Bundle;
  22. import android.preference.PreferenceManager;
  23. import android.support.annotation.NonNull;
  24. import android.support.v4.content.ContextCompat;
  25. import android.support.v7.app.AppCompatActivity;
  26. import android.support.v7.widget.LinearLayoutManager;
  27. import android.support.v7.widget.RecyclerView;
  28. import android.text.Editable;
  29. import android.text.InputFilter;
  30. import android.text.TextWatcher;
  31. import android.util.Log;
  32. import android.view.Menu;
  33. import android.view.MenuInflater;
  34. import android.view.MenuItem;
  35. import android.view.View;
  36. import android.widget.Button;
  37. import android.widget.EditText;
  38. import android.widget.ImageView;
  39. import android.widget.ProgressBar;
  40. import android.widget.TextView;
  41. import android.widget.Toast;
  42.  
  43. import com.bumptech.glide.Glide;
  44. import com.firebase.ui.database.FirebaseRecyclerAdapter;
  45. import com.google.android.gms.ads.AdRequest;
  46. import com.google.android.gms.ads.AdView;
  47. import com.google.android.gms.appinvite.AppInvite;
  48. import com.google.android.gms.appinvite.AppInviteInvitation;
  49. import com.google.android.gms.auth.api.Auth;
  50. import com.google.android.gms.common.ConnectionResult;
  51. import com.google.android.gms.common.api.GoogleApiClient;
  52. import com.google.android.gms.tasks.OnCompleteListener;
  53. import com.google.android.gms.tasks.OnFailureListener;
  54. import com.google.android.gms.tasks.OnSuccessListener;
  55. import com.google.android.gms.tasks.Task;
  56. import com.google.firebase.analytics.FirebaseAnalytics;
  57. import com.google.firebase.auth.FirebaseAuth;
  58. import com.google.firebase.auth.FirebaseUser;
  59. import com.google.firebase.database.DataSnapshot;
  60. import com.google.firebase.database.DatabaseError;
  61. import com.google.firebase.database.DatabaseReference;
  62. import com.google.firebase.database.FirebaseDatabase;
  63. import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
  64. import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
  65. import com.google.firebase.appindexing.Action;
  66. import com.google.firebase.appindexing.FirebaseAppIndex;
  67. import com.google.firebase.appindexing.FirebaseUserActions;
  68. import com.google.firebase.appindexing.Indexable;
  69. import com.google.firebase.appindexing.builders.Indexables;
  70. import com.google.firebase.appindexing.builders.PersonBuilder;
  71. import com.google.firebase.storage.FirebaseStorage;
  72. import com.google.firebase.storage.StorageReference;
  73. import com.google.firebase.storage.UploadTask;
  74.  
  75. import java.util.HashMap;
  76. import java.util.Map;
  77.  
  78. import de.hdodenhof.circleimageview.CircleImageView;
  79. public class MainActivity extends AppCompatActivity
  80.  
  81.         implements GoogleApiClient.OnConnectionFailedListener {
  82.  
  83.     public static class MessageViewHolder extends RecyclerView.ViewHolder {
  84.         TextView messageTextView;
  85.         ImageView messageImageView;
  86.         TextView messengerTextView;
  87.         CircleImageView messengerImageView;
  88.  
  89.         public MessageViewHolder(View v) {
  90.             super(v);
  91.             messageTextView = (TextView) itemView.findViewById(R.id.messageTextView);
  92.             messageImageView = (ImageView) itemView.findViewById(R.id.messageImageView);
  93.             messengerTextView = (TextView) itemView.findViewById(R.id.messengerTextView);
  94.             messengerImageView = (CircleImageView) itemView.findViewById(R.id.messengerImageView);
  95.         }
  96.     }
  97.  
  98.     private static final String TAG = "MainActivity";
  99.     public static final String MESSAGES_CHILD = "messages";
  100.     private static final int REQUEST_INVITE = 1;
  101.     private static final int REQUEST_IMAGE = 2;
  102.     private static final String LOADING_IMAGE_URL = "https://www.google.com/images/spin-32.gif";
  103.     public static final int DEFAULT_MSG_LENGTH_LIMIT = 10;
  104.     public static final String ANONYMOUS = "anonymous";
  105.     private static final String MESSAGE_SENT_EVENT = "message_sent";
  106.     private String mUsername;
  107.     private String mPhotoUrl;
  108.     private SharedPreferences mSharedPreferences;
  109.     private GoogleApiClient mGoogleApiClient;
  110.     private static final String MESSAGE_URL = "http://friendlychat.firebase.google.com/message/";
  111.  
  112.     private Button mSendButton;
  113.     private RecyclerView mMessageRecyclerView;
  114.     private LinearLayoutManager mLinearLayoutManager;
  115.     private ProgressBar mProgressBar;
  116.     private EditText mMessageEditText;
  117.     private ImageView mAddMessageImageView;
  118.  
  119.     // Firebase instance variables
  120.     private FirebaseAuth mFirebaseAuth;
  121.     private FirebaseUser mFirebaseUser;
  122.     mFirebaseAuth = FirebaseAuth.getInstance();
  123.     mFirebaseUser = mFirebaseAuth.getCurrentUser();
  124. if (mFirebaseUser == null) {
  125.         // Not signed in, launch the Sign In activity
  126.         startActivity(new Intent(this, SignInActivity.class));
  127.         finish();
  128.         return;
  129.     } else {
  130.         mUsername = mFirebaseUser.getDisplayName();
  131.         if (mFirebaseUser.getPhotoUrl() != null) {
  132.             mPhotoUrl = mFirebaseUser.getPhotoUrl().toString();
  133.         }
  134.     }
  135.     @Override
  136.     public boolean onOptionsItemSelected(MenuItem item) {
  137.         switch (item.getItemId()) {
  138.             case R.id.sign_out_menu:
  139.                 mFirebaseAuth.signOut();
  140.                 Auth.GoogleSignInApi.signOut(mGoogleApiClient);
  141.                 mUsername = ANONYMOUS;
  142.                 startActivity(new Intent(this, SignInActivity.class));
  143.                 finish();
  144.                 return true;
  145.             default:
  146.                 return super.onOptionsItemSelected(item);
  147.         }
  148.     }
  149.     @Override
  150.     protected void onCreate(Bundle savedInstanceState) {
  151.         super.onCreate(savedInstanceState);
  152.         setContentView(R.layout.activity_main);
  153.         mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
  154.         // Set default username is anonymous.
  155.         mUsername = ANONYMOUS;
  156.  
  157.         mGoogleApiClient = new GoogleApiClient.Builder(this)
  158.                 .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
  159.                 .addApi(Auth.GOOGLE_SIGN_IN_API)
  160.                 .build();
  161.  
  162.         // Initialize ProgressBar and RecyclerView.
  163.         mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
  164.         mMessageRecyclerView = (RecyclerView) findViewById(R.id.messageRecyclerView);
  165.         mLinearLayoutManager = new LinearLayoutManager(this);
  166.         mLinearLayoutManager.setStackFromEnd(true);
  167.         mMessageRecyclerView.setLayoutManager(mLinearLayoutManager);
  168.  
  169.         mProgressBar.setVisibility(ProgressBar.INVISIBLE);
  170.  
  171.         mMessageEditText = (EditText) findViewById(R.id.messageEditText);
  172.         mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(mSharedPreferences
  173.                 .getInt(CodelabPreferences.FRIENDLY_MSG_LENGTH, DEFAULT_MSG_LENGTH_LIMIT))});
  174.         mMessageEditText.addTextChangedListener(new TextWatcher() {
  175.             @Override
  176.             public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  177.             }
  178.  
  179.             @Override
  180.             public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  181.                 if (charSequence.toString().trim().length() > 0) {
  182.                     mSendButton.setEnabled(true);
  183.                 } else {
  184.                     mSendButton.setEnabled(false);
  185.                 }
  186.             }
  187.  
  188.             @Override
  189.             public void afterTextChanged(Editable editable) {
  190.             }
  191.         });
  192.  
  193.         mSendButton = (Button) findViewById(R.id.sendButton);
  194.         mSendButton.setOnClickListener(new View.OnClickListener() {
  195.             @Override
  196.             public void onClick(View view) {
  197.                 // Send messages on click.
  198.             }
  199.         });
  200.  
  201.         mAddMessageImageView = (ImageView) findViewById(R.id.addMessageImageView);
  202.         mAddMessageImageView.setOnClickListener(new View.OnClickListener() {
  203.             @Override
  204.             public void onClick(View view) {
  205.                 // Select image for image message on click.
  206.             }
  207.         });
  208.     }
  209.  
  210.     @Override
  211.     public void onStart() {
  212.         super.onStart();
  213.         // Check if user is signed in.
  214.         // TODO: Add code to check if user is signed in.
  215.     }
  216.  
  217.     @Override
  218.     public void onPause() {
  219.         super.onPause();
  220.     }
  221.  
  222.     @Override
  223.     public void onResume() {
  224.         super.onResume();
  225.     }
  226.  
  227.     @Override
  228.     public void onDestroy() {
  229.         super.onDestroy();
  230.     }
  231.  
  232.     @Override
  233.     public boolean onCreateOptionsMenu(Menu menu) {
  234.         MenuInflater inflater = getMenuInflater();
  235.         inflater.inflate(R.menu.main_menu, menu);
  236.         return true;
  237.     }
  238.  
  239.     @Override
  240.     public boolean onOptionsItemSelected(MenuItem item) {
  241.         return super.onOptionsItemSelected(item);
  242.     }
  243.  
  244.     @Override
  245.     public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  246.         // An unresolvable error has occurred and Google APIs (including Sign-In) will not
  247.         // be available.
  248.         Log.d(TAG, "onConnectionFailed:" + connectionResult);
  249.         Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show();
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement