PlanAlarmDetailActivity.java 源代码
package activity.setting.PlanAlarm;
import activity.setting.PlanAlarm.adapter.PlanAlarmDetailAdapter;
import activity.setting.PlanVideo.adapter.PlanDetailAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import base.HiActivity;
import bean.MyCamera;
import bean.TimeArrayBean;
import com.hichip.callback.ICameraIOSessionCallback;
import com.hichip.campro.R;
import com.hichip.content.HiChipDefines;
import com.hichip.control.HiCamera;
import com.xiaomi.mipush.sdk.Constants;
import common.HiDataValue;
import common.TitleView;
import custom.TimeDomainView;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import utils.TimeUtil;
public class PlanAlarmDetailActivity extends HiActivity implements View.OnClickListener, ICameraIOSessionCallback {
ListView lv_period;
private PlanAlarmDetailAdapter mAdapter;
TimeArrayBean mBean;
private MyCamera mMyCamera;
TitleView mTitle;
private HiChipDefines.HI_P2P_QUANTUM_TIME quantum_time;
TextView tv_add_time;
TimeDomainView view_td;
private ArrayList<String> mAdapterData = new ArrayList<>();
private SimpleDateFormat sdf = new SimpleDateFormat(TimeUtil.FORMAT_TIME);
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
if (message.what == -1879048189 && message.arg2 == 0) {
PlanAlarmDetailActivity.this.handIOCTRLSuccess(message);
}
}
};
@Override
public void receiveSessionState(HiCamera hiCamera, int i) {
}
@Override
protected int setLayoutId() {
return R.layout.activity_plan_alarm_detail;
}
@Override
protected void init(Bundle bundle) {
getIntentData();
initViewAndData();
setOnListeners();
}
@Override
public void onResume() {
super.onResume();
MyCamera myCamera = this.mMyCamera;
if (myCamera != null) {
myCamera.registerIOSessionListener(this);
}
}
@Override
public void onPause() {
super.onPause();
MyCamera myCamera = this.mMyCamera;
if (myCamera != null) {
myCamera.unregisterIOSessionListener(this);
}
}
private void setOnListeners() {
this.tv_add_time.setOnClickListener(this);
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("bean", this.mBean);
setResult(-1, intent);
finish();
}
private void initViewAndData() {
String string;
switch (this.mBean.title) {
case 0:
string = getString(R.string.sunday);
break;
case 1:
string = getString(R.string.monday);
break;
case 2:
string = getString(R.string.tuesday);
break;
case 3:
string = getString(R.string.wednesday);
break;
case 4:
string = getString(R.string.thursday);
break;
case 5:
string = getString(R.string.friday);
break;
case 6:
string = getString(R.string.saturday);
break;
default:
string = " ";
break;
}
this.mTitle.setTitle(string);
this.mTitle.setButton(0);
this.mTitle.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
@Override
public void OnNavigationButtonClick(int i) {
if (i != 0) {
return;
}
Intent intent = new Intent();
intent.putExtra("bean", PlanAlarmDetailActivity.this.mBean);
PlanAlarmDetailActivity.this.setResult(-1, intent);
PlanAlarmDetailActivity.this.finish();
}
});
this.lv_period.addHeaderView(new ViewStub(this));
if (this.mBean.mIsAllDay) {
this.mBean.arrs.clear();
this.mBean.arrs.add("00:00-23:59");
}
ArrayList<String> arrayList = this.mAdapterData;
if (arrayList != null) {
arrayList.clear();
this.mAdapterData.addAll(this.mBean.arrs);
}
PlanAlarmDetailAdapter planAlarmDetailAdapter = new PlanAlarmDetailAdapter(this, this.mAdapterData);
this.mAdapter = planAlarmDetailAdapter;
this.lv_period.setAdapter((ListAdapter) planAlarmDetailAdapter);
this.view_td.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
PlanAlarmDetailActivity.this.view_td.post(new Runnable() {
@Override
public void run() {
PlanAlarmDetailActivity.this.view_td.drawTimeDomain(PlanAlarmDetailActivity.this.mBean);
}
});
}
});
this.mAdapter.setOnDeleteListeners(new PlanDetailAdapter.OnDeleteListeners() {
@Override
public void onDelete(int i) {
if (i <= PlanAlarmDetailActivity.this.mBean.getArrs().size()) {
if (PlanAlarmDetailActivity.this.mBean.getArrs().size() > 0) {
PlanAlarmDetailActivity.this.mBean.getArrs().remove(i);
PlanAlarmDetailActivity.this.mAdapterData.clear();
PlanAlarmDetailActivity.this.mAdapterData.addAll(PlanAlarmDetailActivity.this.mBean.getArrs());
PlanAlarmDetailActivity.this.mAdapter.notifyDataSetChanged();
}
if (PlanAlarmDetailActivity.this.mBean.mIsAllDay) {
PlanAlarmDetailActivity.this.mBean.mIsAllDay = false;
}
PlanAlarmDetailActivity.this.view_td.drawTimeDomain(PlanAlarmDetailActivity.this.mBean);
PlanAlarmDetailActivity planAlarmDetailActivity = PlanAlarmDetailActivity.this;
planAlarmDetailActivity.handApplication(planAlarmDetailActivity.mBean);
}
}
});
}
public void handApplication(TimeArrayBean timeArrayBean) {
if (this.quantum_time == null) {
return;
}
int title = timeArrayBean.getTitle();
for (int i = 0; i < 48; i++) {
this.quantum_time.sDayData[title][i] = 78;
if (timeArrayBean.mIsAllDay) {
this.quantum_time.sDayData[title][i] = 80;
} else if (timeArrayBean.getArrs() != null && timeArrayBean.getArrs().size() < 1 && !timeArrayBean.mIsAllDay) {
this.quantum_time.sDayData[title][i] = 78;
} else {
Iterator<String> it = timeArrayBean.arrs.iterator();
while (it.hasNext()) {
String[] split = it.next().split(Constants.ACCEPT_TIME_SEPARATOR_SERVER);
String str = split[0];
String str2 = split[1];
try {
int dateToMinute = dateToMinute(this.sdf.parse(str)) / 30;
int dateToMinute2 = (dateToMinute(this.sdf.parse(str2)) / 30) - 1;
if (str2.equals("23:59")) {
dateToMinute2 = 47;
}
if (i >= dateToMinute && i <= dateToMinute2) {
this.quantum_time.sDayData[title][i] = 80;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_SET_ALARM_SCHEDULE, this.quantum_time.parseContent());
}
private int dateToMinute(Date date) {
return (date.getHours() * 60) + date.getMinutes();
}
private void getIntentData() {
this.mBean = (TimeArrayBean) getIntent().getParcelableExtra("bean");
String stringExtra = getIntent().getStringExtra(HiDataValue.EXTRAS_KEY_UID);
if (!TextUtils.isEmpty(stringExtra)) {
Iterator<MyCamera> it = HiDataValue.CameraList.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
MyCamera next = it.next();
if (stringExtra.equals(next.getUid())) {
this.mMyCamera = next;
break;
}
}
}
this.mMyCamera.sendIOCtrl(HiChipDefines.HI_P2P_GET_ALARM_SCHEDULE, new byte[0]);
}
@Override
public void onClick(View view) {
if (view.getId() != R.id.tv_add_time) {
return;
}
Intent intent = new Intent(this, (Class<?>) AddAlarmTimeDomainActivity.class);
intent.putExtra(HiDataValue.EXTRAS_KEY_UID, this.mMyCamera.getUid());
ArrayList<? extends Parcelable> arrayList = new ArrayList<>();
arrayList.add(this.mBean);
intent.putParcelableArrayListExtra("beans", arrayList);
startActivityForResult(intent, 119, 1);
}
@Override
public void onActivityResult(int i, int i2, Intent intent) {
ArrayList parcelableArrayListExtra;
super.onActivityResult(i, i2, intent);
if (i2 != -1 || i != 119 || (parcelableArrayListExtra = intent.getParcelableArrayListExtra("beans")) == null || parcelableArrayListExtra.size() <= 0) {
return;
}
this.mBean = (TimeArrayBean) parcelableArrayListExtra.get(0);
this.mAdapterData.clear();
this.mAdapterData.addAll(((TimeArrayBean) parcelableArrayListExtra.get(0)).arrs);
this.mAdapter.notifyDataSetChanged();
}
@Override
public void receiveIOCtrlData(HiCamera hiCamera, int i, byte[] bArr, int i2) {
if (hiCamera != this.mMyCamera) {
return;
}
Bundle bundle = new Bundle();
bundle.putByteArray("data", bArr);
Message obtain = Message.obtain();
obtain.what = HiDataValue.HANDLE_MESSAGE_RECEIVE_IOCTRL;
obtain.obj = hiCamera;
obtain.arg1 = i;
obtain.arg2 = i2;
obtain.setData(bundle);
this.mHandler.sendMessage(obtain);
}
public void handIOCTRLSuccess(Message message) {
byte[] byteArray = message.getData().getByteArray("data");
if (message.arg1 != 20745) {
return;
}
this.quantum_time = new HiChipDefines.HI_P2P_QUANTUM_TIME(byteArray);
}
}