Android kotlin学习笔记(三)

今天继续学习。之前已经学了怎么把萤石云播放视频整合到kotlin代码里,接下来我们将对云台控制功能进行集成。

首先,在还没有操作萤石云SDK前,我们先将touch监听给弄好。



    

首先先在xml里添加上下左右四个按钮

然后在activity.kt里,用上touch接口

class MainActivity : AppCompatActivity() , SurfaceHolder.Callback,View.OnTouchListener

这是就会需要实onTouch方法。

override fun onTouch(v: View?, event: MotionEvent?): Boolean {
        when(event?.action){
            MotionEvent.ACTION_DOWN ->{
                when(v?.id){
                    R.id.button_up -> {
                        Log.d("ssssss","up+")
                    }
                    R.id.button_left -> {
                        Log.d("ssssss","left+")
                    }
                    R.id.button_right -> {
                        Log.d("ssssss","right+")
                    }
                    R.id.button_down -> {
                        Log.d("ssssss","down+")
                    }
                }
            }
            MotionEvent.ACTION_UP ->{
                when(v?.id){
                    R.id.button_up -> {
                        Log.d("ssssss","up-")
                    }
                    R.id.button_left -> {
                        Log.d("ssssss","left-")
                    }
                    R.id.button_right -> {
                        Log.d("ssssss","right-")
                    }
                    R.id.button_down -> {
                        Log.d("ssssss","down-")
                    }
                }
            }
        }
        return true
    }

接着,声明四个按钮并赋值,同时添加设置touch监听

    private lateinit var move_up:Button;
    private lateinit var move_left:Button
    private lateinit var move_right:Button
    private lateinit var move_down:Button



    
        move_up = findViewById(R.id.button_up) as Button
        move_left = findViewById(R.id.button_left) as Button
        move_right = findViewById(R.id.button_right) as Button
        move_down = findViewById(R.id.button_down) as Button

        move_up.setOnTouchListener( this)
        move_left.setOnTouchListener( this)
        move_right.setOnTouchListener( this)
        move_down.setOnTouchListener( this)

这时候,我们按下三四个按钮或者松开,都会有对应的响应了。

然后我们新建一个方法:

    private fun ptzOption(command: EZConstants.EZPTZCommand, action: EZConstants.EZPTZAction) {
        Thread(Runnable {
            var ptz_result = false
            try {
                ptz_result = EZOpenSDK.getInstance().controlPTZ(
                    cameraInfo00?.getDeviceSerial(), cameraInfo00?.getCameraNo()!!, command,
                    action, EZConstants.PTZ_SPEED_DEFAULT
                )
            } catch (e: BaseException) {
                e.printStackTrace()
            }
            LogUtil.i(
                MainActivity.TAG,
                "controlPTZ ptzCtrl result: $ptz_result"
            )
        }).start()
    }

我们可以看到,跟java不同的是,线程里的override不用再写了。

这里有个问题,因为cameraInfo00是有可能为空的,所以要在后面加上!!,这个的意思是如果非空就进行,为空就抛出异常。

然后将这个方法写入之前的touch监听里,就完成了。

 

 

 

 

 

 

你可能感兴趣的:(Android kotlin学习笔记(三))