MainActivity
package com.example.chatappdemo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.chatappdemo.DAO.ConversationDAO;
import com.example.chatappdemo.DAO.MyinfoDAO;
import com.example.chatappdemo.DAO.ReceiveRequestDAO;
import com.example.chatappdemo.model.Conversation;
import com.example.chatappdemo.model.Myinfo;
import com.example.chatappdemo.model.ReceiveRequest;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.List;
public class MainActivity extends AppCompatActivity implements OnConversationClickListener,OnRequestClickListener{
private static final String TAG = "SocketServerClient";
private Button scanButton;
private RecyclerView recyclerViewConversations;
private RecyclerView recyclerViewConversations_ListRequest;
private ConversationAdapter conversationAdapter;
private RequestReceiveAdapter requestReceiveAdapter;
private List<Conversation> conversationList;
private List<ReceiveRequest> requestList;
// service
private BroadcastReceiver newChangeAdapterConversation,newChangeAdapterRequest;
// SQL
// private MyinfoDAO myinfoDAO;
private ConversationDAO ConversationDAO;
private ReceiveRequestDAO ReceiveRequestDAO;
static {
System.loadLibrary("cal-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scanButton= findViewById(R.id.scanButton);
recyclerViewConversations = findViewById(R.id.recyclerViewConversations);
recyclerViewConversations_ListRequest=findViewById(R.id.recyclerViewConversations_ListRequest);
// tao tai khoan;
String myIP=getDeviceIpAddress();
javaExternal func= new javaExternal();
MyinfoDAO myinfoDAO = new MyinfoDAO(this);
Log.i("TAG",myIP);
Myinfo myinfo = myinfoDAO.getInfoByIP(myIP);
if(myinfo == null){
RSAKey rsaKey = func.generateKeyRSAObject();
Log.i(TAG,"khoa cong khai: "+rsaKey.getPublicKey());
Log.i(TAG,"khoa bi mat: "+ rsaKey.getPrivateKey());
Myinfo myinfoSave= new Myinfo(myIP,"tung",rsaKey.getPublicKey(),rsaKey.getPrivateKey());
myinfoDAO.insertMyModel(myinfoSave);
}
ConversationDAO=new ConversationDAO(this);
ReceiveRequestDAO = new ReceiveRequestDAO(this);
// addConversation();
conversationList = ConversationDAO.getAllConversations();
requestList= ReceiveRequestDAO.getAllReceiveRequests();
// Thiết lập adapter cho RecyclerView Conversation
conversationAdapter = new ConversationAdapter(conversationList,this);
recyclerViewConversations.setLayoutManager(new LinearLayoutManager(this));
recyclerViewConversations.setAdapter(conversationAdapter);
// Thiết lập adapter cho RecyclerView hang cho yeu cau ket ban
requestReceiveAdapter= new RequestReceiveAdapter(requestList, this);
recyclerViewConversations_ListRequest.setLayoutManager(new LinearLayoutManager(this));
recyclerViewConversations_ListRequest.setAdapter(requestReceiveAdapter);
// Chay server socket
Intent serviceIntent = new Intent(this, SocketServerService.class);
startService(serviceIntent);
// Đăng ký nhận Conversation mới
newChangeAdapterConversation= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"Cập nhật danh sách Conversation");
List<Conversation> updatedConversationList = ConversationDAO.getAllConversations();
conversationAdapter.updateConversations(updatedConversationList);
}
};
IntentFilter filter = new IntentFilter("com.example.chatappdemo.CHANGE_ADAPTER_ACCEPT");
IntentFilter filter1 = new IntentFilter("com.example.chatappdemo.NEW_MESSAGE");
registerReceiver(newChangeAdapterConversation, filter);
registerReceiver(newChangeAdapterConversation,filter1);
// Đăng ký nhận Request List mới
newChangeAdapterRequest= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"Cập nhật danh sách Request");
List<ReceiveRequest> updatedReceiveRequestList = ReceiveRequestDAO.getAllReceiveRequests();
requestReceiveAdapter.updateRequestList(updatedReceiveRequestList);
}
};
IntentFilter filter2 = new IntentFilter("com.example.chatappdemo.NEW_REQUEST");
registerReceiver(newChangeAdapterRequest,filter2);
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(MainActivity.this,ScanNetworkActivity.class);
startActivity(intent);
}
});
}
// @Override
// protected void onResume() {
// super.onResume();
// registerReceiver(newChangeAdapter,)
// }
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"reset Main activity");
List<Conversation> updatedConversationList = ConversationDAO.getAllConversations();
List<ReceiveRequest> updatedRequestList = ReceiveRequestDAO.getAllReceiveRequests();
conversationAdapter.updateConversations(updatedConversationList);
requestReceiveAdapter.updateRequestList(updatedRequestList);
}
// @Override
// protected void onPause() {
// super.onPause();
// unregisterReceiver(newChangeAdapterConversation);
// unregisterReceiver(newChangeAdapterRequest);
// }
@Override
public void onConverstionClick(Conversation conversation) {
// Chuyển sang Activity khác hoặc thực hiện hành động cần thiết
Intent intent = new Intent(MainActivity.this, ChatActivity.class);
Toast.makeText(MainActivity.this, "Đã chọn IP: " + conversation.getIPreceive(), Toast.LENGTH_SHORT).show();
intent.putExtra("conversation_IP", conversation.getIPreceive());
startActivity(intent);
}
@Override
public void onRequestClick(ReceiveRequest request){
Intent intent = new Intent(MainActivity.this, ChatActivity.class);
Toast.makeText(MainActivity.this, "Đã chọn IP: " + request.getIPRequest(), Toast.LENGTH_SHORT).show();
intent.putExtra("conversation_IP", request.getIPRequest());
startActivity(intent);
}
private String getDeviceIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().matches("\\d+\\.\\d+\\.\\d+\\.\\d+")) {
return inetAddress.getHostAddress();
}
}
}
} catch (Exception ex) {
Log.e(TAG, "Không thể lấy địa chỉ IP của thiết bị", ex);
}
return null;
}
}Editor is loading...
Leave a Comment