CameraWiFiListActivity.java 源代码
package activity.addCamera;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import base.HiActivity;
import bean.ConCamera;
import bean.MyCamera;
import com.hichip.base.HiLog;
import com.hichip.callback.ICameraIOSessionCallback;
import com.hichip.campro.R;
import com.hichip.content.HiChipDefines;
import com.hichip.control.HiCamera;
import com.hichip.tools.Packet;
import common.Constant;
import common.ConstantCommand;
import common.HiDataValue;
import common.TitleView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import utils.HiTools;
import utils.MyToast;
import utils.WifiAdmin;
public class CameraWiFiListActivity extends HiActivity implements ICameraIOSessionCallback, AdapterView.OnItemClickListener {
private BaseAdapter adapter;
private CountDownTimer countDownTimer;
ListView lv_wifi_list;
private ConCamera mEvent;
private MyCamera mMyCamera;
private ConnectionChangeReceiver mReceiver;
private String ssid;
TitleView titleview;
private String[] videoApenc;
private List<HiChipDefines.SWifiAp_Ext> wifi_list_ext = Collections.synchronizedList(new ArrayList());
private List<HiChipDefines.SWifiAp> wifi_list = Collections.synchronizedList(new ArrayList());
private boolean isSupportWiFiExt = false;
private boolean misADD_Q = false;
private Handler dialogHandler = new Handler() {
@Override
public void handleMessage(Message message) {
super.handleMessage(message);
}
};
private Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
int i = message.what;
if (i == -1879048191) {
CameraWiFiListActivity.this.handMsgSessionState(message);
return;
}
if (i != -1879048189) {
if (i != 119) {
return;
}
HiDataValue.mwifiConnect_QNorError = true;
CameraWiFiListActivity.this.handler.removeCallbacksAndMessages(null);
if (HiDataValue.wifiAdmin == null) {
HiDataValue.wifiAdmin = new WifiAdmin(CameraWiFiListActivity.this.getApplicationContext());
}
HiDataValue.wifiAdmin.removeNetwork_Q();
if (CameraWiFiListActivity.this.mMyCamera != null) {
CameraWiFiListActivity.this.mMyCamera.disconnect(1);
return;
}
return;
}
if (message.arg2 == 0) {
byte[] byteArray = message.getData().getByteArray("data");
int i2 = message.arg1;
if (i2 != 16645) {
if (i2 != 16764) {
if (i2 != 61445) {
return;
}
CameraWiFiListActivity.this.mMyCamera.appSetCommandFunction(new ConstantCommand.HI_P2P_FUNCTION_LITE(byteArray));
return;
}
HiChipDefines.HI_P2P_S_WIFI_LIST_EXT hi_p2p_s_wifi_list_ext = new HiChipDefines.HI_P2P_S_WIFI_LIST_EXT(byteArray);
int i3 = hi_p2p_s_wifi_list_ext.flag;
for (int i4 = hi_p2p_s_wifi_list_ext.u32Num; i4 > 0; i4 += -1) {
HiChipDefines.SWifiAp_Ext sWifiAp_Ext = new HiChipDefines.SWifiAp_Ext(byteArray, ((hi_p2p_s_wifi_list_ext.u32Num - i4) * 68) + 8);
HiLog.e("" + HiTools.getEncoding(sWifiAp_Ext.strSSID) + "" + ((int) sWifiAp_Ext.EncType));
CameraWiFiListActivity.this.wifi_list_ext.add(sWifiAp_Ext);
}
if (i3 == 1) {
if (CameraWiFiListActivity.this.wifi_list_ext.size() > 0) {
CameraWiFiListActivity.this.setListView();
} else {
CameraWiFiListActivity cameraWiFiListActivity = CameraWiFiListActivity.this;
MyToast.showToast(cameraWiFiListActivity, cameraWiFiListActivity.getString(R.string.no_wifi));
}
CameraWiFiListActivity.this.dismissLoadDialog();
return;
}
return;
}
if (byteArray == null || byteArray.length <= 0) {
return;
}
int byteArrayToInt_Little = Packet.byteArrayToInt_Little(byteArray, 0);
int totalSize = HiChipDefines.SWifiAp.getTotalSize();
CameraWiFiListActivity.this.wifi_list.clear();
if (byteArrayToInt_Little > 0 && byteArray.length >= 40) {
for (int i5 = 0; i5 < byteArrayToInt_Little; i5++) {
byte[] bArr = new byte[32];
int i6 = (i5 * totalSize) + 4;
System.arraycopy(byteArray, i6, bArr, 0, 32);
byte b = byteArray[i6 + 32];
byte b2 = byteArray[i6 + 33];
byte b3 = byteArray[i6 + 34];
byte b4 = byteArray[i6 + 35];
String encoding = HiTools.getEncoding(bArr);
if (encoding.trim().getBytes().length <= 32) {
HiLog.e("" + encoding + "" + ((int) b2));
CameraWiFiListActivity.this.wifi_list.add(new HiChipDefines.SWifiAp(encoding.trim().getBytes(), b, b2, b3, b4));
}
}
}
if (CameraWiFiListActivity.this.wifi_list.size() > 0) {
CameraWiFiListActivity.this.setListView();
} else {
CameraWiFiListActivity cameraWiFiListActivity2 = CameraWiFiListActivity.this;
MyToast.showToast(cameraWiFiListActivity2, cameraWiFiListActivity2.getString(R.string.no_wifi));
}
CameraWiFiListActivity.this.dismissLoadDialog();
return;
}
int i7 = message.arg1;
if (i7 == 16644 || i7 == 16764) {
CameraWiFiListActivity.this.dismissLoadDialog();
CameraWiFiListActivity cameraWiFiListActivity3 = CameraWiFiListActivity.this;
MyToast.showToast(cameraWiFiListActivity3, cameraWiFiListActivity3.getString(R.string.device_not_return));
}
}
};
@Override
protected int setLayoutId() {
return R.layout.activity_camera_wifi_list;
}
@Override
protected void init(Bundle bundle) {
EventBus.getDefault().register(this);
registerRece();
getIntentData();
initViewAndData();
this.videoApenc = getResources().getStringArray(R.array.video_apenc);
}
private void registerRece() {
IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
ConnectionChangeReceiver connectionChangeReceiver = new ConnectionChangeReceiver();
this.mReceiver = connectionChangeReceiver;
registerReceiver(connectionChangeReceiver, intentFilter);
}
private void getIntentData() {
String stringExtra = getIntent().getStringExtra("ssid");
this.ssid = stringExtra;
if (TextUtils.isEmpty(stringExtra)) {
this.ssid = "";
}
}
private void initViewAndData() {
this.titleview.setButton(0);
this.titleview.setTitle(getString(R.string.title_select_wifi));
this.titleview.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
@Override
public void OnNavigationButtonClick(int i) {
if (i != 0) {
return;
}
CameraWiFiListActivity.this.finish();
}
});
}
@Override
public void onResume() {
super.onResume();
if (this.misADD_Q) {
this.misADD_Q = false;
return;
}
showLoadDialog(getString(R.string.tips_loading) + "...", false, false);
this.dialogHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (CameraWiFiListActivity.this.mLoadDialoging == null || !CameraWiFiListActivity.this.mLoadDialoging.isShowing()) {
return;
}
CameraWiFiListActivity cameraWiFiListActivity = CameraWiFiListActivity.this;
MyToast.showToast(cameraWiFiListActivity, cameraWiFiListActivity.getString(R.string.device_not_return));
CameraWiFiListActivity.this.dismissLoadDialog();
}
}, 30000L);
this.mLoadDialoging.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
CameraWiFiListActivity.this.dialogHandler.removeCallbacksAndMessages(null);
}
});
ConCamera conCamera = this.mEvent;
if (conCamera != null) {
MyCamera myCamera = conCamera.getMyCamera();
this.mMyCamera = myCamera;
if (TextUtils.isEmpty(myCamera.getUsername())) {
this.mMyCamera.setUsername("admin");
}
if (TextUtils.isEmpty(this.mMyCamera.getPassword())) {
this.mMyCamera.setPassword("admin");
}
MyCamera myCamera2 = this.mMyCamera;
if (myCamera2 != null) {
myCamera2.registerIOSessionListener(this);
if (this.mMyCamera.getConnectState() != 4) {
this.mMyCamera.connect();
} else if (this.mMyCamera.appGetCommandFunction(HiChipDefines.HI_P2P_GET_WIFI_LIST_EXT256)) {
this.isSupportWiFiExt = true;
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_GET_WIFI_LIST_EXT256, new byte[0]);
} else {
this.isSupportWiFiExt = false;
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_GET_WIFI_LIST, new byte[0]);
}
}
}
if (HiTools.cameraWhetherNull(this.mMyCamera, this)) {
}
}
private void changePhoneWifiToAP() {
CountDownTimer countDownTimer = new CountDownTimer(20000L, 4000L) {
@Override
public void onFinish() {
}
@Override
public void onTick(long j) {
CameraWiFiListActivity.this.handConnect();
}
};
this.countDownTimer = countDownTimer;
countDownTimer.start();
}
public void handConnect() {
if (HiDataValue.wifiAdmin == null) {
HiDataValue.wifiAdmin = new WifiAdmin(getApplicationContext());
}
WifiConfiguration IsExsits = HiDataValue.wifiAdmin.IsExsits(this.ssid);
WifiConnect(HiDataValue.wifiAdmin);
if (IsExsits == null) {
HiDataValue.wifiAdmin.addNetwork(HiDataValue.wifiAdmin.CreateWifiInfo(this.ssid, "01234567", 3));
}
}
private void WifiConnect(WifiAdmin wifiAdmin) {
WifiManager wifiManager = wifiAdmin.mWifiManager;
String str = this.ssid;
WifiConfiguration IsExsits = wifiAdmin.IsExsits(str);
if (IsExsits == null) {
wifiManager.enableNetwork(wifiManager.addNetwork(wifiAdmin.CreateWifiInfo(str, "01234567", 3)), true);
} else {
wifiManager.enableNetwork(IsExsits.networkId, true);
}
}
public class ConnectionChangeReceiver extends BroadcastReceiver {
private ConnectionChangeReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo networkInfo = ((ConnectivityManager) CameraWiFiListActivity.this.getSystemService("connectivity")).getNetworkInfo(1);
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
WifiInfo connectionInfo = ((WifiManager) CameraWiFiListActivity.this.getApplicationContext().getSystemService("wifi")).getConnectionInfo();
Log.e("test", "CameraWiFiListActivity: onReceive " + connectionInfo.getSSID());
if (TextUtils.isEmpty(CameraWiFiListActivity.this.ssid) || !connectionInfo.getSSID().contains(CameraWiFiListActivity.this.ssid) || CameraWiFiListActivity.this.mMyCamera == null) {
return;
}
CameraWiFiListActivity.this.mMyCamera.connect();
}
}
}
@Override
public void receiveIOCtrlData(HiCamera hiCamera, int i, byte[] bArr, int i2) {
Log.i("tedu", "--receiveIOCtrlData...--");
if (hiCamera != this.mMyCamera) {
return;
}
Bundle bundle = new Bundle();
bundle.putByteArray("data", bArr);
Message obtainMessage = this.handler.obtainMessage();
obtainMessage.what = HiDataValue.HANDLE_MESSAGE_RECEIVE_IOCTRL;
obtainMessage.obj = hiCamera;
obtainMessage.arg1 = i;
obtainMessage.arg2 = i2;
obtainMessage.setData(bundle);
this.handler.sendMessage(obtainMessage);
}
@Override
public void receiveSessionState(HiCamera hiCamera, int i) {
Log.i("tedu", "-receiveSessionState...--");
if (this.mMyCamera != hiCamera) {
return;
}
Log.i("tedu", "-receiveSessionState11111...----arg1:" + i);
Message obtainMessage = this.handler.obtainMessage();
obtainMessage.what = HiDataValue.HANDLE_MESSAGE_SESSION_STATE;
obtainMessage.arg1 = i;
obtainMessage.obj = hiCamera;
this.handler.sendMessage(obtainMessage);
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onDataSynEvent(ConCamera conCamera) {
this.mEvent = conCamera;
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
if (this.mEvent != null) {
EventBus.getDefault().removeStickyEvent(this.mEvent);
}
Handler handler = this.handler;
if (handler != null) {
handler.removeCallbacksAndMessages(null);
}
Handler handler2 = this.dialogHandler;
if (handler2 != null) {
handler2.removeCallbacksAndMessages(null);
}
ConnectionChangeReceiver connectionChangeReceiver = this.mReceiver;
if (connectionChangeReceiver != null) {
unregisterReceiver(connectionChangeReceiver);
}
CountDownTimer countDownTimer = this.countDownTimer;
if (countDownTimer != null) {
countDownTimer.cancel();
this.countDownTimer = null;
}
dismissLoadDialog();
}
@Override
public void onPause() {
super.onPause();
if (this.misADD_Q) {
return;
}
MyCamera myCamera = this.mMyCamera;
if (myCamera != null) {
myCamera.unregisterIOSessionListener(this);
}
finish();
}
public void handMsgSessionState(Message message) {
if (message.arg1 != 4) {
return;
}
Log.i("tedu", "--登录成功!--");
this.mMyCamera.getConnectState();
if (this.mMyCamera.appGetCommandFunction(HiChipDefines.HI_P2P_GET_WIFI_LIST_EXT256)) {
this.isSupportWiFiExt = true;
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_GET_WIFI_LIST_EXT256, new byte[0]);
} else {
this.isSupportWiFiExt = false;
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_GET_WIFI_LIST, new byte[0]);
}
}
public void setListView() {
this.lv_wifi_list.setVisibility(0);
if (this.isSupportWiFiExt) {
this.adapter = new WiFiListExtAdapter(this);
} else {
this.adapter = new WiFiListAdapter(this);
}
this.lv_wifi_list.setAdapter((ListAdapter) this.adapter);
this.lv_wifi_list.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
byte b;
byte b2;
String encoding;
byte[] bArr;
if (this.isSupportWiFiExt) {
HiChipDefines.SWifiAp_Ext sWifiAp_Ext = this.wifi_list_ext.get(i);
b = sWifiAp_Ext.Mode;
b2 = sWifiAp_Ext.EncType;
encoding = HiTools.getEncoding(sWifiAp_Ext.strSSID);
bArr = sWifiAp_Ext.strSSID;
} else {
HiChipDefines.SWifiAp sWifiAp = this.wifi_list.get(i);
b = sWifiAp.Mode;
b2 = sWifiAp.EncType;
encoding = HiTools.getEncoding(sWifiAp.strSSID);
bArr = sWifiAp.strSSID;
}
Intent intent = new Intent();
intent.putExtra(Constant.MODE, (int) b);
intent.putExtra("type", (int) b2);
intent.putExtra("configssid", encoding);
intent.putExtra("configssid_byte", bArr);
setResult(-1, intent);
finish();
}
public class WiFiListExtAdapter extends BaseAdapter {
private LayoutInflater mInflater;
@Override
public long getItemId(int i) {
return i;
}
public WiFiListExtAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return CameraWiFiListActivity.this.wifi_list_ext.size();
}
@Override
public Object getItem(int i) {
return CameraWiFiListActivity.this.wifi_list_ext.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view == null) {
view = this.mInflater.inflate(R.layout.list_setting_wifi, (ViewGroup) null);
viewHolder = new ViewHolder();
viewHolder.txt_ssid = (TextView) view.findViewById(R.id.wifi_setting_item_ssid);
viewHolder.txt_safety = (TextView) view.findViewById(R.id.wifi_setting_item_safety);
viewHolder.txt_intensity = (TextView) view.findViewById(R.id.wifi_setting_item_signal_intensity);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
if (viewHolder != null && CameraWiFiListActivity.this.wifi_list_ext != null && CameraWiFiListActivity.this.wifi_list_ext.size() > 0 && i <= CameraWiFiListActivity.this.wifi_list_ext.size() - 1) {
HiChipDefines.SWifiAp_Ext sWifiAp_Ext = (HiChipDefines.SWifiAp_Ext) CameraWiFiListActivity.this.wifi_list_ext.get(i);
viewHolder.txt_ssid.setText(HiTools.getEncoding(sWifiAp_Ext.strSSID));
try {
viewHolder.txt_safety.setText(CameraWiFiListActivity.this.videoApenc[sWifiAp_Ext.EncType]);
} catch (Exception unused) {
viewHolder.txt_safety.setText(CameraWiFiListActivity.this.videoApenc[0]);
}
viewHolder.txt_intensity.setText(((int) sWifiAp_Ext.Signal) + "%");
}
return view;
}
public final class ViewHolder {
public TextView txt_intensity;
public TextView txt_safety;
public TextView txt_ssid;
public ViewHolder() {
}
}
}
public class WiFiListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
@Override
public long getItemId(int i) {
return i;
}
public WiFiListAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return CameraWiFiListActivity.this.wifi_list.size();
}
@Override
public Object getItem(int i) {
return CameraWiFiListActivity.this.wifi_list.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view == null) {
view = this.mInflater.inflate(R.layout.list_setting_wifi, (ViewGroup) null);
viewHolder = new ViewHolder();
viewHolder.txt_ssid = (TextView) view.findViewById(R.id.wifi_setting_item_ssid);
viewHolder.txt_safety = (TextView) view.findViewById(R.id.wifi_setting_item_safety);
viewHolder.txt_intensity = (TextView) view.findViewById(R.id.wifi_setting_item_signal_intensity);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
if (viewHolder != null && CameraWiFiListActivity.this.wifi_list != null && CameraWiFiListActivity.this.wifi_list.size() > 0) {
HiChipDefines.SWifiAp sWifiAp = (HiChipDefines.SWifiAp) CameraWiFiListActivity.this.wifi_list.get(i);
viewHolder.txt_ssid.setText(HiTools.getEncoding(sWifiAp.strSSID));
try {
viewHolder.txt_safety.setText(CameraWiFiListActivity.this.videoApenc[sWifiAp.EncType]);
} catch (Exception unused) {
viewHolder.txt_safety.setText(CameraWiFiListActivity.this.videoApenc[0]);
}
viewHolder.txt_intensity.setText(((int) sWifiAp.Signal) + "%");
}
return view;
}
public final class ViewHolder {
public TextView txt_intensity;
public TextView txt_safety;
public TextView txt_ssid;
public ViewHolder() {
}
}
}
}