乐橙平台大华监控Android端实时预览播放

本文介绍了如何在Android端实现乐橙大华监控的实时预览功能,包括初始化SDK,从服务器获取监控列表,使用预览工具类及展示预览页面的详细步骤,并展示了最终效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、初始化

首先我们需要到乐橙开放平台下载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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值