Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

PTZ abilities added? #8

Closed
Skinah opened this issue Dec 29, 2019 · 2 comments
Closed

PTZ abilities added? #8

Skinah opened this issue Dec 29, 2019 · 2 comments

Comments

@Skinah
Copy link

Skinah commented Dec 29, 2019

Hi,

I have PTZ working by extending this lib using external classes so thanks for creating this lib and also making it opensource with a license. Do you plan to update this at all and would you accept any PR that I make to extend its feature set? Any guidance on how I should go about it?

I also need the ability to know the manufacturer and model of auto discovered devices without knowing the user/pass which is possible to do, just not with the lib in its current state.

Wondering what the future plans of this library are as I wish to use the library to give Openhab (a fully opensource home automation platform) better camera support.

Once again thanks and hope to get a reply back as it is sad that Java does not have a fully featured ONVIF library that is actively being added to.

@kingron
Copy link

kingron commented Oct 6, 2020

You should use customize request to do it, like below:

private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        if (device != null) {
            int action = motionEvent.getAction();
            String xml = "";
            float x = 0, y = 0, z = 0;
            float speed = 1.0f * sbSpeed.getProgress() / sbSpeed.getMax();
            int id = view.getId();
            if (action == MotionEvent.ACTION_DOWN) {
                if (id == R.id.btnUp)
                    y = speed;
                else if (id == R.id.btnDown)
                    y = -speed;
                else if (id == R.id.btnLeft)
                    x = -speed;
                else if (id == R.id.btnRight)
                    x = speed;
                else if (id == R.id.btnZoomin)
                    z = speed;
                else if (id == R.id.btnZoomout)
                    z = -speed;
                xml = String.format("<ContinuousMove xmlns=\"http://www.onvif.org/ver20/ptz/wsdl\">\n" +
                        "<ProfileToken>Profile_1</ProfileToken>\n" +
                        "<Velocity>\n" +
                        "    <PanTilt x=\"%3.2f\" y=\"%3.2f\"/>\n" +
                        "    <Zoom x=\"%3.2f\" />\n" +
                        "</Velocity>\n" +
                        "<Timeout>PT60S</Timeout>\n" +
                        "<Speed>\n" +
                        "  <Zoom x=\"%3.2f\"/>\n" +
                        "  <PanTilt x=\"%3.2f\" y=\"%3.2f\" />\n" +
                        "</Speed>" +
                        "</ContinuousMove>", x, y, z, speed, speed, speed);
            } else if (action == MotionEvent.ACTION_UP) {
                xml = "<Stop xmlns=\"http://www.onvif.org/ver20/ptz/wsdl\">\n" +
                        "  <ProfileToken>Profile_1</ProfileToken>\n" +
                        "  <PanTilt>false</PanTilt>\n" +
                        "  <Zoom>false</Zoom>\n" +
                        "</Stop>";
            }

            String finalXml = xml;
            onvifManager.sendOnvifRequest(device, new OnvifRequest() {
                @Override
                public String getXml() {
                    Log.d("RtspClient", finalXml);
                    return finalXml;
                }

                @Override
                public OnvifType getType() {
                    return OnvifType.CUSTOM;
                }
            });
        }
        return false;
    }
};

@1025431504
Copy link

@kingron 请问有用这个实现过云台控制吗

@Skinah Skinah closed this as completed Sep 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants