package com.videogo.ui.LanDevice; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.ezviz.hcnetsdk.EZLoginDeviceInfo; import com.ezviz.hcnetsdk.EZSADPDeviceInfo; import com.google.gson.Gson; import com.videogo.constant.IntentConsts; import com.videogo.exception.BaseException; import com.videogo.openapi.EZHCNetDeviceSDK; import com.videogo.util.LogUtil; import ezviz.ezopensdk.R; import java.util.ArrayList; public class LanDeviceActivity extends Activity { private static final String TAG = "LanDeviceActivity"; private ListView mListView; private ArrayList mArrayList = new ArrayList(); private LandeviceAdapter mLandeviceAdapter; protected static int REQUEST_ACTIVATE = 0x0001; private AlertDialog mLoginDialog; private int mCurrentPosition; private EZLoginDeviceInfo mEZloginDeviceInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hc); mListView = (ListView) findViewById(R.id.list_device); EZHCNetDeviceSDK.getInstance().startLocalSearch(new EZHCNetDeviceSDK.SadpDeviceFoundListener() { @Override public void onDeviceFound(final EZSADPDeviceInfo sadp_device_info) { LogUtil.d(TAG, "onDeviceFound " + sadp_device_info.getDeviceSerial() + " " + sadp_device_info.getDeviceSerial()); Gson gson = new Gson(); LogUtil.d(TAG, "onDeviceFound " + gson.toJson(sadp_device_info)); runOnUiThread(new Runnable() { @Override public void run() { for (int i = 0; i < mArrayList.size(); i++) { String serial = sadp_device_info.getDeviceSerial(); String oldserial = mArrayList.get(i).getDeviceSerial(); if (serial.equals(oldserial)) { return; } } mLandeviceAdapter.add(sadp_device_info); } }); } }); mLandeviceAdapter = new LandeviceAdapter(this, mArrayList); mListView.setAdapter(mLandeviceAdapter); mLandeviceAdapter.setOnItemClickListener(new LandeviceAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { mCurrentPosition = position; if (!mLandeviceAdapter.getItem(mCurrentPosition).isActived()) { Intent intent = new Intent(LanDeviceActivity.this, LanDeviceActivateActivity.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, mLandeviceAdapter.getItem(mCurrentPosition).getDeviceSerial()); startActivityForResult(intent, REQUEST_ACTIVATE); } else { showLoginDialog(mCurrentPosition); } } }); } @Override protected void onDestroy() { EZHCNetDeviceSDK.getInstance().stopLocalSearch(); super.onDestroy(); } private void showNotSupportViewDailog() { new AlertDialog.Builder(this).setMessage(R.string.device_not_support_view) .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_ACTIVATE && resultCode == RESULT_OK) { mLandeviceAdapter.getItem(mCurrentPosition).setActived(true); showLoginDialog(mCurrentPosition); } } private void toPlayActivity(final EZLoginDeviceInfo loginDeviceInfo) { if (loginDeviceInfo == null || loginDeviceInfo.getLoginId() < 0) { if (!mLandeviceAdapter.getItem(mCurrentPosition).isActived()) { Intent intent = new Intent(LanDeviceActivity.this, LanDeviceActivateActivity.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, mLandeviceAdapter.getItem(mCurrentPosition).getDeviceSerial()); startActivityForResult(intent, REQUEST_ACTIVATE); } else { showLoginDialog(mCurrentPosition); } return; } if (loginDeviceInfo.getByChanNum() + loginDeviceInfo.getByIPChanNum() > 1) { SelectLandeviceDialog selectLandeviceDialog = new SelectLandeviceDialog(); selectLandeviceDialog.setLoginDeviceInfo(loginDeviceInfo); selectLandeviceDialog.setCameraItemClick(new SelectLandeviceDialog.CameraItemClick() { @Override public void onCameraItemClick(int playChannelNo) { Intent intent = new Intent(LanDeviceActivity.this, LanDevicePlayActivity.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, mLandeviceAdapter.getItem(mCurrentPosition).getDeviceSerial()); intent.putExtra(IntentConsts.EXTRA_CHANNEL_NO, playChannelNo); intent.putExtra("iUserId", loginDeviceInfo.getLoginId()); startActivity(intent); } }); selectLandeviceDialog.show(getFragmentManager(), "onLanPlayClick"); //Single channel // no channel } else if (loginDeviceInfo.getByChanNum() + loginDeviceInfo.getByIPChanNum() == 1) { if (loginDeviceInfo.getByChanNum() > 0) { Intent intent = new Intent(LanDeviceActivity.this, LanDevicePlayActivity.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, mLandeviceAdapter.getItem(mCurrentPosition).getDeviceSerial()); intent.putExtra(IntentConsts.EXTRA_CHANNEL_NO, loginDeviceInfo.getByStartChan()); intent.putExtra("iUserId", loginDeviceInfo.getLoginId()); startActivity(intent); } else { Intent intent = new Intent(LanDeviceActivity.this, LanDevicePlayActivity.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, mLandeviceAdapter.getItem(mCurrentPosition).getDeviceSerial()); intent.putExtra(IntentConsts.EXTRA_CHANNEL_NO, loginDeviceInfo.getByStartDChan()); intent.putExtra("iUserId", loginDeviceInfo.getLoginId()); startActivity(intent); } } else { showNotSupportViewDailog(); } } public void showLoginDialog(final int position) { if (mLoginDialog != null && mLoginDialog.isShowing()) { return; } LayoutInflater inflater = LayoutInflater.from(this); View safeview = inflater.inflate(R.layout.lan_device_login_dialog, null); final EditText loginName = (EditText) safeview.findViewById(R.id.login_name); final EditText loginPwd = (EditText) safeview.findViewById(R.id.login_pwd); mLoginDialog = new AlertDialog.Builder(this).setTitle(R.string.lan_device_login_title) .setView(safeview) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton(R.string.certain, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final String name = loginName.getText().toString(); final String pwd = loginPwd.getText().toString(); if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(pwd)) { new Thread(new Runnable() { @Override public void run() { try { final EZLoginDeviceInfo ezLoginDeviceInfo = EZHCNetDeviceSDK.getInstance() .loginDeviceWithUerName(name, pwd, mLandeviceAdapter.getItem(mCurrentPosition).getLocalIp(), mLandeviceAdapter.getItem(mCurrentPosition).getLocalPort()); runOnUiThread(new Runnable() { @Override public void run() { onLoginSuccess(ezLoginDeviceInfo); } }); } catch (final BaseException e) { e.printStackTrace(); runOnUiThread(new Runnable() { @Override public void run() { onLoaginFailed(e.getErrorCode(), e.getMessage()); } }); } } }).start(); } else { Toast.makeText(LanDeviceActivity.this, "username or passwor is null", Toast.LENGTH_LONG).show(); showLoginDialog(mCurrentPosition); } } }) .setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { } }) .setCancelable(false) .create(); TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { if (!TextUtils.isEmpty(loginName.getText().toString().trim()) && !TextUtils.isEmpty( loginPwd.getText().toString().trim())) { mLoginDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); } else { mLoginDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); } } }; loginName.addTextChangedListener(textWatcher); loginPwd.addTextChangedListener(textWatcher); mLoginDialog.show(); } public void onLoginSuccess(EZLoginDeviceInfo ezLoginDeviceInfo) { toPlayActivity(ezLoginDeviceInfo); } public void onLoaginFailed(int errorCode, String errorMsg) { int ERROR_NET_DVR_PASSWORD_ERROR = 1; //username or password is incorrect. The user name or password entered when registering is incorrect. int ERROR_NET_DVR_PASSWORD_ERROR2 = 1100; //username or password is incorrect. The user name or password entered when registering is incorrect. if (errorCode == ERROR_NET_DVR_PASSWORD_ERROR || errorCode == ERROR_NET_DVR_PASSWORD_ERROR2) { new AlertDialog.Builder(this).setMessage(R.string.hc_net_account_pwd_error) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.retry, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { showLoginDialog(mCurrentPosition); } }) .show(); } else { new AlertDialog.Builder(this).setMessage(getString(R.string.hc_net_error) + errorCode) .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }) .show(); } } }