Membuat Realtime Chat Sederhana | Idiotz Team
Idiotz Team

Kumpulan Artikel / Bacaan Menarik dan Terbaru Di Idiotz Team (IT)

Membuat Realtime Chat Sederhana

  1. Buka android studio lalu pilih File -> New Project
  2. Berinama Project “RealtimeChat” tanpa petik , pilih next
  3. Pilih API level 17:Android 4.2 ( Jelly Bean ) ,next
  4. Pilih Empty Activity , next 
  5. Nama activity dan class Biarkan saja default -> Finish
  6. Buka browser dan masukan alamat https://console.firebase.google.com/
  7. Pilih Create New Project , isikan Project name Sesuai dengan yang tadi kita buat dan pilih juga negaranya yang pasti INDONESIA hehe
    1
  8. Setelah Create New Projek lalu akan di alihakan he halaman seperti berikut , Lalu pilih yang di tengah “ Add Firebase to your android app ” 
    2
  9. Isi Form sesuai Name Package yang ada di projek , Untuk SHA 1 optionaljika di isi ini caranya :
    5
    -Refresh Gradlenya
    -Pilih RealtimeChat -> RealtimeChat (root) -> Tasks -> android -> double klik pada signing report
    3-
    Setelah beberapa saat akan muncul dialog yang berada di bawah, lalu copy SHA 1 pada Form tadi
    4
  10. Setelah langkah pertama selelsai maka akan   Secara otomastis akan mendownload file json, setelah terdwonload copy file json tersebut di folder “app” 
    6
    7
  11. Yang terakhir kita harus menambahkan beberapa baris code pada Gradle build dan Gradle app level
    8
    111
    Gradle build
    123Gradle level app
  12. Buka browser lagi untuk mengubah Permision pada database , Pilih Databse - > Rules - > ubah "auth != null" jadi true -> Publish
    11

