#CodeLab: Xây dựng ứng dụng chat với Firebase:
####Tải project android: goo.gl/5xO5Rt



###Bước 1.1: Đăng ký
####https://firebase.com
####Thông tin:
- Application Name: NanoChat
- Company Domain: firebase.gdg.com
- Project Location: Desktop/
- Minimum SDK: 16 (Jelly Bean)
- Template: Empty Activity
- Activity Name: MainActivity
- LayoutName: activity_main
###Bước 2.1: Thêm thư viện ````Groovy android { buildTypes { ... } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE-FIREBASE.txt' exclude 'META-INF/NOTICE' } }
dependencies { ...
compile 'com.google.android.gms:play-services-auth:8.4.0'
compile 'com.firebase:firebase-client-android:2.5.0'
compile 'com.firebaseui:firebase-ui:0.3.1'
}
###Bước 2.2: Thêm INTERNET permission
````xml
<uses-permission android:name="android.permission.INTERNET"/>
###Bước 2.3: Tạo Firebase context. ###Bước 2.4: Thiết lập đường dẫn
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
mFirebaseRef = new Firebase("https://codelabg.firebaseio.com");
}###Bước 3.1: Gửi tin nhắn: giao diện. ````xml ```` ###Bước 3.2: Gửi tin nhắn: controller. ````Java ... Firebase.setAndroidContext(this); mFirebaseRef = new Firebase("https://codelabg.firebaseio.com");
final EditText textEdit = (EditText) this.findViewById(R.id.text_edit); Button sendButton = (Button) this.findViewById(R.id.send_button);
sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text = textEdit.getText().toString(); Map<String,Object> values = new HashMap<>(); values.put("name", "Android User"); values.put("text", text); mFirebaseRef.push().setValue(values); textEdit.setText(""); } });
<br>
<br>
###Bước 4.1: Thêm class ChatMessage
````Java
public class ChatMessage {
private String name;
private String text;
public ChatMessage() {
// dùng cho Firebase's deserializer
}
}
###Bước 4.2: Thêm ListView.
...
tools:context="codelab.gdg.nanochat.MainActivity">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/footer"/>
<LinearLayout
android:id="@+id/footer"
...###Bước 4.3: Set Adapter
final ListView listView = (ListView) this.findViewById(android.R.id.list);
mListAdapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class,
android.R.layout.two_line_list_item, mFirebaseRef) {
@Override
protected void populateView(View v, ChatMessage model, int position) {
((TextView) v.findViewById(android.R.id.text1)).setText(model.getName());
((TextView) v.findViewById(android.R.id.text2)).setText(model.getText());
}
};
listView.setAdapter(mListAdapter);###Bước 4.5: Đóng kết nối.
@Override
protected void onDestroy() {
super.onDestroy();
mListAdapter.cleanup();
}###Bước 5.1: Bật Login bằng PASSWORD ###Bước 5.2: Login: giao diện ````xml
<LinearLayout android:id="@+id/footer"
###Bước 5.3: Sử dụng Login dialog
````Java
public class MainActivity extends FirebaseLoginBaseActivity {
###Bước 5.4: Cấu hình firebase cho login
@Override
protected Firebase getFirebaseRef() {
return mFirebaseRef;
}###Bước 5.5: Bật Login kiểu PASSWORD.
@Override
protected void onStart() {
super.onStart();
setEnabledAuthProvider(AuthProviderType.PASSWORD);
}###Bước 5.6: Mở login dialog.
Button loginButton = (Button) this.findViewById(R.id.login);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showFirebaseLoginPrompt();
}
});###Bước 5.7: Hiển thị thông tin user
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = textEdit.getText().toString();
ChatMessage message = new ChatMessage(mFirebaseRef.getAuth()
.getProviderData().get("email").toString(), text);
mFirebaseRef.push().setValue(message);
textEdit.setText("");
}
});###Mở rộng: - Logout - Login Facebook - Kết bạn, chat nhóm
###Hoàn thành


