Android Open Source - sony-camera-remote-java Rpc Client






From Project

Back to project page sony-camera-remote-java.

License

The source code is released under:

Apache License

If you think the Android project sony-camera-remote-java listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.praetoriandroid.cameraremote;
//www .  j a va2 s .c om
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.praetoriandroid.cameraremote.rpc.BaseRequest;
import com.praetoriandroid.cameraremote.rpc.BaseResponse;
import com.praetoriandroid.cameraremote.rpc.GetApplicationInfoRequest;
import com.praetoriandroid.cameraremote.rpc.GetApplicationInfoResponse;
import com.praetoriandroid.cameraremote.rpc.GetAvailableApiListRequest;
import com.praetoriandroid.cameraremote.rpc.GetAvailableApiListResponse;
import com.praetoriandroid.cameraremote.rpc.RpcMethod;
import com.praetoriandroid.cameraremote.rpc.SimpleResponse;
import com.praetoriandroid.cameraremote.rpc.StartRecModeRequest;
import com.praetoriandroid.cameraremote.rpc.StopRecModeRequest;

import java.io.IOException;

public class RpcClient {

    private Gson gson = new Gson();

    private HttpClient httpClient = new HttpClient();

    private String cameraServiceUrl;

    private Logger logger;

    public RpcClient(String cameraServiceUrl) {
        this.cameraServiceUrl = cameraServiceUrl;
    }

    public void setConnectionTimeout(int timeout) {
        httpClient.setConnectionTimeout(timeout);
    }

    public void setLogger(Logger logger) {
        this.logger = logger;
    }

    public void sayHello() throws RpcException {
        GetApplicationInfoResponse appInfo = send(new GetApplicationInfoRequest());
        if (!appInfo.isVersionOk()) {
            throw new RpcException("Illegal camera API version (must be at least 2.0.0): "
                    + appInfo.getVersion());
        }

        GetAvailableApiListResponse availableApiList = send(new GetAvailableApiListRequest());
        if (availableApiList.getApiList().contains(RpcMethod.startRecMode.name())) {
            SimpleResponse recModeResult = send(new StartRecModeRequest());
            if (!recModeResult.isOk()) {
                throw new RpcException("Could not start rec mode: " + recModeResult.getErrorCode());
            }
        }
    }

    public void sayGoodbye() throws RpcException {
        GetAvailableApiListResponse availableApiList = send(new GetAvailableApiListRequest());
        if (availableApiList.getApiList().contains(RpcMethod.stopRecMode.name())) {
            SimpleResponse recModeResult = send(new StopRecModeRequest());
            if (!recModeResult.isOk()) {
                throw new RpcException("Could not stop rec mode: " + recModeResult.getErrorCode());
            }
        }
    }

    public <Response extends BaseResponse<?>>
    Response send(BaseRequest<?, Response> request) throws RpcException {
        try {
            String requestText = gson.toJson(request);
            debug("Request: %s", requestText);
            String responseText = httpClient.fetchTextByPost(cameraServiceUrl, requestText);
            debug("Response: %s", responseText);
            Response response = request.parseResponse(gson, responseText);
            response.validate();
            return response;
        } catch (JsonSyntaxException e) {
            throw new RpcException(e);
        } catch (IOException e) {
            throw new RpcException(e);
        }
    }

    private void debug(String format, Object... args) {
        if (logger != null) {
            logger.debug(format, args);
        }
    }

}




Java Source Code List