Source Code

  1. activity_main.xml
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3.    xmlns:tools="http://schemas.android.com/tools"
    4.    android:layout_width="match_parent"
    5.    android:layout_height="match_parent"
    6.    android:paddingBottom="@dimen/activity_vertical_margin"
    7.    android:paddingLeft="@dimen/activity_horizontal_margin"
    8.    android:paddingRight="@dimen/activity_horizontal_margin"
    9.    android:paddingTop="@dimen/activity_vertical_margin"
    10.    android:orientation="vertical"
    11.    tools:context="com.example.darsiwan.fireapp.MainActivity">
    12.     <ListView
    13.        android:id="@+id/listView"
    14.        android:layout_width="match_parent"
    15.        android:layout_height="wrap_content"
    16.        android:layout_alignParentTop="true"
    17.        android:layout_alignParentRight="true"
    18.        android:layout_alignParentEnd="true"
    19.        android:layout_above="@+id/etNeme_room">
    20.     </ListView>
    21.     <EditText
    22.        android:layout_width="226dp"
    23.        android:layout_height="wrap_content"
    24.        android:id="@+id/etNeme_room"
    25.        android:layout_alignParentBottom="true"
    26.        android:layout_alignParentStart="true"
    27.        android:layout_toStartOf="@+id/btnAdd_room" />
    28.     <Button
    29.        android:layout_width="wrap_content"
    30.        android:layout_height="wrap_content"
    31.        android:text="Room"
    32.        android:id="@+id/btnAdd_room"
    33.        android:layout_gravity="right"
    34.        style="?android:attr/borderlessButtonStyle"
    35.        android:drawableLeft="@drawable/ic_add_black_24dp"
    36.        android:layout_alignParentBottom="true"
    37.        android:layout_alignParentEnd="true" />
    38. </RelativeLayout>
  2. MainActivity.java
  3. DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. import android.content.DialogInterface;
    2. import android.content.Intent;
    3. import android.support.v7.app.AlertDialog;
    4. import android.support.v7.app.AppCompatActivity;
    5. import android.os.Bundle;
    6. import android.view.View;
    7. import android.widget.AdapterView;
    8. import android.widget.ArrayAdapter;
    9. import android.widget.Button;
    10. import android.widget.EditText;
    11. import android.widget.ListView;
    12. import android.widget.TextView;
    13. import com.firebase.client.Firebase;
    14. import com.google.firebase.database.DataSnapshot;
    15. import com.google.firebase.database.DatabaseError;
    16. import com.google.firebase.database.DatabaseReference;
    17. import com.google.firebase.database.FirebaseDatabase;
    18. import com.google.firebase.database.ValueEventListener;
    19. import java.util.ArrayList;
    20. import java.util.HashMap;
    21. import java.util.HashSet;
    22. import java.util.Iterator;
    23. import java.util.Map;
    24. import java.util.Set;
    25. public class MainActivity extends AppCompatActivity {
    26.     private  Button add_room;
    27.     private  EditText room_name;
    28.     private ListView listView;
    29.     private String name;
    30.     private DatabaseReference root =FirebaseDatabase.getInstance().getReference().getRoot();
    31.     private ArrayAdapter<String> arrayAdapter;
    32.     private ArrayList<String> list_of_rooms = new ArrayList();
    33.     @Override
    34.     protected void onCreate(Bundle savedInstanceState) {
    35.         super.onCreate(savedInstanceState);
    36.         setContentView(R.layout.activity_main);
    37.         add_room = (Button)findViewById(R.id.btnAdd_room);
    38.         room_name = (EditText)findViewById(R.id.etNeme_room);
    39.         listView = (ListView)findViewById(R.id.listView);
    40.         arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list_of_rooms);
    41.         listView.setAdapter(arrayAdapter);
    42.         request_user_name();
    43.         add_room.setOnClickListener(new View.OnClickListener() {
    44.             @Override
    45.             public void onClick(View view) {
    46.                 Map<String,Object> map = new HashMap<String,Object>();
    47.                 map.put(room_name.getText().toString(),"");
    48.                 root.updateChildren(map);
    49.             }
    50.         });
    51.         root.addValueEventListener(new ValueEventListener() {
    52.             @Override
    53.             public void onDataChange(DataSnapshot dataSnapshot) {
    54.                 Set<String> set = new HashSet<String>();
    55.                 Iterator i = dataSnapshot.getChildren().iterator();
    56.                 while ( i.hasNext())
    57.                 {
    58.                     set.add(((DataSnapshot)i.next()).getKey());
    59.                 }
    60.                 list_of_rooms.clear();
    61.                 list_of_rooms.addAll(set);
    62.                 arrayAdapter.notifyDataSetChanged();
    63.             }
    64.             @Override
    65.             public void onCancelled(DatabaseError databaseError) {
    66.             }
    67.         });
    68.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    69.             @Override
    70.             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
    71.                 Intent I = new Intent(getApplicationContext(),chatroom.class);
    72.                 I.putExtra("room_name",((TextView)view).getText().toString());
    73.                 I.putExtra("user_name",name);
    74.                 startActivity(I);
    75.             }
    76.         });
    77.     }
    78.     private void request_user_name() {
    79.         AlertDialog.Builder builder = new AlertDialog.Builder(this);
    80.         builder.setTitle("Enter Name");
    81.         final EditText input_field = new EditText(this);
    82.         builder.setView(input_field);
    83.         builder.setPositiveButton("OK "new DialogInterface.OnClickListener() {
    84.             @Override
    85.             public void onClick(DialogInterface dialogInterface, int i) {
    86.                 name = input_field.getText().toString();
    87.             }
    88.         });
    89.         builder.setNegativeButton("Cancel"new DialogInterface.OnClickListener() {
    90.             @Override
    91.             public void onClick(DialogInterface dialogInterface, int i) {
    92.                 dialogInterface.cancel();
    93.                 request_user_name();
    94.             }
    95.         });
    96.         builder.show();
    97.     }
    98. }
  4. Buat Empty Activity dengan nama activity_chatroom.xml dan chatroom.java
    - activity_chatroom.xml
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3.    xmlns:tools="http://schemas.android.com/tools"
    4.    android:layout_width="match_parent"
    5.    android:layout_height="match_parent"
    6.    android:paddingBottom="@dimen/activity_vertical_margin"
    7.    android:paddingLeft="@dimen/activity_horizontal_margin"
    8.    android:paddingRight="@dimen/activity_horizontal_margin"
    9.    android:paddingTop="@dimen/activity_vertical_margin"
    10.    android:orientation="vertical"
    11.    tools:context="com.example.darsiwan.fireapp.chatroom"
    12.    android:weightSum="1">
    13.     <ScrollView
    14.        android:layout_width="378dp"
    15.        android:layout_height="157dp"
    16.        android:id="@+id/scrollView"
    17.        android:layout_alignParentTop="true"
    18.        android:layout_alignParentStart="true"
    19.        android:layout_weight="1.04">
    20.         <TextView
    21.            android:layout_width="wrap_content"
    22.            android:layout_height="wrap_content"
    23.            android:textAppearance="?android:attr/textAppearanceMedium"
    24.            android:id="@+id/textView" />
    25.     </ScrollView>
    26.     <LinearLayout
    27.        android:layout_width="match_parent"
    28.        android:layout_height="wrap_content"
    29.        android:orientation="horizontal"
    30.        android:weightSum="1">
    31.         <EditText
    32.            android:layout_width="59dp"
    33.            android:layout_height="wrap_content"
    34.            android:id="@+id/editText"
    35.            android:layout_alignTop="@+id/button"
    36.            android:layout_alignParentStart="true"
    37.            android:layout_toStartOf="@+id/button"
    38.            android:layout_weight="1.02" />
    39.         <Button
    40.            android:layout_width="52dp"
    41.            android:layout_height="wrap_content"
    42.            android:id="@+id/button"
    43.            style="?android:attr/borderlessButtonStyle"
    44.            android:drawableLeft="@drawable/ic_send_black_24dp"
    45.            android:layout_alignParentBottom="true"
    46.            android:layout_alignParentEnd="true" />
    47.     </LinearLayout>
    48. </LinearLayout>

    - chatroom.java
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. import android.provider.ContactsContract;
    2. import android.support.v7.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. import android.view.View;
    5. import android.widget.Button;
    6. import android.widget.EditText;
    7. import android.widget.TextView;
    8. import com.google.firebase.database.ChildEventListener;
    9. import com.google.firebase.database.DataSnapshot;
    10. import com.google.firebase.database.DatabaseError;
    11. import com.google.firebase.database.DatabaseReference;
    12. import com.google.firebase.database.FirebaseDatabase;
    13. import java.util.HashMap;
    14. import java.util.Iterator;
    15. import java.util.Map;
    16. public class chatroom extends AppCompatActivity {
    17.     private Button btn_send_msg;
    18.     private EditText input_msg;
    19.     private TextView chat_conversation;
    20.     private String user_name ,room_name;
    21.     private DatabaseReference root;
    22.     private String temp_key;
    23.     @Override
    24.     protected void onCreate(Bundle savedInstanceState) {
    25.         super.onCreate(savedInstanceState);
    26.         setContentView(R.layout.activity_chatroom);
    27.         btn_send_msg = (Button)findViewById(R.id.button);
    28.         input_msg = (EditText)findViewById(R.id.editText);
    29.         chat_conversation = (TextView)findViewById(R.id.textView);
    30.         user_name = getIntent().getExtras().get("user_name").toString();
    31.         room_name = getIntent().getExtras().get("room_name").toString();
    32.         setTitle("Room - "+room_name);
    33.         root = FirebaseDatabase.getInstance().getReference().child(room_name);
    34.         btn_send_msg.setOnClickListener(new View.OnClickListener() {
    35.             @Override
    36.             public void onClick(View view) {
    37.                 Map<String,Object> map = new HashMap<String, Object>();
    38.                 temp_key = root.push().getKey();
    39.                 root.updateChildren(map);
    40.                 DatabaseReference message_root = root.child(temp_key);
    41.                 Map<String,Object> map2 = new HashMap<String, Object>();
    42.                 map2.put("name",user_name);
    43.                 map2.put("msg",input_msg.getText().toString());
    44.                 message_root.updateChildren(map2);
    45.             }
    46.         });
    47.         root.addChildEventListener(new ChildEventListener() {
    48.             @Override
    49.             public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    50.                 append_chat_conversatin(dataSnapshot);
    51.             }
    52.             @Override
    53.             public void onChildChanged(DataSnapshot dataSnapshot, String s) {
    54.                 append_chat_conversatin(dataSnapshot);
    55.             }
    56.             @Override
    57.             public void onChildRemoved(DataSnapshot dataSnapshot) {
    58.             }
    59.             @Override
    60.             public void onChildMoved(DataSnapshot dataSnapshot, String s) {
    61.             }
    62.             @Override
    63.             public void onCancelled(DatabaseError databaseError) {
    64.             }
    65.         });
    66.     }
    67. private String chat_msg, chat_user_name;
    68.     private void append_chat_conversatin(DataSnapshot dataSnapshot) {
    69.         Iterator i = dataSnapshot.getChildren().iterator();
    70.         while (i.hasNext())
    71.         {
    72.             chat_msg = (String) ((DataSnapshot)i.next()).getValue();
    73.             chat_user_name = (String) ((DataSnapshot)i.next()).getValue();
    74.             chat_conversation.append(chat_user_name + " : "+chat_msg +"\n");
    75.         }
    76.     }
    77. }
  5. Edit androidmanifest.xml
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3.    package="com.example.darsiwan.fireapp">
    4.     <uses-permission android:name="android.permission.INTERNET" />
    5.     <application
    6.        android:allowBackup="true"
    7.        android:icon="@mipmap/ic_launcher"
    8.        android:label="@string/app_name"
    9.        android:supportsRtl="true"
    10.        android:theme="@style/AppTheme">
    11.         <activity android:name=".MainActivity">
    12.             <intent-filter>
    13.                 <action android:name="android.intent.action.MAIN" />
    14.                 <category android:name="android.intent.category.LAUNCHER" />
    15.             </intent-filter>
    16.         </activity>
    17.         <activity android:name=".chatroom"></activity>
    18.     </application>
    19. </manifest>
  6. jalankan aplikasinya .
    32-nodither (1)
Terima kasih sudah mengunjungi blog kami :)
 Silahkan anda share artikel kami dengan mencantumkan sumber nya 

Post a Comment

[blogger]

MKRdezign

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget