一、初始化
首先我们需要到乐橙开放平台下载android对应的开发包,将sdk中提供的jar和so文件添加到项目中;
二、获取监控列表
监控列表我们是通过从自家后台服务器中获取的,这个自己根据需要调整;
package com.aldx.hccraftsman.activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.aldx.hccraftsman.NewHcgjApplication;
import com.aldx.hccraftsman.R;
import com.aldx.hccraftsman.adapter.DahuaCameraListAdapter;
import com.aldx.hccraftsman.loadinglayout.LoadingLayout;
import com.aldx.hccraftsman.model.DahuaCamera;
import com.aldx.hccraftsman.model.DahuaCameraListModel;
import com.aldx.hccraftsman.model.DahuaDevice;
import com.aldx.hccraftsman.model.DahuaDeviceListModel;
import com.aldx.hccraftsman.okhttp.LoadingDialogCallback;
import com.aldx.hccraftsman.utils.Api;
import com.aldx.hccraftsman.utils.Constants;
import com.aldx.hccraftsman.utils.FastJsonUtils;
import com.aldx.hccraftsman.utils.OtherUtils;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.model.Response;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* author: chenzheng
* created on: 2019/8/8 15:31
* description: 大华监控列表
*/
public class DahuaCameraListActivity extends BaseActivity {
@BindView(R.id.back_iv)
ImageView backIv;
@BindView(R.id.layout_back)
LinearLayout layoutBack;
@BindView(R.id.title_tv)
TextView titleTv;
@BindView(R.id.right_tv)
TextView rightTv;
@BindView(R.id.layout_right)
LinearLayout layoutRight;
@BindView(R.id.dhcamera_recyclerview)
XRecyclerView dhcameraRecyclerview;
@BindView(R.id.loading_layout)
LoadingLayout loadingLayout;
private DahuaCameraListAdapter dahuaCameraListAdapter;
public List<DahuaCamera> list = new ArrayList<>();
private String projectId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dahua_camera_list);
ButterKnife.bind(this);
initView();
requestDeviceList();
}
private void initView() {
titleTv.setText("监控列表");
dahuaCameraListAdapter = new DahuaCameraListAdapter(this);
dhcameraRecyclerview.setAdapter(dahuaCameraListAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
Drawable dividerDrawable = ContextCompat.getDrawable(this, R.drawable.divider_sample);
dhcameraRecyclerview.addItemDecoration(dhcameraRecyclerview.new DividerItemDecoration(dividerDrawable));
dhcameraRecyclerview.setLayoutManager(layoutManager);
OtherUtils.setXRecyclerViewAttr(dhcameraRecyclerview);
dhcameraRecyclerview.setLoadingMoreEnabled(false);
dhcameraRecyclerview.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
requestDeviceList();
}
@Override
public void onLoadMore() {
}
});
dahuaCameraListAdapter.setOnItemClickListener(new DahuaCameraListAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, DahuaCamera data) {
if (data != null) {
Intent intent = new Intent(DahuaCameraListActivity.this, DahuaCameraFullPlayActivity.class);
intent.putExtra("DAHUA_CAMERA_INFO", data);
startActivity(intent);
}
}
});
loadingLayout.setEmptyClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dhcameraRecyclerview.refresh();
}
});
loadingLayout.showLoading();
}
private void requestDeviceList(){
OkGo.<String>get(Api.GET_DAHUA_DEVICE_LIST)
.tag(this)
.params("projectId", "05771166ea834823b077d2166f7afe65")
.params("pageNum", Constants.FIRSTPAGE)
.params("pageSize", Constants.PAGESIZE)
.execute(new LoadingDialogCallback(this, Constants.NET_REQUEST_TXT) {
@Override
public void onSuccess(Response<String> response) {
DahuaDeviceListModel dahuaDeviceListModel = null;
try {
dahuaDeviceListModel = FastJsonUtils.parseObject(response.body(), DahuaDeviceListModel.class);
} catch (Exception e) {
e.printStackTrace();
}
if (dahuaDeviceListModel != null) {
if (dahuaDeviceListModel.code == Api.SUCCESS_CODE) {
if (dahuaDeviceListModel.data != null && dahuaDeviceListModel.data.list != null
&& dahuaDeviceListModel.data.list.size() > 0) {
loadingLayout.showContent();
DahuaDevice dahuaDevice = dahuaDeviceListModel.data.list.get(0);
requestCameraList(dahuaDevice.deviceId);
} else {
tipDialog();
}
} else {
tipDialog();
}
}
}
@Override
public void onError(Response<String> response) {
super.onError(response);
NewHcgjApplication.showResultToast(DahuaCameraListActivity.this, response);
}
});
}
private void requestCameraList(String deviceId){
OkGo.<String>get(Api.GET_DAHUA_CAMERA_LIST)
.tag(this)
.params("deviceId", deviceId)
.execute(new LoadingDialogCallback(this, Constants.NET_REQUEST_TXT) {
@Override
public void onSuccess(Response<String> response) {
dhcameraRecyclerview.refreshComplete();
DahuaCameraListModel dahuaCameraListModel = null;
try {
dahuaCameraListModel = FastJsonUtils.parseObject(response.body(), DahuaCameraListModel.class);
} catch (Exception e) {
e.printStackTrace();
}
if (dahuaCameraListModel != null) {
if (dahuaCameraListModel.code == Api.SUCCESS_CODE) {
if (dahuaCameraListModel.data != null && dahuaCameraListModel.data.size() > 0) {
list.addAll(dahuaCameraListModel.data);
dahuaCameraListAdapter.setItems(list);
} else {
tipDialog();
}
} else {
tipDialog();
}
}
}
@Override
public void onError(Response<String> response) {
super.onError(response);
dhcameraRecyclerview.refreshComplete();
NewHcgjApplication.showResultToast(DahuaCameraListActivity.this, response);
}
});
}
private void tipDialog() {
new MaterialDialog.Builder(DahuaCameraListActivity.this)
.title("温馨提示")
.content("您没有可以预览的监控,请联系管理员添加!")
.positiveText("我知道了")
.cancelable(false)
.show();
}
@OnClick({R.id.layout_back, R.id.layout_right})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.layout_back:
finish();
break;
case R.id.layout_right:
break;
}
}
public static void startActivity(Context context) {
Intent intent = new Intent(context, DahuaCameraListActivity.class);
context.startActivity(intent);
}
}
三、实时预览
添加预览工具类:
package com.aldx.hccraftsman.utils; import android.content.Context; import android.os.Handler; import android.os.Message; import android.view.ViewGroup; import com.aldx.hccraftsman.model.LeChangeRecordInfo; import com.lechange.opensdk.api.LCOpenSDK_Api; import com.lechange.opensdk.api.bean.QueryLocalRecordNum; import com.lechange.opensdk.api.bean.QueryLocalRecords; import com.lechange.opensdk.api.client.BaseRequest; import com.lechange.opensdk.api.client.BaseResponse; import com.lechange.opensdk.listener.LCOpenSDK_EventListener; import com.lechange.opensdk.media.LCOpenSDK_PlayWindow; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import cn.qqtheme.framework.util.LogUtils; /** * author: chenzheng * created on: 2019/8/9 9:26 * description: */ public class PlayerLeChange { private static final String TAG = "LeChange"; private Handler handler; public LCOpenSDK_PlayWindow lcOpenSDK_playWindow; //播放窗口 public PlayerLeChange(Context context, ViewGroup viewGroup, Handler handler) { LCOpenSDK_Api.setHost("openapi.lechange.cn:443"); //设置乐橙服务地址 lcOpenSDK_playWindow = new LCOpenSDK_PlayWindow(); lcOpenSDK_playWindow.initPlayWindow(context, viewGroup, 0); //初始化播放功能,父窗口绑定到LCOpenSDK_playWindow的实例上 this.handler = handler; } /** * 实时预览 * @param token * @param deviceId * @param channelNo * @param quality */ public void live(String token, String deviceId, String encryptKey