0

我能够将自定义对象发送到我的 .net 网络服务,并且我的网络方法工作得非常好。我在多部手机上测试了该代码,结果是成功的,但是当我在三星手机上尝试它时,它开始给我异常。

我发现问题是 MemoryOutOfException 发生的,因为我已经录制了大尺寸的视频并试图将其转换为 byte[] 但我被期望录制质量较低的视频,这些视频在 Micromax 和摩托罗拉工作但在三星(其余品牌我还不知道)。

takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
            MYVIDEOQUALITY);

所以这是我认为我应该拥有的一些解决方案:
1. 要么从所有移动设备录制较小尺寸的视频Camera Intent(不适用于三星)。
2. 或者对您的视频上传方法进行编码,使其分块上传视频。但我必须发送有关视频的更多信息,所以我创建了自定义对象来处理它,我也实现KVMSerializable并使用了它Marshal。现在我不知道如何分块发送大型自定义对象。

我已经看到了这个,但我没有发现我可以发送附加信息。它只发送视频文件。

如果我不够清楚,请让我知道我应该提供哪些更多信息。

这是我用来上传视频的代码:

private String SaveMedia(String Email, byte[] Media, String MediaType,
            String MediaExt) {
        SoapSerializationEnvelope envelope;
        SoapObject request = new SoapObject(
                HelpMeConstant.WSDL_TARGET_NAMESPACE, "SaveMedia");
    //  Log.i(TAG, "Email : " + Email + ", Media : " + Media                + "MediaType : " + MediaType + ",MediaExt : " + MediaExt);

        MediaAvidance mediainfo = new MediaAvidance();
        mediainfo.EmailId = Email;
        mediainfo.Media = Media;
        mediainfo.MediaExt = MediaExt;
        mediainfo.MediaType = MediaType;

        PropertyInfo pi = new PropertyInfo();
        pi.setName("avidanceinfo");
        pi.setValue(mediainfo);
        pi.setType(mediainfo.getClass());

        request.addProperty(pi);

        envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    //  Log.i("SaveMedia", "Serialising..");
        new MarshalBase64().register(envelope);
        envelope.dotNet = true;
        envelope.headerOut = HelperMethod.addAuthentication();
        envelope.implicitTypes = true;
        envelope.setOutputSoapObject(request);

        HttpTransportSE httpTransport = new HttpTransportSE(
                HelpMeConstant.SOAP_ADDRESS);

        Object response = null;

        try {
        //  Log.i("SaveMedia", "Calling service..");
            httpTransport.call(HelpMeConstant.SOAP_ACTION + "SaveMedia",
                    envelope);
    //      Log.i("SaveMedia", "getting response..");
            response = envelope.getResponse();
        } catch (Exception exception) {
    //      Log.e("SaveMedia", "I got an error :", exception);
            response = exception.toString();
        }

        return response.toString();
    }

预先感谢您的回复。

4

0 回答 0