MainActivity

hacker98 avatar
hacker98
plain_text
10/08/2024 12:46 PM
10.6 KB
9
Indexable
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