Android 集成海康摄像头萤石平台坑

萤石文档

UIKIT 集成

根据文档粘贴 、复制,页面听到声音,却一直再转圈。解决:

 //设置加载需要显示的view
        mEZUIPlayer.setLoadingView(initProgressBar());
   private View initProgressBar() {
        RelativeLayout relativeLayout = new RelativeLayout(this);
        relativeLayout.setBackgroundColor(Color.parseColor("#000000"));
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        relativeLayout.setLayoutParams(lp);
        RelativeLayout.LayoutParams rlp=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
        rlp.addRule(RelativeLayout.CENTER_IN_PARENT);//addRule参数对应RelativeLayout XML布局的属性
        ProgressBar mProgressBar = new ProgressBar(this);
//     mProgressBar.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress));
        relativeLayout.addView(mProgressBar,rlp);
        return relativeLayout;
    }

Android SDK 集成

  1. 在layou xml创建
     <SurfaceView
                android:id="@+id/realplay_sv"
                android:layout_width="match_parent"
                android:layout_height="200"
                android:background="@android:color/transparent" />
  1. 设置 setSurfaceHold 、 Holder
        mRealPlaySv = (SurfaceView) findViewById(R.id.realplay_sv);
        mRealPlaySh = mRealPlaySv.getHolder();
        mHandler = new Handler(this);
        player.setSurfaceHold(mRealPlaySh);
        mRealPlaySh.addCallback(this);

实现 SurfaceHolder.Callback:

    @Override
    public void surfaceCreated(@NonNull SurfaceHolder holder) {

        if (player != null) {
            player.setSurfaceHold(holder);
            Log.d("surface","创建");
        }
        mRealPlaySh = holder;
        player.startRealPlay();
    }

    @Override
    public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
        if (player != null) {
            player.setSurfaceHold(holder);
        }
        mRealPlaySh = holder;
    }

    @Override
    public void surfaceDestroyed(@NonNull SurfaceHolder holder) {

    }

实现 Handler.Callback:

    @Override
    public boolean handleMessage(Message msg) {
        switch (msg.what) {
            case EZConstants.EZRealPlayConstants.MSG_REALPLAY_PLAY_SUCCESS:

                //播放成功
                break;
            case EZConstants.EZRealPlayConstants.MSG_REALPLAY_PLAY_FAIL:
                //播放失败,得到失败信息
                ErrorInfo errorinfo = (ErrorInfo) msg.obj;
                //得到播放失败错误码
                int code = errorinfo.errorCode;
                //得到播放失败模块错误码
                String codeStr = errorinfo.moduleCode;
                //得到播放失败描述
                String description = errorinfo.description;
                //得到播放失败解决方方案
                String sulution = errorinfo.sulution;
                break;
            case EZConstants.MSG_VIDEO_SIZE_CHANGED:
                //解析出视频画面分辨率回调
                try {
                    String temp = (String) msg.obj;
                    String[] strings = temp.split(":");
                    int mVideoWidth = Integer.parseInt(strings[0]);
                    int mVideoHeight = Integer.parseInt(strings[1]);
                    //解析出视频分辨率
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            default:
                break;
        }
        return false;
    }

Android webview 通过js 调用 java

  //WebView启用Javascript脚本执行
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.addJavascriptInterface(MainActivity.this,"android");

    @JavascriptInterface
    public void test(String gson) {
        // 将json字符串转对象
        AccountToken  accountToken =  new Gson().fromJson(gson,AccountToken.class);
        Log.d("js传参",accountToken.getAppKey());
        //启动播放页面
        Intent intent = new Intent(this, Activity.class);
        this.startActivity(intent);

    }
  1. js
   function handleTest(){
			let param = {
				appKey :"5",
				accessToken : "at0-ghm4mmmau"
			}
			// 与java   webView.addJavascriptInterface(MainActivity.this,"android"); 第二个参数一致
            android.test(JSON.stringify(param) )
        }

Android webview 通过java 调用 js

  1. js
   function handleTest(){
			let param = {
				appKey :"5",
				accessToken : "at0-ghm4mmmau"
			}
			// 与java   webView.addJavascriptInterface(MainActivity.this,"android"); 第二个参数一致
            android.test(JSON.stringify(param) )
        }
        

如果使用vue等打包,要把函数提升到 window 下;

window['handleTest'] = this.handleTest
  1. java 调用
 mWebView.loadUrl("javascript:handleTest('dm')");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: c是英文字母表中的第三个字母。它是一个辅音字母,发音为/k/。c在英语中有许多常见的用法和意义。 首先,c可以用作词语的开头。例如,cat(猫)、car(汽车)、cake(蛋糕)等等。这些单词都是由字母c开头的,相应地带有/c/的发音。 此外,c也可以用作单词中的中间或结尾字母。例如,beach(海滩)、school(学校)、music(音乐)等词就都有c这个字母。 在数学中,c可以代表很多不同的意义。比如,c可以代表圆的周长或直径。当c用来表示圆周长时,它的值等于2πr,其中r是圆的半径。此外,c也可以代表光速,即光在真空中的传播速度,其数值约为299792458米/秒。 在计算机科学中,c是一种编程语言的名称。C编程语言是一种通用的、高级的程序设计语言,可以用于开发各种不同类型的软件,包括操作系统和应用软件。C语言被广泛使用,并且被认为是一种强大和灵活的语言。 综上所述,c是一个英文字母,在不同的领域中有不同的用法和意义。它可以作为词语的开头、中间或结尾字母,在数学和计算机科学中也有特定的含义。 ### 回答2: c是英文字母表中的第三个字母,也是一个非常常见的字母。在英语中,c有时候表示不同的音标,例如在单词"cat"中,c发音为/k/;而在单词"face"中,c则发音为/s/。c还常常出现在很多常用词中,比如"can"(能够)、"come"(来)和"call"(打电话)等等。 除了在英语中,c在其他许多语言中也有广泛的应用。在法语中,c有时发音为/s/,有时发音为/k/,例如单词"ce"(这)和"commencer"(开始);而在西班牙语中,c可以发音为/th/,例如单词"cenar"(晚餐)。 在科学领域,c也有特殊的意义。在物理学中,c代表着光速的数值,即299792458米/秒。这个数值在相对论中起到了关键的作用,它表示光在真空中传播的速度,也是目前宇宙中最快的速度。 总的来说,c虽然只是一个简单的字母,但在语言和科学中都扮演着重要的角色。无论是作为一个音标还是一个符号,c都有其特定的含义和用途。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天也想MK代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值