package com.dayu.pipirrapp.activity;
|
|
import android.net.ConnectivityManager;
|
import android.net.Network;
|
import android.os.Bundle;
|
import android.view.KeyEvent;
|
import android.view.LayoutInflater;
|
import android.widget.Toast;
|
|
import androidx.annotation.NonNull;
|
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.core.content.ContextCompat;
|
import androidx.fragment.app.Fragment;
|
|
import com.dayu.pipirrapp.MyApplication;
|
import com.dayu.pipirrapp.R;
|
import com.dayu.pipirrapp.adapter.TabAdapter;
|
import com.dayu.pipirrapp.bean.db.TagBean;
|
import com.dayu.pipirrapp.dao.DaoSingleton;
|
import com.dayu.pipirrapp.databinding.ActivityMainBinding;
|
import com.dayu.pipirrapp.fragment.OrderFragment;
|
import com.dayu.pipirrapp.fragment.MapFragment;
|
import com.dayu.pipirrapp.fragment.MyFragment;
|
import com.dayu.pipirrapp.net.MqttManager;
|
import com.dayu.pipirrapp.tool.InspectionUtils;
|
import com.dayu.pipirrapp.utils.MyLog;
|
import com.dayu.pipirrapp.utils.NetUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 首页
|
*/
|
public class MainActivity extends AppCompatActivity {
|
private ActivityMainBinding binding;
|
private List<Fragment> fragments = new ArrayList<>();
|
private long mExitTime;
|
MqttManager mqttManager;
|
|
private enum Tab {
|
ORDER, MAP, MY
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
|
setContentView(binding.getRoot());
|
registNetCallBack();
|
setupFragments();
|
initView();
|
initTab();
|
|
try {
|
TagBean tagBean = DaoSingleton.getInstance(this).tagDao().findFirst();
|
MyApplication.myApplication.myTag = tagBean.getTag();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
mqttManager = new MqttManager(this);
|
mqttManager.connect();
|
}
|
|
private void setupFragments() {
|
fragments.add(new OrderFragment());
|
fragments.add(new MapFragment());
|
fragments.add(new MyFragment());
|
}
|
|
private void initView() {
|
binding.orderLL.setOnClickListener(v -> changeBottomState(Tab.ORDER));
|
binding.mapLL.setOnClickListener(v -> changeBottomState(Tab.MAP));
|
binding.myLL.setOnClickListener(v -> changeBottomState(Tab.MY));
|
}
|
|
private void initTab() {
|
TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), fragments);
|
binding.viewPager.setAdapter(adapter);
|
binding.viewPager.setPagingEnabled(false);
|
binding.viewPager.setOffscreenPageLimit(fragments.size());
|
binding.viewPager.setCurrentItem(1); // 默认显示地图页
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
if ((System.currentTimeMillis() - mExitTime) > 2000) {
|
Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
|
mExitTime = System.currentTimeMillis();
|
} else {
|
finish();
|
}
|
return true;
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
//关闭MQ
|
try {
|
mqttManager.disconnect();
|
unregisterNetworkCallback();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 修改底部状态
|
*/
|
private void changeBottomState(Tab tab) {
|
resetTabState();
|
switch (tab) {
|
case ORDER:
|
updateTabUI(0, R.drawable.bottom_order_white, R.color.white);
|
break;
|
case MAP:
|
updateTabUI(1, R.drawable.bottom_map_white, R.color.white);
|
break;
|
case MY:
|
updateTabUI(2, R.drawable.bottom_my_white, R.color.white);
|
break;
|
}
|
}
|
|
/**
|
* 更新某个 Tab 的 UI 状态
|
*/
|
private void updateTabUI(int position, int iconResId, int textColorResId) {
|
binding.viewPager.setCurrentItem(position);
|
switch (position) {
|
case 0:
|
binding.orderImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
|
binding.orderText.setTextColor(ContextCompat.getColor(this, textColorResId));
|
break;
|
case 1:
|
binding.mapImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
|
binding.mapText.setTextColor(ContextCompat.getColor(this, textColorResId));
|
break;
|
case 2:
|
binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
|
binding.myText.setTextColor(ContextCompat.getColor(this, textColorResId));
|
break;
|
}
|
}
|
|
/**
|
* 重置所有 Tab 的默认状态
|
*/
|
private void resetTabState() {
|
binding.orderImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_order_black));
|
binding.orderText.setTextColor(ContextCompat.getColor(this, R.color.black));
|
|
binding.mapImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_map_black));
|
binding.mapText.setTextColor(ContextCompat.getColor(this, R.color.black));
|
|
binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_my_black));
|
binding.myText.setTextColor(ContextCompat.getColor(this, R.color.black));
|
}
|
|
// 注册网络监控
|
private void registNetCallBack() {
|
NetUtils.registerNetCallBack(this, networkCallback);
|
}
|
|
private void unregisterNetworkCallback() {
|
NetUtils.unregisterReceiver(this, networkCallback);
|
}
|
|
//网络监控
|
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
|
@Override
|
public void onAvailable(@NonNull Network network) {
|
super.onAvailable(network);
|
// 这里可以执行网络可用后的逻辑,比如进行数据请求等
|
MyLog.d("onAvailable");
|
InspectionUtils.aginPutInspectionData(MainActivity.this);
|
}
|
|
@Override
|
public void onLost(@NonNull Network network) {
|
super.onLost(network);
|
// 这里可以执行网络丢失后的逻辑,比如停止数据请求等
|
MyLog.d("onLost");
|
}
|
};
|
|
|
|
|
|
}
|