com.praetoriandroid.cameraremote.BadHttpStatusException.java
com.praetoriandroid.cameraremote.DeviceDescription.java
com.praetoriandroid.cameraremote.HttpClient.java
com.praetoriandroid.cameraremote.InvalidDataFormatException.java
com.praetoriandroid.cameraremote.LiveViewDisconnectedException.java
com.praetoriandroid.cameraremote.LiveViewFetcher.java
com.praetoriandroid.cameraremote.Logger.java
com.praetoriandroid.cameraremote.ParseException.java
com.praetoriandroid.cameraremote.RpcClient.java
com.praetoriandroid.cameraremote.RpcException.java
com.praetoriandroid.cameraremote.ServiceNotSupportedException.java
com.praetoriandroid.cameraremote.SsdpClient.java
com.praetoriandroid.cameraremote.SsdpException.java
com.praetoriandroid.cameraremote.app.LiveView.java
com.praetoriandroid.cameraremote.app.MainActivity.java
com.praetoriandroid.cameraremote.app.Rpc.java
com.praetoriandroid.cameraremote.app.SelfTimerSelector.java
com.praetoriandroid.cameraremote.app.ThisApp.java
com.praetoriandroid.cameraremote.rpc.ActTakePictureRequest.java
com.praetoriandroid.cameraremote.rpc.ActTakePictureResponse.java
com.praetoriandroid.cameraremote.rpc.AwaitTakePictureRequest.java
com.praetoriandroid.cameraremote.rpc.BaseRequest.java
com.praetoriandroid.cameraremote.rpc.BaseResponse.java
com.praetoriandroid.cameraremote.rpc.CustomizableEntity.java
com.praetoriandroid.cameraremote.rpc.EventEntity.java
com.praetoriandroid.cameraremote.rpc.GetApplicationInfoRequest.java
com.praetoriandroid.cameraremote.rpc.GetApplicationInfoResponse.java
com.praetoriandroid.cameraremote.rpc.GetAvailableApiListRequest.java
com.praetoriandroid.cameraremote.rpc.GetAvailableApiListResponse.java
com.praetoriandroid.cameraremote.rpc.GetAvailableSelfTimerRequest.java
com.praetoriandroid.cameraremote.rpc.GetAvailableSelfTimerResponse.java
com.praetoriandroid.cameraremote.rpc.GetEventRequest.java
com.praetoriandroid.cameraremote.rpc.GetEventResponse.java
com.praetoriandroid.cameraremote.rpc.GetExposureModeRequest.java
com.praetoriandroid.cameraremote.rpc.GetMethodTypesRequest.java
com.praetoriandroid.cameraremote.rpc.GetMethodTypesResponse.java
com.praetoriandroid.cameraremote.rpc.GetSelfTimerRequest.java
com.praetoriandroid.cameraremote.rpc.GetSupportedSelfTimerRequest.java
com.praetoriandroid.cameraremote.rpc.GetSupportedSelfTimerResponse.java
com.praetoriandroid.cameraremote.rpc.GetVersionsRequest.java
com.praetoriandroid.cameraremote.rpc.GetVersionsResponse.java
com.praetoriandroid.cameraremote.rpc.IllegalResultSizeException.java
com.praetoriandroid.cameraremote.rpc.MethodTypesEntity.java
com.praetoriandroid.cameraremote.rpc.RpcMethod.java
com.praetoriandroid.cameraremote.rpc.SetSelfTimerRequest.java
com.praetoriandroid.cameraremote.rpc.SimpleResponse.java
com.praetoriandroid.cameraremote.rpc.StartLiveViewRequest.java
com.praetoriandroid.cameraremote.rpc.StartLiveViewResponse.java
com.praetoriandroid.cameraremote.rpc.StartMovieRecRequest.java
com.praetoriandroid.cameraremote.rpc.StartRecModeRequest.java
com.praetoriandroid.cameraremote.rpc.StopLiveviewRequest.java
com.praetoriandroid.cameraremote.rpc.StopMovieRecRequest.java
com.praetoriandroid.cameraremote.rpc.StopMovieRecResponse.java
com.praetoriandroid.cameraremote.rpc.StopRecModeRequest.java
com.praetoriandroid.cameraremote.rpc.ValidationException.java
com.praetoriandroid.cameraremote.rpc._DummyResponse.java
com.praetoriandroid.cameraremote.tool.Cache.java
com.praetoriandroid.cameraremote.tool.RemoteControl.java
com.praetoriandroid.widget.ItemViewCreator.java
com.praetoriandroid.widget.RadialFreeSpace.java
com.praetoriandroid.widget.RadialSelector.java