All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.im.v2.messages.AVIMAudioMessage Maven / Gradle / Ivy

There is a newer version: 8.2.28
Show newest version
package cn.leancloud.im.v2.messages;

import cn.leancloud.AVException;
import cn.leancloud.AVFile;
import cn.leancloud.callback.SaveCallback;
import cn.leancloud.core.PaasClient;
import cn.leancloud.im.v2.annotation.AVIMMessageType;
import cn.leancloud.utils.StringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@AVIMMessageType(type = AVIMMessageType.AUDIO_MESSAGE_TYPE)
public class AVIMAudioMessage extends AVIMFileMessage {

  public AVIMAudioMessage() {
    super();
    setHasAdditionalMetaAttr(true);
  }

  public AVIMAudioMessage(String localPath) throws IOException {
    super(localPath);
    setHasAdditionalMetaAttr(true);
  }

  public AVIMAudioMessage(File localFile) throws IOException {
    super(localFile);
    setHasAdditionalMetaAttr(true);
  }

  public AVIMAudioMessage(AVFile file) {
    super(file);
    setHasAdditionalMetaAttr(true);
  }

  /**
   * 获取文件的metaData
   *
   * @return
   */
  @Override
  public Map getFileMetaData() {
    if (file == null) {
      file = new HashMap();
    }
    if (file.containsKey(FILE_META)) {
      return (Map) file.get(FILE_META);
    }
    if (localFile != null) {
      Map meta = AVIMFileMessageAccessor.mediaInfo(localFile);
      meta.put(FILE_SIZE, actualFile.getSize());
      file.put(FILE_META, meta);
      return meta;
    } else if (actualFile != null) {
      Map meta = actualFile.getMetaData();
      file.put(FILE_META, meta);
      return meta;
    }
    return null;
  }

  /**
   * 获取音频的时长
   *
   * @return
   */
  public double getDuration() {
    Map meta = getFileMetaData();
    if (meta != null && meta.containsKey(DURATION)) {
      return ((Number) meta.get(DURATION)).doubleValue();
    }
    return 0;
  }

  @Override
  protected String getQueryName() {
    return "?avinfo";
  }

  @Override
  protected void parseAdditionalMetaData(final Map meta, JSONObject formatInfo) {
    if (null == meta || null == formatInfo) {
      return;
    }
    String fileFormat = formatInfo.getString("format_name");
    Double durationInDouble = formatInfo.getDouble("duration");
    long size = formatInfo.getLong(FILE_SIZE);
    meta.put(FILE_SIZE, size);
    meta.put(DURATION, durationInDouble);
    meta.put(FORMAT, fileFormat);
  }

  @Override
  protected void getAdditionalMetaData(final Map meta, final SaveCallback callback) {
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy